diff options
| author | Andrew Morton <akpm@osdl.org> | 2004-05-14 05:43:07 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-05-14 05:43:07 -0700 |
| commit | e059d5daf158b1bde61883ee5a091cd4875864a9 (patch) | |
| tree | b81340cab05c5405a489115bd442856fdaad7e28 /include/linux/blkdev.h | |
| parent | 485ba3c3b6da6ca02daee0f961fe70beaebd32b3 (diff) | |
[PATCH] Add blk_run_page()
From: Andrea Arcangeli <andrea@suse.de>
From: Jens Axboe
Add blk_run_page() API. This is so that we can pass the target page all the
way down to (for example) the swap unplug function. So swap can work out
which blockdevs back this particular page.
Diffstat (limited to 'include/linux/blkdev.h')
| -rw-r--r-- | include/linux/blkdev.h | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index e38d901a6526..03018e2f974a 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -532,16 +532,27 @@ static inline request_queue_t *bdev_get_queue(struct block_device *bdev) return bdev->bd_disk->queue; } -static inline void blk_run_backing_dev(struct backing_dev_info *bdi) +static inline void blk_run_backing_dev(struct backing_dev_info *bdi, + struct page *page) { if (bdi && bdi->unplug_io_fn) - bdi->unplug_io_fn(bdi); + bdi->unplug_io_fn(bdi, page); } static inline void blk_run_address_space(struct address_space *mapping) { if (mapping) - blk_run_backing_dev(mapping->backing_dev_info); + blk_run_backing_dev(mapping->backing_dev_info, NULL); +} + +static inline void blk_run_page(struct page *page) +{ + struct address_space *mapping; + + smp_mb(); + mapping = page->mapping; + if (mapping) + blk_run_backing_dev(mapping->backing_dev_info, page); } /* |
