cluster-devel.redhat.com archive mirror
 help / color / mirror / Atom feed
* [Cluster-devel] [PATCH 0/24 RFC] fs: Convert all embedded bdis into separate ones
@ 2017-02-02 17:33 Jan Kara
  2017-02-02 17:34 ` [Cluster-devel] [PATCH 04/24] fs: Provide infrastructure for dynamic BDIs in filesystems Jan Kara
  2017-02-02 17:34 ` [Cluster-devel] [PATCH 18/24] gfs2: Convert to properly refcounting bdi Jan Kara
  0 siblings, 2 replies; 8+ messages in thread
From: Jan Kara @ 2017-02-02 17:33 UTC (permalink / raw)
  To: cluster-devel.redhat.com

Hello,

this patch series converts all embedded occurences of struct backing_dev_info
to use standalone dynamically allocated structures. This makes bdi handling
unified across all bdi users and generally removes some boilerplate code from
filesystems setting up their own bdi. It also allows us to remove some code
from generic bdi implementation.

The patches were only compile-tested for most filesystems (I've tested
mounting only for NFS & btrfs) so fs maintainers please have a look whether
the changes look sound to you.

This series is based on top of bdi fixes that were merged into linux-block
git tree.

								Honza



^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Cluster-devel] [PATCH 04/24] fs: Provide infrastructure for dynamic BDIs in filesystems
  2017-02-02 17:33 [Cluster-devel] [PATCH 0/24 RFC] fs: Convert all embedded bdis into separate ones Jan Kara
@ 2017-02-02 17:34 ` Jan Kara
  2017-02-02 19:28   ` Liu Bo
  2017-02-08  0:38   ` [Cluster-devel] [lustre-devel] " Dilger, Andreas
  2017-02-02 17:34 ` [Cluster-devel] [PATCH 18/24] gfs2: Convert to properly refcounting bdi Jan Kara
  1 sibling, 2 replies; 8+ messages in thread
From: Jan Kara @ 2017-02-02 17:34 UTC (permalink / raw)
  To: cluster-devel.redhat.com

Provide helper functions for setting up dynamically allocated
backing_dev_info structures for filesystems and cleaning them up on
superblock destruction.

CC: linux-mtd at lists.infradead.org
CC: linux-nfs at vger.kernel.org
CC: Petr Vandrovec <petr@vandrovec.name>
CC: linux-nilfs at vger.kernel.org
CC: cluster-devel at redhat.com
CC: osd-dev at open-osd.org
CC: codalist at coda.cs.cmu.edu
CC: linux-afs at lists.infradead.org
CC: ecryptfs at vger.kernel.org
CC: linux-cifs at vger.kernel.org
CC: ceph-devel at vger.kernel.org
CC: linux-btrfs at vger.kernel.org
CC: v9fs-developer at lists.sourceforge.net
CC: lustre-devel at lists.lustre.org
Signed-off-by: Jan Kara <jack@suse.cz>
---
 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
+ * 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



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [Cluster-devel] [PATCH 18/24] gfs2: Convert to properly refcounting bdi
  2017-02-02 17:33 [Cluster-devel] [PATCH 0/24 RFC] fs: Convert all embedded bdis into separate ones Jan Kara
  2017-02-02 17:34 ` [Cluster-devel] [PATCH 04/24] fs: Provide infrastructure for dynamic BDIs in filesystems Jan Kara
@ 2017-02-02 17:34 ` Jan Kara
  1 sibling, 0 replies; 8+ messages in thread
From: Jan Kara @ 2017-02-02 17:34 UTC (permalink / raw)
  To: cluster-devel.redhat.com

Similarly to set_bdev_super() GFS2 just used block device reference to
bdi. Convert it to properly getting bdi reference. The reference will
get automatically dropped on superblock destruction.

CC: Steven Whitehouse <swhiteho@redhat.com>
CC: Bob Peterson <rpeterso@redhat.com>
CC: cluster-devel at redhat.com
Signed-off-by: Jan Kara <jack@suse.cz>
---
 fs/gfs2/ops_fstype.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c
