Linux CIFS filesystem development
 help / color / mirror / Atom feed
From: "Dilger, Andreas" <andreas.dilger-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
To: Jan Kara <jack-AlSwsSmVLrQ@public.gmane.org>
Cc: "linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"linux-nilfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-nilfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Christoph Hellwig <hch-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
	"ecryptfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<ecryptfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"codalist-/uMB558Y47wP4a1z8dhFYw@public.gmane.org"
	<codalist-/uMB558Y47wP4a1z8dhFYw@public.gmane.org>,
	"linux-block-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-block-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"cluster-devel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org"
	<cluster-devel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>,
	"linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
	<linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
	"osd-dev-yNzVSZO3znNg9hUCZPvPmw@public.gmane.org"
	<osd-dev-yNzVSZO3znNg9hUCZPvPmw@public.gmane.org>,
	"linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"v9fs-developer-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org"
	<v9fs-developer-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>,
	"ceph-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<ceph-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Petr Vandrovec <petr-vPk2MGR0e28uaRcfnNAh7A@public.gmane.org>,
	"linux-afs-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
	<linux-afs-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
	"linux-btrfs-fy+rA21nqHI@public.gmane.org
Subject: Re: [PATCH 04/24] fs: Provide infrastructure for dynamic	BDIs in filesystems
Date: Wed, 8 Feb 2017 00:38:17 +0000	[thread overview]
Message-ID: <C01BF300-AD67-4A3E-810F-AAB2EEB90B97@intel.com> (raw)
In-Reply-To: <20170202173422.3240-5-jack-AlSwsSmVLrQ@public.gmane.org>

