[PATCH 01/10] revert per-backing_dev-dirty-and-writeback-page-accounting
For ease of application.. --- block/ll_rw_blk.c | 29 - fs/buffer.c |1 - include/linux/backing-dev.h |2 -- mm/page-writeback.c | 13 ++--- mm/truncate.c |1 - 5 files changed, 2 insertions(+), 44 deletions(-) Index: linux-2.6/block/ll_rw_blk.c === --- linux-2.6.orig/block/ll_rw_blk.c2007-04-10 16:30:55.0 +0200 +++ linux-2.6/block/ll_rw_blk.c 2007-04-10 16:35:24.0 +0200 @@ -201,8 +201,6 @@ EXPORT_SYMBOL(blk_queue_softirq_done); **/ void blk_queue_make_request(request_queue_t * q, make_request_fn * mfn) { - struct backing_dev_info *bdi = >backing_dev_info; - /* * set defaults */ @@ -210,8 +208,6 @@ void blk_queue_make_request(request_queu blk_queue_max_phys_segments(q, MAX_PHYS_SEGMENTS); blk_queue_max_hw_segments(q, MAX_HW_SEGMENTS); q->make_request_fn = mfn; - atomic_long_set(>nr_dirty, 0); - atomic_long_set(>nr_writeback, 0); blk_queue_max_sectors(q, SAFE_MAX_SECTORS); blk_queue_hardsect_size(q, 512); blk_queue_dma_alignment(q, 511); @@ -3978,19 +3974,6 @@ static ssize_t queue_max_hw_sectors_show return queue_var_show(max_hw_sectors_kb, (page)); } -static ssize_t queue_nr_dirty_show(struct request_queue *q, char *page) -{ - return sprintf(page, "%lu\n", - atomic_long_read(>backing_dev_info.nr_dirty)); - -} - -static ssize_t queue_nr_writeback_show(struct request_queue *q, char *page) -{ - return sprintf(page, "%lu\n", - atomic_long_read(>backing_dev_info.nr_writeback)); - -} static struct queue_sysfs_entry queue_requests_entry = { .attr = {.name = "nr_requests", .mode = S_IRUGO | S_IWUSR }, @@ -4021,16 +4004,6 @@ static struct queue_sysfs_entry queue_ma .show = queue_max_hw_sectors_show, }; -static struct queue_sysfs_entry queue_nr_dirty_entry = { - .attr = {.name = "nr_dirty", .mode = S_IRUGO }, - .show = queue_nr_dirty_show, -}; - -static struct queue_sysfs_entry queue_nr_writeback_entry = { - .attr = {.name = "nr_writeback", .mode = S_IRUGO }, - .show = queue_nr_writeback_show, -}; - static struct queue_sysfs_entry queue_iosched_entry = { .attr = {.name = "scheduler", .mode = S_IRUGO | S_IWUSR }, .show = elv_iosched_show, @@ -4043,8 +4016,6 @@ static struct attribute *default_attrs[] _initial_ra_entry.attr, _max_hw_sectors_entry.attr, _max_sectors_entry.attr, - _nr_dirty_entry.attr, - _nr_writeback_entry.attr, _iosched_entry.attr, NULL, }; Index: linux-2.6/fs/buffer.c === --- linux-2.6.orig/fs/buffer.c 2007-04-10 16:30:15.0 +0200 +++ linux-2.6/fs/buffer.c 2007-04-10 16:35:03.0 +0200 @@ -740,7 +740,6 @@ int __set_page_dirty_buffers(struct page if (page->mapping) {/* Race with truncate? */ if (mapping_cap_account_dirty(mapping)) { __inc_zone_page_state(page, NR_FILE_DIRTY); - atomic_long_inc(>backing_dev_info->nr_dirty); task_io_account_write(PAGE_CACHE_SIZE); } radix_tree_tag_set(>page_tree, Index: linux-2.6/include/linux/backing-dev.h === --- linux-2.6.orig/include/linux/backing-dev.h 2007-04-10 16:30:55.0 +0200 +++ linux-2.6/include/linux/backing-dev.h 2007-04-10 16:35:03.0 +0200 @@ -30,8 +30,6 @@ struct backing_dev_info { unsigned long ra_thrash_bytes; /* estimated thrashing threshold */ unsigned long state;/* Always use atomic bitops on this */ unsigned int capabilities; /* Device capabilities */ - atomic_long_t nr_dirty; /* Pages dirty against this BDI */ - atomic_long_t nr_writeback;/* Pages under writeback against this BDI */ congested_fn *congested_fn; /* Function pointer if device is md/dm */ void *congested_data; /* Pointer to aux data for congested func */ void (*unplug_io_fn)(struct backing_dev_info *, struct page *); Index: linux-2.6/mm/page-writeback.c === --- linux-2.6.orig/mm/page-writeback.c 2007-04-10 16:30:15.0 +0200 +++ linux-2.6/mm/page-writeback.c 2007-04-10 16:35:03.0 +0200 @@ -828,8 +828,6 @@ int __set_page_dirty_nobuffers(struct pa BUG_ON(mapping2 != mapping); if (mapping_cap_account_dirty(mapping)) { __inc_zone_page_state(page, NR_FILE_DIRTY); - atomic_long_inc(>backing_dev_info-> - nr_dirty);
[PATCH 01/10] revert per-backing_dev-dirty-and-writeback-page-accounting
For ease of application.. --- block/ll_rw_blk.c | 29 - fs/buffer.c |1 - include/linux/backing-dev.h |2 -- mm/page-writeback.c | 13 ++--- mm/truncate.c |1 - 5 files changed, 2 insertions(+), 44 deletions(-) Index: linux-2.6/block/ll_rw_blk.c === --- linux-2.6.orig/block/ll_rw_blk.c2007-04-10 16:30:55.0 +0200 +++ linux-2.6/block/ll_rw_blk.c 2007-04-10 16:35:24.0 +0200 @@ -201,8 +201,6 @@ EXPORT_SYMBOL(blk_queue_softirq_done); **/ void blk_queue_make_request(request_queue_t * q, make_request_fn * mfn) { - struct backing_dev_info *bdi = q-backing_dev_info; - /* * set defaults */ @@ -210,8 +208,6 @@ void blk_queue_make_request(request_queu blk_queue_max_phys_segments(q, MAX_PHYS_SEGMENTS); blk_queue_max_hw_segments(q, MAX_HW_SEGMENTS); q-make_request_fn = mfn; - atomic_long_set(bdi-nr_dirty, 0); - atomic_long_set(bdi-nr_writeback, 0); blk_queue_max_sectors(q, SAFE_MAX_SECTORS); blk_queue_hardsect_size(q, 512); blk_queue_dma_alignment(q, 511); @@ -3978,19 +3974,6 @@ static ssize_t queue_max_hw_sectors_show return queue_var_show(max_hw_sectors_kb, (page)); } -static ssize_t queue_nr_dirty_show(struct request_queue *q, char *page) -{ - return sprintf(page, %lu\n, - atomic_long_read(q-backing_dev_info.nr_dirty)); - -} - -static ssize_t queue_nr_writeback_show(struct request_queue *q, char *page) -{ - return sprintf(page, %lu\n, - atomic_long_read(q-backing_dev_info.nr_writeback)); - -} static struct queue_sysfs_entry queue_requests_entry = { .attr = {.name = nr_requests, .mode = S_IRUGO | S_IWUSR }, @@ -4021,16 +4004,6 @@ static struct queue_sysfs_entry queue_ma .show = queue_max_hw_sectors_show, }; -static struct queue_sysfs_entry queue_nr_dirty_entry = { - .attr = {.name = nr_dirty, .mode = S_IRUGO }, - .show = queue_nr_dirty_show, -}; - -static struct queue_sysfs_entry queue_nr_writeback_entry = { - .attr = {.name = nr_writeback, .mode = S_IRUGO }, - .show = queue_nr_writeback_show, -}; - static struct queue_sysfs_entry queue_iosched_entry = { .attr = {.name = scheduler, .mode = S_IRUGO | S_IWUSR }, .show = elv_iosched_show, @@ -4043,8 +4016,6 @@ static struct attribute *default_attrs[] queue_initial_ra_entry.attr, queue_max_hw_sectors_entry.attr, queue_max_sectors_entry.attr, - queue_nr_dirty_entry.attr, - queue_nr_writeback_entry.attr, queue_iosched_entry.attr, NULL, }; Index: linux-2.6/fs/buffer.c === --- linux-2.6.orig/fs/buffer.c 2007-04-10 16:30:15.0 +0200 +++ linux-2.6/fs/buffer.c 2007-04-10 16:35:03.0 +0200 @@ -740,7 +740,6 @@ int __set_page_dirty_buffers(struct page if (page-mapping) {/* Race with truncate? */ if (mapping_cap_account_dirty(mapping)) { __inc_zone_page_state(page, NR_FILE_DIRTY); - atomic_long_inc(mapping-backing_dev_info-nr_dirty); task_io_account_write(PAGE_CACHE_SIZE); } radix_tree_tag_set(mapping-page_tree, Index: linux-2.6/include/linux/backing-dev.h === --- linux-2.6.orig/include/linux/backing-dev.h 2007-04-10 16:30:55.0 +0200 +++ linux-2.6/include/linux/backing-dev.h 2007-04-10 16:35:03.0 +0200 @@ -30,8 +30,6 @@ struct backing_dev_info { unsigned long ra_thrash_bytes; /* estimated thrashing threshold */ unsigned long state;/* Always use atomic bitops on this */ unsigned int capabilities; /* Device capabilities */ - atomic_long_t nr_dirty; /* Pages dirty against this BDI */ - atomic_long_t nr_writeback;/* Pages under writeback against this BDI */ congested_fn *congested_fn; /* Function pointer if device is md/dm */ void *congested_data; /* Pointer to aux data for congested func */ void (*unplug_io_fn)(struct backing_dev_info *, struct page *); Index: linux-2.6/mm/page-writeback.c === --- linux-2.6.orig/mm/page-writeback.c 2007-04-10 16:30:15.0 +0200 +++ linux-2.6/mm/page-writeback.c 2007-04-10 16:35:03.0 +0200 @@ -828,8 +828,6 @@ int __set_page_dirty_nobuffers(struct pa BUG_ON(mapping2 != mapping); if (mapping_cap_account_dirty(mapping)) { __inc_zone_page_state(page, NR_FILE_DIRTY); - atomic_long_inc(mapping-backing_dev_info- -