index c0e5b9a8bf5f..fe8248f8b54b 100644
--- a/fs/gfs2/ops_fstype.c
+++ b/fs/gfs2/ops_fstype.c
@@ -23,6 +23,7 @@
 #include <linux/quotaops.h>
 #include <linux/lockdep.h>
 #include <linux/module.h>
+#include <linux/backing-dev.h>
 
 #include "gfs2.h"
 #include "incore.h"
@@ -1221,12 +1222,8 @@ static int set_gfs2_super(struct super_block *s, void *data)
 {
 	s->s_bdev = data;
 	s->s_dev = s->s_bdev->bd_dev;
-
-	/*
-	 * We set the bdi here to the queue backing, file systems can
-	 * overwrite this in ->fill_super()
-	 */
-	s->s_bdi = bdev_get_queue(s->s_bdev)->backing_dev_info;
+	s->s_bdi = bdi_get(s->s_bdev->bd_bdi);
+	s->s_iflags |= SB_I_DYNBDI;
 	return 0;
 }
 
-- 
2.10.2



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [Cluster-devel] [PATCH 04/24] fs: Provide infrastructure for dynamic BDIs in filesystems
  2017-02-02 17:34 ` [Cluster-devel] [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-08  0:38   ` [Cluster-devel] [lustre-devel] " Dilger, Andreas
  1 sibling, 1 reply; 8+ messages in thread
From: Liu Bo @ 2017-02-02 19:28 UTC (permalink / raw)
  To: cluster-devel.redhat.com

Hi,

On Thu, Feb 02, 2017 at 06:34:02PM +0100, Jan Kara wrote:
> Provide helper functions for setting up dynamically allocated
> backing_dev_info structures for filesystems and cleaning them up on
> superblock destruction.

Just one concern, will this cause problems for multiple superblock cases
like nfs with nosharecache?

Thanks,

-liubo

> 
> CC: linux-mtd at lists.infradead.org
> CC: linux-nfs at vger.kernel.org
> CC: Petr Vandrovec <petr@vandrovec.name>
> CC: linux-nilfs at vger.kernel.org
> CC: cluster-devel at redhat.com
> CC: osd-dev at open-osd.org
> CC: codalist at coda.cs.cmu.edu
> CC: linux-afs at lists.infradead.org
> CC: ecryptfs at vger.kernel.org
> CC: linux-cifs at vger.kernel.org
> CC: ceph-devel at vger.kernel.org
> CC: linux-btrfs at vger.kernel.org
> CC: v9fs-developer at lists.sourceforge.net
> CC: lustre-devel at lists.lustre.org
> Signed-off-by: Jan Kara <jack@suse.cz>
> ---
>  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
> + * 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
> 



^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Cluster-devel] [PATCH 04/24] fs: Provide infrastructure for dynamic BDIs in filesystems
  2017-02-02 19:28   ` Liu Bo
@ 2017-02-03 13:50     ` Jan Kara
  2017-02-03 18:31       ` Liu Bo
  0 siblings, 1 reply; 8+ messages in thread
From: Jan Kara @ 2017-02-03 13:50 UTC (permalink / raw)
  To: cluster-devel.redhat.com

On Thu 02-02-17 11:28:27, Liu Bo wrote:
> Hi,
> 
> On Thu, Feb 02, 2017 at 06:34:02PM +0100, Jan Kara wrote:
> > Provide helper functions for setting up dynamically allocated
> > backing_dev_info structures for filesystems and cleaning them up on
> > superblock destruction.
> 
> Just one concern, will this cause problems for multiple superblock cases
> like nfs with nosharecache?

Can you ellaborate a bit? I've looked for a while what nfs with
nosharecache does but I didn't see how it would influence anything with
bdis...

								Honza
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR



^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Cluster-devel] [PATCH 04/24] fs: Provide infrastructure for dynamic BDIs in filesystems
  2017-02-03 13:50     ` Jan Kara
