From: Darrick J. Wong <djwong@kernel.org>
Document the ordering requirements between SB_ACTIVE and
s_pending_errors in the new fserror code.
Cc: jack@suse.cz
Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
---
fs/fserror.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/fs/fserror.c b/fs/fserror.c
index ec92f5a6db59ce..06ca86adab9b76 100644
--- a/fs/fserror.c
+++ b/fs/fserror.c
@@ -79,6 +79,11 @@ static inline struct fserror_event *fserror_alloc_event(struct super_block *sb,
* If pending_errors already reached zero or is no longer active,
* the superblock is being deactivated so there's no point in
* continuing.
+ *
+ * The order of the check of s_pending_errors and SB_ACTIVE are
+ * mandated by order of accesses in generic_shutdown_super and
+ * fserror_unmount. Barriers are implicitly provided by the refcount
+ * manipulations in this function and fserror_unmount.
*/
if (!refcount_inc_not_zero(&sb->s_pending_errors))
return NULL;