All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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: link
Be 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.