@ 2017-02-03 18:31       ` Liu Bo
  0 siblings, 0 replies; 8+ messages in thread
From: Liu Bo @ 2017-02-03 18:31 UTC (permalink / raw)
  To: cluster-devel.redhat.com

On Fri, Feb 03, 2017 at 02:50:42PM +0100, Jan Kara wrote:
> On Thu 02-02-17 11:28:27, Liu Bo wrote:
> > Hi,
> > 
> > On Thu, Feb 02, 2017 at 06:34:02PM +0100, Jan Kara wrote:
> > > Provide helper functions for setting up dynamically allocated
> > > backing_dev_info structures for filesystems and cleaning them up on
> > > superblock destruction.
> > 
> > Just one concern, will this cause problems for multiple superblock cases
> > like nfs with nosharecache?
> 
> Can you ellaborate a bit? I've looked for a while what nfs with
> nosharecache does but I didn't see how it would influence anything with
> bdis...

Oh, I missed that bdi_seq was static, then it should be fine.

(I was worried about that nfs with nosharecache would have multiple
superblocks and if each superblock has a bdi using the same bdi name,
nfs-xx.)

Thanks for the reply.

Thanks,

-liubo



^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Cluster-devel] [lustre-devel] [PATCH 04/24] fs: Provide infrastructure for dynamic BDIs in filesystems
  2017-02-02 17:34 ` [Cluster-devel] [PATCH 04/24] fs: Provide infrastructure for dynamic BDIs in filesystems Jan Kara
  2017-02-02 19:28   ` Liu Bo
@ 2017-02-08  0:38   ` Dilger, Andreas
  2017-02-09 12:12     ` Jan Kara
  1 sibling, 1 reply; 8+ messages in thread
From: Dilger, Andreas @ 2017-02-08  0:38 UTC (permalink / raw)
  To: cluster-devel.redhat.com

On Feb 2, 2017, at 10:34, Jan Kara <jack@suse.cz> 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 at lists.infradead.org
> CC: linux-nfs at vger.kernel.org
> CC: Petr Vandrovec <petr@vandrovec.name>
> CC: linux-nilfs at vger.kernel.org
> CC: cluster-devel at redhat.com
> CC: osd-dev at open-osd.org
> CC: codalist at coda.cs.cmu.edu
> CC: linux-afs at lists.infradead.org
> CC: ecryptfs at vger.kernel.org
> CC: linux-cifs at vger.kernel.org
> CC: ceph-devel at vger.kernel.org
> CC: linux-btrfs at vger.kernel.org
> CC: v9fs-developer at lists.sourceforge.net
> CC: lustre-devel at lists.lustre.org
> Signed-off-by: Jan Kara <jack@suse.cz>
> ---
> 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 at lists.lustre.org
> http://lists.lustre.org/listinfo.cgi/lustre-devel-lustre.org

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










^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Cluster-devel] [lustre-devel] [PATCH 04/24] fs: Provide infrastructure for dynamic BDIs in filesystems
  2017-02-08  0:38   ` [Cluster-devel] [lustre-devel] " Dilger, Andreas
@ 2017-02-09 12:12     ` Jan Kara
  0 siblings, 0 replies; 8+ messages in thread
From: Jan Kara @ 2017-02-09 12:12 UTC (permalink / raw)
  To: cluster-devel.redhat.com

> > @@ -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.

Thanks, fixed.

								Honza
-- 
Jan Kara <jack@suse.com>
SUSE Labs, CR



^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2017-02-09 12:12 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-02-02 17:33 [Cluster-devel] [PATCH 0/24 RFC] fs: Convert all embedded bdis into separate ones Jan Kara
2017-02-02 17:34 ` [Cluster-devel] [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
2017-02-08  0:38   ` [Cluster-devel] [lustre-devel] " Dilger, Andreas
2017-02-09 12:12     ` Jan Kara
2017-02-02 17:34 ` [Cluster-devel] [PATCH 18/24] gfs2: Convert to properly refcounting bdi Jan Kara

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).