fs: move code out of buffer.c
Subsystems (23)
PATCH 1/1 fs: move code out of buffer.c
Another step towards decoupling mm/vfs from buffer_head code, and a good cleanup in itself.
--
Move invalidate_bdev, block_sync_page into fs/block_dev.c. Export kill_bdev as well, so brd doesn't have to open code it. Reduce buffer_head.h requirement accordingly.
Removed a rather large comment from invalidate_bdev, as it looked a bit obsolete to bother moving. The small comment replacing it says enough.
--- arch/powerpc/sysdev/axonram.c | 1 block/genhd.c | 1 block/ioctl.c | 2 - drivers/block/amiflop.c | 2 - drivers/block/brd.c | 9 ++--- drivers/block/floppy.c | 1 drivers/block/loop.c | 1 drivers/cdrom/cdrom.c | 1 drivers/char/sysrq.c | 1 drivers/md/dm.c | 1 drivers/md/md.c | 2 - drivers/mtd/devices/block2mtd.c | 1 drivers/s390/block/dasd.c | 1 drivers/s390/char/tape_block.c | 1 drivers/scsi/scsicam.c | 1 drivers/staging/ramzswap/ramzswap_drv.c | 1 fs/block_dev.c | 36 ++++++++++++++++++-- fs/buffer.c | 56 -------------------------------- fs/cachefiles/interface.c | 1 fs/cramfs/inode.c | 1 fs/fs-writeback.c | 1 fs/libfs.c | 2 - fs/quota/dquot.c | 1 fs/quota/quota.c | 1 fs/splice.c | 1 fs/sync.c | 1 include/linux/buffer_head.h | 1 include/linux/fs.h | 3 + kernel/power/swap.c | 1 mm/page-writeback.c | 2 - mm/swap_state.c | 1 31 files changed, 45 insertions(+), 91 deletions(-)
drivers/block/brd.c +4 -5
@@ -16,7 +16,7 @@#include <linux/bio.h> #include <linux/highmem.h> #include <linux/radix-tree.h> -#include <linux/buffer_head.h> /* invalidate_bh_lrus() */ +#include <linux/fs.h> #include <linux/slab.h> #include <asm/uaccess.h>
@@ -359,14 +359,13 @@ static int brd_ioctl(struct block_device error = -EBUSY ;if (bdev->bd_openers <=1 ) {/* -* Invalidate the cache first, so it isn't written -* back to the device. +* Kill the cache first, so it isn't written back to the +* device. * * Another thread might instantiate more buffercache here, * but there is not much we can do to close that race. */ -invalidate_bh_lrus (); -truncate_inode_pages (bdev->bd_inode->i_mapping,0 ); +kill_bdev (bdev);brd_free_pages (brd); error =0 ; }
drivers/block/loop.c +0 -1
@@ -68,7 +68,6 @@#include <linux/suspend.h> #include <linux/freezer.h> #include <linux/writeback.h> -#include <linux/buffer_head.h> /* for invalidate_bdev() */ #include <linux/completion.h> #include <linux/highmem.h> #include <linux/kthread.h>
drivers/md/md.c +1 -1
@@ -36,7 +36,7 @@#include <linux/blkdev.h> #include <linux/sysctl.h> #include <linux/seq_file.h> -#include <linux/buffer_head.h> /* for invalidate_bdev */ +#include <linux/fs.h> #include <linux/poll.h> #include <linux/ctype.h> #include <linux/string.h>
fs/block_dev.c +33 -3
@@ -18,6 +18,7 @@#include <linux/module.h> #include <linux/blkpg.h> #include <linux/buffer_head.h> +#include <linux/swap.h> #include <linux/pagevec.h> #include <linux/writeback.h> #include <linux/mpage.h>
@@ -62,13 +63,31 @@ static sector_t max_block(struct block_d }/* Kill _all_ buffers and pagecache , dirty or not.. */ -static void kill_bdev (struct block_device *bdev) +void kill_bdev (struct block_device *bdev) { -if (bdev->bd_inode->i_mapping->nrpages ==0 ) +struct address_space *mapping = bdev->bd_inode->i_mapping; + +if (mapping->nrpages ==0 )return ; +invalidate_bh_lrus (); -truncate_inode_pages (bdev->bd_inode->i_mapping,0 ); +truncate_inode_pages (mapping,0 ); } +EXPORT_SYMBOL (kill_bdev); + +/* Invalidate clean unused buffers and pagecache. */ +void invalidate_bdev (struct block_device *bdev) +{ +struct address_space *mapping = bdev->bd_inode->i_mapping; + +if (mapping->nrpages ==0 ) +return ; + +invalidate_bh_lrus (); +lru_add_drain_all ();/* make sure all lru add caches are flushed */ +invalidate_mapping_pages (mapping,0 ,-1 ); +} +EXPORT_SYMBOL (invalidate_bdev);int set_blocksize (struct block_device *bdev,int size) {
@@ -1582,6 +1601,17 @@ ssize_t blkdev_aio_write(struct kiocb *i }EXPORT_SYMBOL_GPL (blkdev_aio_write); +void block_sync_page (struct page *page) +{ +struct address_space *mapping; + +smp_mb (); + mapping =page_mapping (page); +if (mapping) +blk_run_backing_dev (mapping->backing_dev_info, page); +} +EXPORT_SYMBOL (block_sync_page); +/* * Try to release a page associated with block device when the system * is under memory pressure.
fs/quota/dquot.c +0 -1
@@ -73,7 +73,6 @@#include <linux/security.h> #include <linux/kmod.h> #include <linux/namei.h> -#include <linux/buffer_head.h> #include <linux/capability.h> #include <linux/quotaops.h> #include <linux/writeback.h> /* for inode_lock, oddly enough.. */
fs/quota/quota.c +0 -1
@@ -13,7 +13,6 @@#include <linux/kernel.h> #include <linux/security.h> #include <linux/syscalls.h> -#include <linux/buffer_head.h> #include <linux/capability.h> #include <linux/quotaops.h> #include <linux/types.h>
include/linux/fs.h +3 -0
@@ -1948,6 +1948,7 @@ extern void bd_set_size(struct block_devextern void bd_forget (struct inode *inode);extern void bdput (struct block_device *);extern struct block_device *open_by_devnum (dev_t ,fmode_t ); +extern void kill_bdev (struct block_device *);extern void invalidate_bdev (struct block_device *);extern int sync_blockdev (struct block_device *bdev);extern struct super_block *freeze_bdev (struct block_device *);
@@ -1957,6 +1958,7 @@ extern int fsync_bdev(struct block_devic#else static inline void bd_forget (struct inode *inode) {}static inline int sync_blockdev (struct block_device *bdev) {return 0 ; } +static inline void kill_bdev (struct block_device *bdev) {}static inline void invalidate_bdev (struct block_device *bdev) {}static inline struct super_block *freeze_bdev (struct block_device *sb)
@@ -2214,6 +2216,7 @@ extern int generic_segment_checks(constextern ssize_t blkdev_aio_write (struct kiocb *iocb,const struct iovec *iov,unsigned long nr_segs,loff_t pos);extern int blkdev_fsync (struct file *filp,int datasync); +extern void block_sync_page (struct page *page);/* fs/splice.c */ extern ssize_t generic_file_splice_read(struct file *, loff_t *,
block/genhd.c +0 -1
@@ -15,7 +15,6 @@#include <linux/slab.h> #include <linux/kmod.h> #include <linux/kobj_map.h> -#include <linux/buffer_head.h> #include <linux/mutex.h> #include <linux/idr.h>
block/ioctl.c +1 -1
@@ -4,7 +4,7 @@#include <linux/blkpg.h> #include <linux/hdreg.h> #include <linux/backing-dev.h> -#include <linux/buffer_head.h> +#include <linux/fs.h> #include <linux/smp_lock.h> #include <linux/blktrace_api.h> #include <asm/uaccess.h>
drivers/block/amiflop.c +1 -1
@@ -62,7 +62,7 @@#include <linux/init.h> #include <linux/amifdreg.h> #include <linux/amifd.h> -#include <linux/buffer_head.h> +#include <linux/fs.h> #include <linux/blkdev.h> #include <linux/elevator.h> #include <linux/interrupt.h>
drivers/block/floppy.c +0 -1
@@ -188,7 +188,6 @@ static int print_unex = 1;#include <linux/init.h> #include <linux/platform_device.h> #include <linux/mod_devicetable.h> -#include <linux/buffer_head.h> /* for invalidate_buffers() */ #include <linux/mutex.h> #include <linux/io.h> #include <linux/uaccess.h>
drivers/char/sysrq.c +0 -1
@@ -33,7 +33,6 @@#include <linux/module.h> #include <linux/suspend.h> #include <linux/writeback.h> -#include <linux/buffer_head.h> /* for fsync_bdev() */ #include <linux/swap.h> #include <linux/spinlock.h> #include <linux/vt_kern.h>
arch/powerpc/sysdev/axonram.c +0 -1
@@ -25,7 +25,6 @@#include <linux/bio.h> #include <linux/blkdev.h> -#include <linux/buffer_head.h> #include <linux/device.h> #include <linux/errno.h> #include <linux/fs.h>
drivers/cdrom/cdrom.c +0 -1
@@ -265,7 +265,6 @@#include <linux/module.h> #include <linux/fs.h> -#include <linux/buffer_head.h> #include <linux/major.h> #include <linux/types.h> #include <linux/errno.h>
drivers/md/dm.c +0 -1
@@ -14,7 +14,6 @@#include <linux/moduleparam.h> #include <linux/blkpg.h> #include <linux/bio.h> -#include <linux/buffer_head.h> #include <linux/mempool.h> #include <linux/slab.h> #include <linux/idr.h>
drivers/mtd/devices/block2mtd.c +0 -1
@@ -14,7 +14,6 @@#include <linux/list.h> #include <linux/init.h> #include <linux/mtd/mtd.h> -#include <linux/buffer_head.h> #include <linux/mutex.h> #include <linux/mount.h> #include <linux/slab.h>
drivers/s390/block/dasd.c +0 -1
@@ -17,7 +17,6 @@#include <linux/ctype.h> #include <linux/major.h> #include <linux/slab.h> -#include <linux/buffer_head.h> #include <linux/hdreg.h> #include <linux/async.h> #include <linux/mutex.h>
drivers/s390/char/tape_block.c +0 -1
@@ -17,7 +17,6 @@#include <linux/module.h> #include <linux/blkdev.h> #include <linux/interrupt.h> -#include <linux/buffer_head.h> #include <linux/kernel.h> #include <asm/debug.h>
drivers/scsi/scsicam.c +0 -1
@@ -16,7 +16,6 @@#include <linux/genhd.h> #include <linux/kernel.h> #include <linux/blkdev.h> -#include <linux/buffer_head.h> #include <asm/unaligned.h> #include <scsi/scsicam.h>
kernel/power/swap.c +0 -1
@@ -17,7 +17,6 @@#include <linux/bitops.h> #include <linux/genhd.h> #include <linux/device.h> -#include <linux/buffer_head.h> #include <linux/bio.h> #include <linux/blkdev.h> #include <linux/swap.h>
drivers/staging/ramzswap/ramzswap_drv.c +0 -1
@@ -19,7 +19,6 @@#include <linux/kernel.h> #include <linux/bitops.h> #include <linux/blkdev.h> -#include <linux/buffer_head.h> #include <linux/device.h> #include <linux/genhd.h> #include <linux/highmem.h>
fs/cachefiles/interface.c +0 -1
@@ -11,7 +11,6 @@#include <linux/slab.h> #include <linux/mount.h> -#include <linux/buffer_head.h> #include "internal.h" #define list_to_page (head) (list_entry((head)->prev, struct page, lru))
fs/cramfs/inode.c +0 -1
@@ -20,7 +20,6 @@#include <linux/cramfs_fs.h> #include <linux/slab.h> #include <linux/cramfs_fs_sb.h> -#include <linux/buffer_head.h> #include <linux/vfs.h> #include <linux/mutex.h>
fs/fs-writeback.c +0 -1
@@ -25,7 +25,6 @@#include <linux/writeback.h> #include <linux/blkdev.h> #include <linux/backing-dev.h> -#include <linux/buffer_head.h> #include "internal.h" #define inode_to_bdi (inode) ((inode)->i_mapping->backing_dev_info)
fs/splice.c +0 -1
@@ -25,7 +25,6 @@#include <linux/mm_inline.h> #include <linux/swap.h> #include <linux/writeback.h> -#include <linux/buffer_head.h> #include <linux/module.h> #include <linux/syscalls.h> #include <linux/uio.h>
fs/sync.c +0 -1
@@ -13,7 +13,6 @@#include <linux/linkage.h> #include <linux/pagemap.h> #include <linux/quotaops.h> -#include <linux/buffer_head.h> #include <linux/backing-dev.h> #include "internal.h"
mm/page-writeback.c +1 -1
@@ -32,7 +32,7 @@#include <linux/sysctl.h> #include <linux/cpu.h> #include <linux/syscalls.h> -#include <linux/buffer_head.h> +#include <linux/buffer_head.h> /* __set_page_dirty_buffers */ #include <linux/pagevec.h> /*
mm/swap_state.c +0 -1
@@ -14,7 +14,6 @@#include <linux/swapops.h> #include <linux/init.h> #include <linux/pagemap.h> -#include <linux/buffer_head.h> #include <linux/backing-dev.h> #include <linux/pagevec.h> #include <linux/migrate.h>
fs/buffer.c +0 -56
68 lines not on this page · raw message
include/linux/buffer_head.h +0 -1
@@ -227,7 +227,6 @@ int generic_cont_expand_simple(struct inint block_commit_write (struct page *page,unsigned from,unsigned to);int block_page_mkwrite (struct vm_area_struct *vma,struct vm_fault *vmf,get_block_t get_block); -void block_sync_page (struct page *);sector_t generic_block_bmap (struct address_space *,sector_t ,get_block_t *);int block_truncate_page (struct address_space *,loff_t ,get_block_t *);int file_fsync (struct file *,int );
fs/libfs.c +1 -1
@@ -12,7 +12,7 @@#include <linux/mutex.h> #include <linux/exportfs.h> #include <linux/writeback.h> -#include <linux/buffer_head.h> +#include <linux/buffer_head.h> /* sync_mapping_buffers */ #include <asm/uaccess.h>