On Feb 2, 2017, at 10:34, Jan Kara <jack-AlSwsSmVLrQ@public.gmane.org> wrote:
> 
> Provide helper functions for setting up dynamically allocated
> backing_dev_info structures for filesystems and cleaning them up on
> superblock destruction.
> 
> CC: linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
> CC: linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> CC: Petr Vandrovec <petr-vPk2MGR0e28uaRcfnNAh7A@public.gmane.org>
> CC: linux-nilfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> CC: cluster-devel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
> CC: osd-dev-yNzVSZO3znNg9hUCZPvPmw@public.gmane.org
> CC: codalist-/uMB558Y47wP4a1z8dhFYw@public.gmane.org
> CC: linux-afs-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
> CC: ecryptfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> CC: linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> CC: ceph-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> CC: linux-btrfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> CC: v9fs-developer-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> CC: lustre-devel-aLEFhgZF4x6X6Mz3xDxJMA@public.gmane.org
> Signed-off-by: Jan Kara <jack-AlSwsSmVLrQ@public.gmane.org>
> ---
> fs/super.c                       | 49 ++++++++++++++++++++++++++++++++++++++++
> include/linux/backing-dev-defs.h |  2 +-
> include/linux/fs.h               |  6 +++++
> 3 files changed, 56 insertions(+), 1 deletion(-)
> 
> diff --git a/fs/super.c b/fs/super.c
> index ea662b0e5e78..31dc4c6450ef 100644
> --- a/fs/super.c
> +++ b/fs/super.c
> @@ -446,6 +446,11 @@ void generic_shutdown_super(struct super_block *sb)
> 	hlist_del_init(&sb->s_instances);
> 	spin_unlock(&sb_lock);
> 	up_write(&sb->s_umount);
> +	if (sb->s_iflags & SB_I_DYNBDI) {
> +		bdi_put(sb->s_bdi);
> +		sb->s_bdi = &noop_backing_dev_info;
> +		sb->s_iflags &= ~SB_I_DYNBDI;
> +	}
> }
> 
> EXPORT_SYMBOL(generic_shutdown_super);
> @@ -1249,6 +1254,50 @@ mount_fs(struct file_system_type *type, int flags, const char *name, void *data)
> }
> 
> /*
> + * Setup private BDI for given superblock. I gets automatically cleaned up

(typo) s/I/It/

Looks fine otherwise.

> + * in generic_shutdown_super().
> + */
> +int super_setup_bdi_name(struct super_block *sb, char *fmt, ...)
> +{
> +	struct backing_dev_info *bdi;
> +	int err;
> +	va_list args;
> +
> +	bdi = bdi_alloc(GFP_KERNEL);
> +	if (!bdi)
> +		return -ENOMEM;
> +
> +	bdi->name = sb->s_type->name;
> +
> +	va_start(args, fmt);
> +	err = bdi_register_va(bdi, NULL, fmt, args);
> +	va_end(args);
> +	if (err) {
> +		bdi_put(bdi);
> +		return err;
> +	}
> +	WARN_ON(sb->s_bdi != &noop_backing_dev_info);
> +	sb->s_bdi = bdi;
> +	sb->s_iflags |= SB_I_DYNBDI;
> +
> +	return 0;
> +}
> +EXPORT_SYMBOL(super_setup_bdi_name);
> +
> +/*
> + * Setup private BDI for given superblock. I gets automatically cleaned up
> + * in generic_shutdown_super().
> + */
> +int super_setup_bdi(struct super_block *sb)
> +{
> +	static atomic_long_t bdi_seq = ATOMIC_LONG_INIT(0);
> +
> +	return super_setup_bdi_name(sb, "%.28s-%ld", sb->s_type->name,
> +				    atomic_long_inc_return(&bdi_seq));
> +}
> +EXPORT_SYMBOL(super_setup_bdi);
> +
> +/*
>  * This is an internal function, please use sb_end_{write,pagefault,intwrite}
>  * instead.
>  */
> diff --git a/include/linux/backing-dev-defs.h b/include/linux/backing-dev-defs.h
> index 2ecafc8a2d06..70080b4217f4 100644
> --- a/include/linux/backing-dev-defs.h
> +++ b/include/linux/backing-dev-defs.h
> @@ -143,7 +143,7 @@ struct backing_dev_info {
> 	congested_fn *congested_fn; /* Function pointer if device is md/dm */
> 	void *congested_data;	/* Pointer to aux data for congested func */
> 
> -	char *name;
> +	const char *name;
> 
> 	struct kref refcnt;	/* Reference counter for the structure */
> 	unsigned int registered:1;	/* Is bdi registered? */
> diff --git a/include/linux/fs.h b/include/linux/fs.h
> index c930cbc19342..8ed8b6d1bc54 100644
> --- a/include/linux/fs.h
> +++ b/include/linux/fs.h
> @@ -1267,6 +1267,9 @@ struct mm_struct;
> /* sb->s_iflags to limit user namespace mounts */
> #define SB_I_USERNS_VISIBLE		0x00000010 /* fstype already mounted */
> 
> +/* Temporary flag until all filesystems are converted to dynamic bdis */
> +#define SB_I_DYNBDI	0x00000100
> +
> /* Possible states of 'frozen' field */
> enum {
> 	SB_UNFROZEN = 0,		/* FS is unfrozen */
> @@ -2103,6 +2106,9 @@ extern int vfs_ustat(dev_t, struct kstatfs *);
> extern int freeze_super(struct super_block *super);
> extern int thaw_super(struct super_block *super);
> extern bool our_mnt(struct vfsmount *mnt);
> +extern __printf(2, 3)
> +int super_setup_bdi_name(struct super_block *sb, char *fmt, ...);
> +extern int super_setup_bdi(struct super_block *sb);
> 
> extern int current_umask(void);
> 
> -- 
> 2.10.2
> 
> _______________________________________________
> lustre-devel mailing list
> lustre-devel-aLEFhgZF4x6X6Mz3xDxJMA@public.gmane.org
> http://lists.lustre.org/listinfo.cgi/lustre-devel-lustre.org

Cheers, Andreas
--
Andreas Dilger
Lustre Principal Architect
Intel Corporation

  parent reply	other threads:[~2017-02-08  0:38 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-02 17:33 [PATCH 0/24 RFC] fs: Convert all embedded bdis into separate ones Jan Kara
2017-02-02 17:34 ` [PATCH 04/24] fs: Provide infrastructure for dynamic BDIs in filesystems Jan Kara
2017-02-02 19:28   ` Liu Bo
2017-02-03 13:50     ` Jan Kara
2017-02-03 18:31       ` Liu Bo
     [not found]   ` <20170202173422.3240-5-jack-AlSwsSmVLrQ@public.gmane.org>
2017-02-08  0:38     ` Dilger, Andreas [this message]
     [not found]       ` <C01BF300-AD67-4A3E-810F-AAB2EEB90B97-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2017-02-09 12:12         ` Jan Kara
2017-02-02 17:34 ` [PATCH 10/24] cifs: Convert to separately allocated bdi Jan Kara

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=C01BF300-AD67-4A3E-810F-AAB2EEB90B97@intel.com \
    --to=andreas.dilger-ral2jqcrhueavxtiumwx3w@public.gmane.org \
    --cc=ceph-devel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=cluster-devel-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=codalist-/uMB558Y47wP4a1z8dhFYw@public.gmane.org \
    --cc=ecryptfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=hch-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
    --cc=jack-AlSwsSmVLrQ@public.gmane.org \
    --cc=linux-afs-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-block-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-nilfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=osd-dev-yNzVSZO3znNg9hUCZPvPmw@public.gmane.org \
    --cc=petr-vPk2MGR0e28uaRcfnNAh7A@public.gmane.org \
    --cc=v9fs-developer-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox