瀏覽代碼

writeback: add name to backing_dev_info

This enables us to track who does what and print info. Its main use
is catching dirty inodes on the default_backing_dev_info, so we can
fix that up.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Jens Axboe 16 年之前
父節點
當前提交
d993831fa7

+ 1 - 0
block/blk-core.c

@@ -501,6 +501,7 @@ struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
 			(VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE;
 			(VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE;
 	q->backing_dev_info.state = 0;
 	q->backing_dev_info.state = 0;
 	q->backing_dev_info.capabilities = BDI_CAP_MAP_COPY;
 	q->backing_dev_info.capabilities = BDI_CAP_MAP_COPY;
+	q->backing_dev_info.name = "block";
 
 
 	err = bdi_init(&q->backing_dev_info);
 	err = bdi_init(&q->backing_dev_info);
 	if (err) {
 	if (err) {

+ 1 - 0
drivers/block/aoe/aoeblk.c

@@ -268,6 +268,7 @@ aoeblk_gdalloc(void *vp)
 	if (!d->blkq)
 	if (!d->blkq)
 		goto err_mempool;
 		goto err_mempool;
 	blk_queue_make_request(d->blkq, aoeblk_make_request);
 	blk_queue_make_request(d->blkq, aoeblk_make_request);
+	d->blkq->backing_dev_info.name = "aoe";
 	if (bdi_init(&d->blkq->backing_dev_info))
 	if (bdi_init(&d->blkq->backing_dev_info))
 		goto err_blkq;
 		goto err_blkq;
 	spin_lock_irqsave(&d->lock, flags);
 	spin_lock_irqsave(&d->lock, flags);

+ 1 - 0
drivers/char/mem.c

@@ -822,6 +822,7 @@ static const struct file_operations zero_fops = {
  * - permits private mappings, "copies" are taken of the source of zeros
  * - permits private mappings, "copies" are taken of the source of zeros
  */
  */
 static struct backing_dev_info zero_bdi = {
 static struct backing_dev_info zero_bdi = {
+	.name		= "char/mem",
 	.capabilities	= BDI_CAP_MAP_COPY,
 	.capabilities	= BDI_CAP_MAP_COPY,
 };
 };
 
 

+ 1 - 0
fs/btrfs/disk-io.c

@@ -1352,6 +1352,7 @@ static int setup_bdi(struct btrfs_fs_info *info, struct backing_dev_info *bdi)
 {
 {
 	int err;
 	int err;
 
 
+	bdi->name = "btrfs";
 	bdi->capabilities = BDI_CAP_MAP_COPY;
 	bdi->capabilities = BDI_CAP_MAP_COPY;
 	err = bdi_init(bdi);
 	err = bdi_init(bdi);
 	if (err)
 	if (err)

+ 1 - 0
fs/char_dev.c

@@ -31,6 +31,7 @@
  * - no readahead or I/O queue unplugging required
  * - no readahead or I/O queue unplugging required
  */
  */
 struct backing_dev_info directly_mappable_cdev_bdi = {
 struct backing_dev_info directly_mappable_cdev_bdi = {
+	.name = "char",
 	.capabilities	= (
 	.capabilities	= (
 #ifdef CONFIG_MMU
 #ifdef CONFIG_MMU
 		/* permit private copies of the data to be taken */
 		/* permit private copies of the data to be taken */

+ 1 - 0
fs/configfs/inode.c

@@ -51,6 +51,7 @@ static const struct address_space_operations configfs_aops = {
 };
 };
 
 
 static struct backing_dev_info configfs_backing_dev_info = {
 static struct backing_dev_info configfs_backing_dev_info = {
+	.name		= "configfs",
 	.ra_pages	= 0,	/* No readahead */
 	.ra_pages	= 0,	/* No readahead */
 	.capabilities	= BDI_CAP_NO_ACCT_AND_WRITEBACK,
 	.capabilities	= BDI_CAP_NO_ACCT_AND_WRITEBACK,
 };
 };

+ 1 - 0
fs/fuse/inode.c

@@ -801,6 +801,7 @@ static int fuse_bdi_init(struct fuse_conn *fc, struct super_block *sb)
 {
 {
 	int err;
 	int err;
 
 
+	fc->bdi.name = "fuse";
 	fc->bdi.ra_pages = (VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE;
 	fc->bdi.ra_pages = (VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE;
 	fc->bdi.unplug_io_fn = default_unplug_io_fn;
 	fc->bdi.unplug_io_fn = default_unplug_io_fn;
 	/* fuse does it's own writeback accounting */
 	/* fuse does it's own writeback accounting */

+ 1 - 0
fs/hugetlbfs/inode.c

@@ -44,6 +44,7 @@ static const struct inode_operations hugetlbfs_dir_inode_operations;
 static const struct inode_operations hugetlbfs_inode_operations;
 static const struct inode_operations hugetlbfs_inode_operations;
 
 
 static struct backing_dev_info hugetlbfs_backing_dev_info = {
 static struct backing_dev_info hugetlbfs_backing_dev_info = {
+	.name		= "hugetlbfs",
 	.ra_pages	= 0,	/* No readahead */
 	.ra_pages	= 0,	/* No readahead */
 	.capabilities	= BDI_CAP_NO_ACCT_AND_WRITEBACK,
 	.capabilities	= BDI_CAP_NO_ACCT_AND_WRITEBACK,
 };
 };

+ 1 - 0
fs/nfs/client.c

@@ -879,6 +879,7 @@ static void nfs_server_set_fsinfo(struct nfs_server *server, struct nfs_fsinfo *
 		server->rsize = NFS_MAX_FILE_IO_SIZE;
 		server->rsize = NFS_MAX_FILE_IO_SIZE;
 	server->rpages = (server->rsize + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
 	server->rpages = (server->rsize + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
 
 
+	server->backing_dev_info.name = "nfs";
 	server->backing_dev_info.ra_pages = server->rpages * NFS_MAX_READAHEAD;
 	server->backing_dev_info.ra_pages = server->rpages * NFS_MAX_READAHEAD;
 
 
 	if (server->wsize > max_rpc_payload)
 	if (server->wsize > max_rpc_payload)

+ 1 - 0
fs/ocfs2/dlm/dlmfs.c

@@ -325,6 +325,7 @@ clear_fields:
 }
 }
 
 
 static struct backing_dev_info dlmfs_backing_dev_info = {
 static struct backing_dev_info dlmfs_backing_dev_info = {
+	.name		= "ocfs2-dlmfs",
 	.ra_pages	= 0,	/* No readahead */
 	.ra_pages	= 0,	/* No readahead */
 	.capabilities	= BDI_CAP_NO_ACCT_AND_WRITEBACK,
 	.capabilities	= BDI_CAP_NO_ACCT_AND_WRITEBACK,
 };
 };

+ 1 - 0
fs/ramfs/inode.c

@@ -46,6 +46,7 @@ static const struct super_operations ramfs_ops;
 static const struct inode_operations ramfs_dir_inode_operations;
 static const struct inode_operations ramfs_dir_inode_operations;
 
 
 static struct backing_dev_info ramfs_backing_dev_info = {
 static struct backing_dev_info ramfs_backing_dev_info = {
+	.name		= "ramfs",
 	.ra_pages	= 0,	/* No readahead */
 	.ra_pages	= 0,	/* No readahead */
 	.capabilities	= BDI_CAP_NO_ACCT_AND_WRITEBACK |
 	.capabilities	= BDI_CAP_NO_ACCT_AND_WRITEBACK |
 			  BDI_CAP_MAP_DIRECT | BDI_CAP_MAP_COPY |
 			  BDI_CAP_MAP_DIRECT | BDI_CAP_MAP_COPY |

+ 1 - 0
fs/sysfs/inode.c

@@ -29,6 +29,7 @@ static const struct address_space_operations sysfs_aops = {
 };
 };
 
 
 static struct backing_dev_info sysfs_backing_dev_info = {
 static struct backing_dev_info sysfs_backing_dev_info = {
+	.name		= "sysfs",
 	.ra_pages	= 0,	/* No readahead */
 	.ra_pages	= 0,	/* No readahead */
 	.capabilities	= BDI_CAP_NO_ACCT_AND_WRITEBACK,
 	.capabilities	= BDI_CAP_NO_ACCT_AND_WRITEBACK,
 };
 };

+ 1 - 0
fs/ubifs/super.c

@@ -1965,6 +1965,7 @@ static int ubifs_fill_super(struct super_block *sb, void *data, int silent)
 	 *
 	 *
 	 * Read-ahead will be disabled because @c->bdi.ra_pages is 0.
 	 * Read-ahead will be disabled because @c->bdi.ra_pages is 0.
 	 */
 	 */
+	c->bdi.name = "ubifs",
 	c->bdi.capabilities = BDI_CAP_MAP_COPY;
 	c->bdi.capabilities = BDI_CAP_MAP_COPY;
 	c->bdi.unplug_io_fn = default_unplug_io_fn;
 	c->bdi.unplug_io_fn = default_unplug_io_fn;
 	err  = bdi_init(&c->bdi);
 	err  = bdi_init(&c->bdi);

+ 2 - 0
include/linux/backing-dev.h

@@ -66,6 +66,8 @@ struct backing_dev_info {
 	void (*unplug_io_fn)(struct backing_dev_info *, struct page *);
 	void (*unplug_io_fn)(struct backing_dev_info *, struct page *);
 	void *unplug_io_data;
 	void *unplug_io_data;
 
 
+	char *name;
+
 	struct percpu_counter bdi_stat[NR_BDI_STAT_ITEMS];
 	struct percpu_counter bdi_stat[NR_BDI_STAT_ITEMS];
 
 
 	struct prop_local_percpu completions;
 	struct prop_local_percpu completions;

+ 1 - 0
kernel/cgroup.c

@@ -600,6 +600,7 @@ static struct inode_operations cgroup_dir_inode_operations;
 static struct file_operations proc_cgroupstats_operations;
 static struct file_operations proc_cgroupstats_operations;
 
 
 static struct backing_dev_info cgroup_backing_dev_info = {
 static struct backing_dev_info cgroup_backing_dev_info = {
+	.name		= "cgroup",
 	.capabilities	= BDI_CAP_NO_ACCT_AND_WRITEBACK,
 	.capabilities	= BDI_CAP_NO_ACCT_AND_WRITEBACK,
 };
 };
 
 

+ 1 - 0
mm/backing-dev.c

@@ -17,6 +17,7 @@ void default_unplug_io_fn(struct backing_dev_info *bdi, struct page *page)
 EXPORT_SYMBOL(default_unplug_io_fn);
 EXPORT_SYMBOL(default_unplug_io_fn);
 
 
 struct backing_dev_info default_backing_dev_info = {
 struct backing_dev_info default_backing_dev_info = {
+	.name		= "default",
 	.ra_pages	= VM_MAX_READAHEAD * 1024 / PAGE_CACHE_SIZE,
 	.ra_pages	= VM_MAX_READAHEAD * 1024 / PAGE_CACHE_SIZE,
 	.state		= 0,
 	.state		= 0,
 	.capabilities	= BDI_CAP_MAP_COPY,
 	.capabilities	= BDI_CAP_MAP_COPY,

+ 1 - 0
mm/swap_state.c

@@ -34,6 +34,7 @@ static const struct address_space_operations swap_aops = {
 };
 };
 
 
 static struct backing_dev_info swap_backing_dev_info = {
 static struct backing_dev_info swap_backing_dev_info = {
+	.name		= "swap",
 	.capabilities	= BDI_CAP_NO_ACCT_AND_WRITEBACK | BDI_CAP_SWAP_BACKED,
 	.capabilities	= BDI_CAP_NO_ACCT_AND_WRITEBACK | BDI_CAP_SWAP_BACKED,
 	.unplug_io_fn	= swap_unplug_io_fn,
 	.unplug_io_fn	= swap_unplug_io_fn,
 };
 };