| From 371d217ee1ff8b418b8f73fb2a34990f951ec2d4 Mon Sep 17 00:00:00 2001 |
| From: Jan Kara <jack@suse.cz> |
| Date: Tue, 21 Sep 2010 11:49:01 +0200 |
| Subject: char: Mark /dev/zero and /dev/kmem as not capable of writeback |
| |
| From: Jan Kara <jack@suse.cz> |
| |
| commit 371d217ee1ff8b418b8f73fb2a34990f951ec2d4 upstream. |
| |
| These devices don't do any writeback but their device inodes still can get |
| dirty so mark bdi appropriately so that bdi code does the right thing and files |
| inodes to lists of bdi carrying the device inodes. |
| |
| Signed-off-by: Jan Kara <jack@suse.cz> |
| Signed-off-by: Jens Axboe <jaxboe@fusionio.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/char/mem.c | 3 ++- |
| fs/char_dev.c | 4 +++- |
| 2 files changed, 5 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/char/mem.c |
| +++ b/drivers/char/mem.c |
| @@ -822,10 +822,11 @@ static const struct file_operations zero |
| /* |
| * capabilities for /dev/zero |
| * - permits private mappings, "copies" are taken of the source of zeros |
| + * - no writeback happens |
| */ |
| static struct backing_dev_info zero_bdi = { |
| .name = "char/mem", |
| - .capabilities = BDI_CAP_MAP_COPY, |
| + .capabilities = BDI_CAP_MAP_COPY | BDI_CAP_NO_ACCT_AND_WRITEBACK, |
| }; |
| |
| static const struct file_operations full_fops = { |
| --- a/fs/char_dev.c |
| +++ b/fs/char_dev.c |
| @@ -39,7 +39,9 @@ struct backing_dev_info directly_mappabl |
| #endif |
| /* permit direct mmap, for read, write or exec */ |
| BDI_CAP_MAP_DIRECT | |
| - BDI_CAP_READ_MAP | BDI_CAP_WRITE_MAP | BDI_CAP_EXEC_MAP), |
| + BDI_CAP_READ_MAP | BDI_CAP_WRITE_MAP | BDI_CAP_EXEC_MAP | |
| + /* no writeback happens */ |
| + BDI_CAP_NO_ACCT_AND_WRITEBACK), |
| }; |
| |
| static struct kobj_map *cdev_map; |