OSDN Git Service

exofs: Convert to separately allocated bdi
authorJan Kara <jack@suse.cz>
Wed, 12 Apr 2017 10:24:39 +0000 (12:24 +0200)
committerJens Axboe <axboe@fb.com>
Thu, 20 Apr 2017 18:09:55 +0000 (12:09 -0600)
Allocate struct backing_dev_info separately instead of embedding it
inside the superblock. This unifies handling of bdi among users.

CC: Boaz Harrosh <ooo@electrozaur.com>
CC: Benny Halevy <bhalevy@primarydata.com>
Acked-by: Boaz Harrosh <ooo@electrozaur.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Jens Axboe <axboe@fb.com>
fs/exofs/exofs.h
fs/exofs/super.c

index 2e86086..5dc3924 100644 (file)
@@ -64,7 +64,6 @@ struct exofs_dev {
  * our extension to the in-memory superblock
  */
 struct exofs_sb_info {
-       struct backing_dev_info bdi;            /* register our bdi with VFS  */
        struct exofs_sb_stats s_ess;            /* Written often, pre-allocate*/
        int             s_timeout;              /* timeout for OSD operations */
        uint64_t        s_nextid;               /* highest object ID used     */
index 1076a42..819624c 100644 (file)
@@ -464,7 +464,6 @@ static void exofs_put_super(struct super_block *sb)
                            sbi->one_comp.obj.partition);
 
        exofs_sysfs_sb_del(sbi);
-       bdi_destroy(&sbi->bdi);
        exofs_free_sbi(sbi);
        sb->s_fs_info = NULL;
 }
@@ -809,8 +808,12 @@ static int exofs_fill_super(struct super_block *sb, void *data, int silent)
        __sbi_read_stats(sbi);
 
        /* set up operation vectors */
-       sbi->bdi.ra_pages = __ra_pages(&sbi->layout);
-       sb->s_bdi = &sbi->bdi;
+       ret = super_setup_bdi(sb);
+       if (ret) {
+               EXOFS_DBGMSG("Failed to super_setup_bdi\n");
+               goto free_sbi;
+       }
+       sb->s_bdi->ra_pages = __ra_pages(&sbi->layout);
        sb->s_fs_info = sbi;
        sb->s_op = &exofs_sops;
        sb->s_export_op = &exofs_export_ops;
@@ -836,14 +839,6 @@ static int exofs_fill_super(struct super_block *sb, void *data, int silent)
                goto free_sbi;
        }
 
-       ret = bdi_setup_and_register(&sbi->bdi, "exofs");
-       if (ret) {
-               EXOFS_DBGMSG("Failed to bdi_setup_and_register\n");
-               dput(sb->s_root);
-               sb->s_root = NULL;
-               goto free_sbi;
-       }
-
        exofs_sysfs_dbg_print();
        _exofs_print_device("Mounting", opts->dev_name,
                            ore_comp_dev(&sbi->oc, 0),