diff options
Diffstat (limited to 'fs')
| -rw-r--r-- | fs/bio.c | 1 | ||||
| -rw-r--r-- | fs/btrfs/disk-io.c | 26 | ||||
| -rw-r--r-- | fs/ubifs/super.c | 3 |
3 files changed, 24 insertions, 6 deletions
| @@ -25,7 +25,6 @@ | |||
| 25 | #include <linux/module.h> | 25 | #include <linux/module.h> |
| 26 | #include <linux/mempool.h> | 26 | #include <linux/mempool.h> |
| 27 | #include <linux/workqueue.h> | 27 | #include <linux/workqueue.h> |
| 28 | #include <linux/blktrace_api.h> | ||
| 29 | #include <scsi/sg.h> /* for struct sg_iovec */ | 28 | #include <scsi/sg.h> /* for struct sg_iovec */ |
| 30 | 29 | ||
| 31 | #include <trace/events/block.h> | 30 | #include <trace/events/block.h> |
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 0d50d49d990a..d28d29c95f7c 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c | |||
| @@ -42,6 +42,8 @@ | |||
| 42 | static struct extent_io_ops btree_extent_io_ops; | 42 | static struct extent_io_ops btree_extent_io_ops; |
| 43 | static void end_workqueue_fn(struct btrfs_work *work); | 43 | static void end_workqueue_fn(struct btrfs_work *work); |
| 44 | 44 | ||
| 45 | static atomic_t btrfs_bdi_num = ATOMIC_INIT(0); | ||
| 46 | |||
| 45 | /* | 47 | /* |
| 46 | * end_io_wq structs are used to do processing in task context when an IO is | 48 | * end_io_wq structs are used to do processing in task context when an IO is |
| 47 | * complete. This is used during reads to verify checksums, and it is used | 49 | * complete. This is used during reads to verify checksums, and it is used |
| @@ -1342,12 +1344,25 @@ static void btrfs_unplug_io_fn(struct backing_dev_info *bdi, struct page *page) | |||
| 1342 | free_extent_map(em); | 1344 | free_extent_map(em); |
| 1343 | } | 1345 | } |
| 1344 | 1346 | ||
| 1347 | /* | ||
| 1348 | * If this fails, caller must call bdi_destroy() to get rid of the | ||
| 1349 | * bdi again. | ||
| 1350 | */ | ||
| 1345 | static int setup_bdi(struct btrfs_fs_info *info, struct backing_dev_info *bdi) | 1351 | static int setup_bdi(struct btrfs_fs_info *info, struct backing_dev_info *bdi) |
| 1346 | { | 1352 | { |
| 1347 | bdi_init(bdi); | 1353 | int err; |
| 1354 | |||
| 1355 | bdi->capabilities = BDI_CAP_MAP_COPY; | ||
| 1356 | err = bdi_init(bdi); | ||
| 1357 | if (err) | ||
| 1358 | return err; | ||
| 1359 | |||
| 1360 | err = bdi_register(bdi, NULL, "btrfs-%d", | ||
| 1361 | atomic_inc_return(&btrfs_bdi_num)); | ||
| 1362 | if (err) | ||
| 1363 | return err; | ||
| 1364 | |||
| 1348 | bdi->ra_pages = default_backing_dev_info.ra_pages; | 1365 | bdi->ra_pages = default_backing_dev_info.ra_pages; |
| 1349 | bdi->state = 0; | ||
| 1350 | bdi->capabilities = default_backing_dev_info.capabilities; | ||
| 1351 | bdi->unplug_io_fn = btrfs_unplug_io_fn; | 1366 | bdi->unplug_io_fn = btrfs_unplug_io_fn; |
| 1352 | bdi->unplug_io_data = info; | 1367 | bdi->unplug_io_data = info; |
| 1353 | bdi->congested_fn = btrfs_congested_fn; | 1368 | bdi->congested_fn = btrfs_congested_fn; |
| @@ -1569,7 +1584,8 @@ struct btrfs_root *open_ctree(struct super_block *sb, | |||
| 1569 | fs_info->sb = sb; | 1584 | fs_info->sb = sb; |
| 1570 | fs_info->max_extent = (u64)-1; | 1585 | fs_info->max_extent = (u64)-1; |
| 1571 | fs_info->max_inline = 8192 * 1024; | 1586 | fs_info->max_inline = 8192 * 1024; |
| 1572 | setup_bdi(fs_info, &fs_info->bdi); | 1587 | if (setup_bdi(fs_info, &fs_info->bdi)) |
| 1588 | goto fail_bdi; | ||
| 1573 | fs_info->btree_inode = new_inode(sb); | 1589 | fs_info->btree_inode = new_inode(sb); |
| 1574 | fs_info->btree_inode->i_ino = 1; | 1590 | fs_info->btree_inode->i_ino = 1; |
| 1575 | fs_info->btree_inode->i_nlink = 1; | 1591 | fs_info->btree_inode->i_nlink = 1; |
| @@ -1946,8 +1962,8 @@ fail_iput: | |||
| 1946 | 1962 | ||
| 1947 | btrfs_close_devices(fs_info->fs_devices); | 1963 | btrfs_close_devices(fs_info->fs_devices); |
| 1948 | btrfs_mapping_tree_free(&fs_info->mapping_tree); | 1964 | btrfs_mapping_tree_free(&fs_info->mapping_tree); |
| 1965 | fail_bdi: | ||
| 1949 | bdi_destroy(&fs_info->bdi); | 1966 | bdi_destroy(&fs_info->bdi); |
| 1950 | |||
| 1951 | fail: | 1967 | fail: |
| 1952 | kfree(extent_root); | 1968 | kfree(extent_root); |
| 1953 | kfree(tree_root); | 1969 | kfree(tree_root); |
diff --git a/fs/ubifs/super.c b/fs/ubifs/super.c index 3589eab02a2f..3260b73abe29 100644 --- a/fs/ubifs/super.c +++ b/fs/ubifs/super.c | |||
| @@ -1937,6 +1937,9 @@ static int ubifs_fill_super(struct super_block *sb, void *data, int silent) | |||
| 1937 | err = bdi_init(&c->bdi); | 1937 | err = bdi_init(&c->bdi); |
| 1938 | if (err) | 1938 | if (err) |
| 1939 | goto out_close; | 1939 | goto out_close; |
| 1940 | err = bdi_register(&c->bdi, NULL, "ubifs"); | ||
| 1941 | if (err) | ||
| 1942 | goto out_bdi; | ||
| 1940 | 1943 | ||
| 1941 | err = ubifs_parse_options(c, data, 0); | 1944 | err = ubifs_parse_options(c, data, 0); |
| 1942 | if (err) | 1945 | if (err) |
