From: Jan Kara <jack@suse.cz> To: Luis Chamberlain <mcgrof@kernel.org> Cc: hch@infradead.org, djwong@kernel.org, song@kernel.org, rafael@kernel.org, gregkh@linuxfoundation.org, viro@zeniv.linux.org.uk, jack@suse.cz, bvanassche@acm.org, ebiederm@xmission.com, mchehab@kernel.org, keescook@chromium.org, p.raghav@samsung.com, linux-fsdevel@vger.kernel.org, kernel@tuxforce.de, kexec@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [RFC v3 02/24] fs: add frozen sb state helpers Date: Mon, 16 Jan 2023 17:11:20 +0100 [thread overview] Message-ID: <20230116161120.fczsdy2vptgpb5z4@quack3> (raw) In-Reply-To: <20230114003409.1168311-3-mcgrof@kernel.org> On Fri 13-01-23 16:33:47, Luis Chamberlain wrote: > Provide helpers so that we can check a superblock frozen state. > This will make subsequent changes easier to read. This makes > no functional changes. > > Signed-off-by: Luis Chamberlain <mcgrof@kernel.org> Sure. Feel free to add: Reviewed-by: Jan Kara <jack@suse.cz> Honza > --- > fs/ext4/ext4_jbd2.c | 2 +- > fs/gfs2/sys.c | 2 +- > fs/quota/quota.c | 4 ++-- > fs/super.c | 4 ++-- > fs/xfs/xfs_trans.c | 3 +-- > include/linux/fs.h | 22 ++++++++++++++++++++++ > 6 files changed, 29 insertions(+), 8 deletions(-) > > diff --git a/fs/ext4/ext4_jbd2.c b/fs/ext4/ext4_jbd2.c > index 77f318ec8abb..ef441f15053b 100644 > --- a/fs/ext4/ext4_jbd2.c > +++ b/fs/ext4/ext4_jbd2.c > @@ -72,7 +72,7 @@ static int ext4_journal_check_start(struct super_block *sb) > > if (sb_rdonly(sb)) > return -EROFS; > - WARN_ON(sb->s_writers.frozen == SB_FREEZE_COMPLETE); > + WARN_ON(sb_is_frozen(sb)); > journal = EXT4_SB(sb)->s_journal; > /* > * Special case here: if the journal has aborted behind our > diff --git a/fs/gfs2/sys.c b/fs/gfs2/sys.c > index d0b80552a678..b98be03d0d1e 100644 > --- a/fs/gfs2/sys.c > +++ b/fs/gfs2/sys.c > @@ -146,7 +146,7 @@ static ssize_t uuid_show(struct gfs2_sbd *sdp, char *buf) > static ssize_t freeze_show(struct gfs2_sbd *sdp, char *buf) > { > struct super_block *sb = sdp->sd_vfs; > - int frozen = (sb->s_writers.frozen == SB_UNFROZEN) ? 0 : 1; > + int frozen = sb_is_unfrozen(sb) ? 0 : 1; > > return snprintf(buf, PAGE_SIZE, "%d\n", frozen); > } > diff --git a/fs/quota/quota.c b/fs/quota/quota.c > index 052f143e2e0e..d8147c21bf03 100644 > --- a/fs/quota/quota.c > +++ b/fs/quota/quota.c > @@ -890,13 +890,13 @@ static struct super_block *quotactl_block(const char __user *special, int cmd) > sb = user_get_super(dev, excl); > if (!sb) > return ERR_PTR(-ENODEV); > - if (thawed && sb->s_writers.frozen != SB_UNFROZEN) { > + if (thawed && sb_is_unfrozen(sb)) { > if (excl) > up_write(&sb->s_umount); > else > up_read(&sb->s_umount); > wait_event(sb->s_writers.wait_unfrozen, > - sb->s_writers.frozen == SB_UNFROZEN); > + sb_is_unfrozen(sb)); > put_super(sb); > goto retry; > } > diff --git a/fs/super.c b/fs/super.c > index a31a41b313f3..fdcf5a87af0a 100644 > --- a/fs/super.c > +++ b/fs/super.c > @@ -883,7 +883,7 @@ int reconfigure_super(struct fs_context *fc) > > if (fc->sb_flags_mask & ~MS_RMT_MASK) > return -EINVAL; > - if (sb->s_writers.frozen != SB_UNFROZEN) > + if (!(sb_is_unfrozen(sb))) > return -EBUSY; > > retval = security_sb_remount(sb, fc->security); > @@ -907,7 +907,7 @@ int reconfigure_super(struct fs_context *fc) > down_write(&sb->s_umount); > if (!sb->s_root) > return 0; > - if (sb->s_writers.frozen != SB_UNFROZEN) > + if (!sb_is_unfrozen(sb)) > return -EBUSY; > remount_ro = !sb_rdonly(sb); > } > diff --git a/fs/xfs/xfs_trans.c b/fs/xfs/xfs_trans.c > index 7bd16fbff534..ceb4890a4c96 100644 > --- a/fs/xfs/xfs_trans.c > +++ b/fs/xfs/xfs_trans.c > @@ -267,8 +267,7 @@ xfs_trans_alloc( > * Zero-reservation ("empty") transactions can't modify anything, so > * they're allowed to run while we're frozen. > */ > - WARN_ON(resp->tr_logres > 0 && > - mp->m_super->s_writers.frozen == SB_FREEZE_COMPLETE); > + WARN_ON(resp->tr_logres > 0 && sb_is_frozen(mp->m_super)); > ASSERT(!(flags & XFS_TRANS_RES_FDBLKS) || > xfs_has_lazysbcount(mp)); > > diff --git a/include/linux/fs.h b/include/linux/fs.h > index 5042f5ab74a4..c0cab61f9f9a 100644 > --- a/include/linux/fs.h > +++ b/include/linux/fs.h > @@ -1604,6 +1604,28 @@ static inline bool sb_start_intwrite_trylock(struct super_block *sb) > return __sb_start_write_trylock(sb, SB_FREEZE_FS); > } > > +/** > + * sb_is_frozen - is superblock frozen > + * @sb: the super to check > + * > + * Returns true if the super is frozen. > + */ > +static inline bool sb_is_frozen(struct super_block *sb) > +{ > + return sb->s_writers.frozen == SB_FREEZE_COMPLETE; > +} > + > +/** > + * sb_is_unfrozen - is superblock unfrozen > + * @sb: the super to check > + * > + * Returns true if the super is unfrozen. > + */ > +static inline bool sb_is_unfrozen(struct super_block *sb) > +{ > + return sb->s_writers.frozen == SB_UNFROZEN; > +} > + > bool inode_owner_or_capable(struct user_namespace *mnt_userns, > const struct inode *inode); > > -- > 2.35.1 > -- Jan Kara <jack@suse.com> SUSE Labs, CR
WARNING: multiple messages have this Message-ID (diff)
From: Jan Kara <jack@suse.cz> To: Luis Chamberlain <mcgrof@kernel.org> Cc: hch@infradead.org, djwong@kernel.org, song@kernel.org, rafael@kernel.org, gregkh@linuxfoundation.org, viro@zeniv.linux.org.uk, jack@suse.cz, bvanassche@acm.org, ebiederm@xmission.com, mchehab@kernel.org, keescook@chromium.org, p.raghav@samsung.com, linux-fsdevel@vger.kernel.org, kernel@tuxforce.de, kexec@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [RFC v3 02/24] fs: add frozen sb state helpers Date: Mon, 16 Jan 2023 17:11:20 +0100 [thread overview] Message-ID: <20230116161120.fczsdy2vptgpb5z4@quack3> (raw) In-Reply-To: <20230114003409.1168311-3-mcgrof@kernel.org> On Fri 13-01-23 16:33:47, Luis Chamberlain wrote: > Provide helpers so that we can check a superblock frozen state. > This will make subsequent changes easier to read. This makes > no functional changes. > > Signed-off-by: Luis Chamberlain <mcgrof@kernel.org> Sure. Feel free to add: Reviewed-by: Jan Kara <jack@suse.cz> Honza > --- > fs/ext4/ext4_jbd2.c | 2 +- > fs/gfs2/sys.c | 2 +- > fs/quota/quota.c | 4 ++-- > fs/super.c | 4 ++-- > fs/xfs/xfs_trans.c | 3 +-- > include/linux/fs.h | 22 ++++++++++++++++++++++ > 6 files changed, 29 insertions(+), 8 deletions(-) > > diff --git a/fs/ext4/ext4_jbd2.c b/fs/ext4/ext4_jbd2.c > index 77f318ec8abb..ef441f15053b 100644 > --- a/fs/ext4/ext4_jbd2.c > +++ b/fs/ext4/ext4_jbd2.c > @@ -72,7 +72,7 @@ static int ext4_journal_check_start(struct super_block *sb) > > if (sb_rdonly(sb)) > return -EROFS; > - WARN_ON(sb->s_writers.frozen == SB_FREEZE_COMPLETE); > + WARN_ON(sb_is_frozen(sb)); > journal = EXT4_SB(sb)->s_journal; > /* > * Special case here: if the journal has aborted behind our > diff --git a/fs/gfs2/sys.c b/fs/gfs2/sys.c > index d0b80552a678..b98be03d0d1e 100644 > --- a/fs/gfs2/sys.c > +++ b/fs/gfs2/sys.c > @@ -146,7 +146,7 @@ static ssize_t uuid_show(struct gfs2_sbd *sdp, char *buf) > static ssize_t freeze_show(struct gfs2_sbd *sdp, char *buf) > { > struct super_block *sb = sdp->sd_vfs; > - int frozen = (sb->s_writers.frozen == SB_UNFROZEN) ? 0 : 1; > + int frozen = sb_is_unfrozen(sb) ? 0 : 1; > > return snprintf(buf, PAGE_SIZE, "%d\n", frozen); > } > diff --git a/fs/quota/quota.c b/fs/quota/quota.c > index 052f143e2e0e..d8147c21bf03 100644 > --- a/fs/quota/quota.c > +++ b/fs/quota/quota.c > @@ -890,13 +890,13 @@ static struct super_block *quotactl_block(const char __user *special, int cmd) > sb = user_get_super(dev, excl); > if (!sb) > return ERR_PTR(-ENODEV); > - if (thawed && sb->s_writers.frozen != SB_UNFROZEN) { > + if (thawed && sb_is_unfrozen(sb)) { > if (excl) > up_write(&sb->s_umount); > else > up_read(&sb->s_umount); > wait_event(sb->s_writers.wait_unfrozen, > - sb->s_writers.frozen == SB_UNFROZEN); > + sb_is_unfrozen(sb)); > put_super(sb); > goto retry; > } > diff --git a/fs/super.c b/fs/super.c > index a31a41b313f3..fdcf5a87af0a 100644 > --- a/fs/super.c > +++ b/fs/super.c > @@ -883,7 +883,7 @@ int reconfigure_super(struct fs_context *fc) > > if (fc->sb_flags_mask & ~MS_RMT_MASK) > return -EINVAL; > - if (sb->s_writers.frozen != SB_UNFROZEN) > + if (!(sb_is_unfrozen(sb))) > return -EBUSY; > > retval = security_sb_remount(sb, fc->security); > @@ -907,7 +907,7 @@ int reconfigure_super(struct fs_context *fc) > down_write(&sb->s_umount); > if (!sb->s_root) > return 0; > - if (sb->s_writers.frozen != SB_UNFROZEN) > + if (!sb_is_unfrozen(sb)) > return -EBUSY; > remount_ro = !sb_rdonly(sb); > } > diff --git a/fs/xfs/xfs_trans.c b/fs/xfs/xfs_trans.c > index 7bd16fbff534..ceb4890a4c96 100644 > --- a/fs/xfs/xfs_trans.c > +++ b/fs/xfs/xfs_trans.c > @@ -267,8 +267,7 @@ xfs_trans_alloc( > * Zero-reservation ("empty") transactions can't modify anything, so > * they're allowed to run while we're frozen. > */ > - WARN_ON(resp->tr_logres > 0 && > - mp->m_super->s_writers.frozen == SB_FREEZE_COMPLETE); > + WARN_ON(resp->tr_logres > 0 && sb_is_frozen(mp->m_super)); > ASSERT(!(flags & XFS_TRANS_RES_FDBLKS) || > xfs_has_lazysbcount(mp)); > > diff --git a/include/linux/fs.h b/include/linux/fs.h > index 5042f5ab74a4..c0cab61f9f9a 100644 > --- a/include/linux/fs.h > +++ b/include/linux/fs.h > @@ -1604,6 +1604,28 @@ static inline bool sb_start_intwrite_trylock(struct super_block *sb) > return __sb_start_write_trylock(sb, SB_FREEZE_FS); > } > > +/** > + * sb_is_frozen - is superblock frozen > + * @sb: the super to check > + * > + * Returns true if the super is frozen. > + */ > +static inline bool sb_is_frozen(struct super_block *sb) > +{ > + return sb->s_writers.frozen == SB_FREEZE_COMPLETE; > +} > + > +/** > + * sb_is_unfrozen - is superblock unfrozen > + * @sb: the super to check > + * > + * Returns true if the super is unfrozen. > + */ > +static inline bool sb_is_unfrozen(struct super_block *sb) > +{ > + return sb->s_writers.frozen == SB_UNFROZEN; > +} > + > bool inode_owner_or_capable(struct user_namespace *mnt_userns, > const struct inode *inode); > > -- > 2.35.1 > -- Jan Kara <jack@suse.com> SUSE Labs, CR _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec
next prev parent reply other threads:[~2023-01-16 16:21 UTC|newest] Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-01-14 0:33 [RFC v3 00/24] vfs: provide automatic kernel freeze / resume Luis Chamberlain 2023-01-14 0:33 ` Luis Chamberlain 2023-01-14 0:33 ` [RFC v3 01/24] fs: unify locking semantics for fs freeze / thaw Luis Chamberlain 2023-01-14 0:33 ` Luis Chamberlain 2023-01-16 15:14 ` Jan Kara 2023-01-16 15:14 ` Jan Kara 2023-05-07 3:47 ` Luis Chamberlain 2023-05-07 3:47 ` Luis Chamberlain 2023-01-14 0:33 ` [RFC v3 02/24] fs: add frozen sb state helpers Luis Chamberlain 2023-01-14 0:33 ` Luis Chamberlain 2023-01-16 16:11 ` Jan Kara [this message] 2023-01-16 16:11 ` Jan Kara 2023-01-14 0:33 ` [RFC v3 03/24] fs: distinguish between user initiated freeze and kernel initiated freeze Luis Chamberlain 2023-01-14 0:33 ` Luis Chamberlain 2023-01-16 16:10 ` Jan Kara 2023-01-16 16:10 ` Jan Kara 2023-01-18 2:25 ` Darrick J. Wong 2023-01-18 2:25 ` Darrick J. Wong 2023-01-18 9:28 ` Jan Kara 2023-01-18 9:28 ` Jan Kara 2023-05-07 4:08 ` Luis Chamberlain 2023-05-07 4:08 ` Luis Chamberlain 2023-05-23 0:33 ` Darrick J. Wong 2023-05-23 0:33 ` Darrick J. Wong 2023-01-14 0:33 ` [RFC v3 04/24] fs: add iterate_supers_excl() and iterate_supers_reverse_excl() Luis Chamberlain 2023-01-14 0:33 ` Luis Chamberlain 2023-01-14 0:33 ` [RFC v3 05/24] fs: add automatic kernel fs freeze / thaw and remove kthread freezing Luis Chamberlain 2023-01-14 0:33 ` Luis Chamberlain 2023-01-14 0:57 ` Luis Chamberlain 2023-01-14 0:57 ` Luis Chamberlain 2023-01-16 16:09 ` Jan Kara 2023-01-16 16:09 ` Jan Kara 2023-02-24 3:08 ` Darrick J. Wong 2023-02-24 3:08 ` Darrick J. Wong 2023-05-07 4:07 ` Luis Chamberlain 2023-05-07 4:07 ` Luis Chamberlain 2023-01-14 0:33 ` [RFC v3 06/24] xfs: replace kthread freezing with auto fs freezing Luis Chamberlain 2023-01-14 0:33 ` Luis Chamberlain 2023-01-14 0:33 ` [RFC v3 07/24] btrfs: " Luis Chamberlain 2023-01-14 0:33 ` Luis Chamberlain 2023-01-14 0:33 ` [RFC v3 08/24] ext4: " Luis Chamberlain 2023-01-14 0:33 ` Luis Chamberlain 2023-01-14 0:33 ` [RFC v3 09/24] f2fs: " Luis Chamberlain 2023-01-14 0:33 ` Luis Chamberlain 2023-01-14 0:33 ` [RFC v3 10/24] cifs: " Luis Chamberlain 2023-01-14 0:33 ` Luis Chamberlain 2023-01-14 0:33 ` [RFC v3 11/24] gfs2: " Luis Chamberlain 2023-01-14 0:33 ` Luis Chamberlain 2023-01-14 0:33 ` [RFC v3 12/24] jfs: " Luis Chamberlain 2023-01-14 0:33 ` Luis Chamberlain 2023-01-14 0:33 ` [RFC v3 13/24] nilfs2: " Luis Chamberlain 2023-01-14 0:33 ` Luis Chamberlain 2023-01-14 0:33 ` [RFC v3 14/24] nfs: " Luis Chamberlain 2023-01-14 0:33 ` Luis Chamberlain 2023-01-14 0:34 ` [RFC v3 15/24] nfsd: " Luis Chamberlain 2023-01-14 0:34 ` Luis Chamberlain 2023-01-14 0:34 ` [RFC v3 16/24] ubifs: " Luis Chamberlain 2023-01-14 0:34 ` Luis Chamberlain 2023-01-14 0:34 ` [RFC v3 17/24] ksmbd: " Luis Chamberlain 2023-01-14 0:34 ` Luis Chamberlain 2023-01-14 0:34 ` [RFC v3 18/24] jffs2: " Luis Chamberlain 2023-01-14 0:34 ` Luis Chamberlain 2023-01-14 0:34 ` [RFC v3 19/24] jbd2: " Luis Chamberlain 2023-01-14 0:34 ` Luis Chamberlain 2023-01-14 0:34 ` [RFC v3 20/24] coredump: drop freezer usage Luis Chamberlain 2023-01-14 0:34 ` Luis Chamberlain 2023-01-14 0:34 ` [RFC v3 21/24] ecryptfs: replace kthread freezing with auto fs freezing Luis Chamberlain 2023-01-14 0:34 ` Luis Chamberlain 2023-01-14 0:34 ` [RFC v3 22/24] fscache: " Luis Chamberlain 2023-01-14 0:34 ` Luis Chamberlain 2023-01-14 0:34 ` [RFC v3 23/24] lockd: " Luis Chamberlain 2023-01-14 0:34 ` Luis Chamberlain 2023-01-14 0:34 ` [RFC v3 24/24] fs: remove FS_AUTOFREEZE Luis Chamberlain 2023-01-14 0:34 ` Luis Chamberlain
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20230116161120.fczsdy2vptgpb5z4@quack3 \ --to=jack@suse.cz \ --cc=bvanassche@acm.org \ --cc=djwong@kernel.org \ --cc=ebiederm@xmission.com \ --cc=gregkh@linuxfoundation.org \ --cc=hch@infradead.org \ --cc=keescook@chromium.org \ --cc=kernel@tuxforce.de \ --cc=kexec@lists.infradead.org \ --cc=linux-fsdevel@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mcgrof@kernel.org \ --cc=mchehab@kernel.org \ --cc=p.raghav@samsung.com \ --cc=rafael@kernel.org \ --cc=song@kernel.org \ --cc=viro@zeniv.linux.org.uk \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.