Now remove address_space.io_pages. --- 25-akpm/fs/inode.c | 1 - 25-akpm/fs/mpage.c | 8 +++----- 25-akpm/include/linux/fs.h | 1 - 25-akpm/mm/swap_state.c | 1 - fs/direct-io.c | 0 mm/truncate.c | 0 6 files changed, 3 insertions(+), 8 deletions(-) diff -puN fs/direct-io.c~stop-using-io-pages fs/direct-io.c diff -puN fs/inode.c~stop-using-io-pages fs/inode.c --- 25/fs/inode.c~stop-using-io-pages 2004-04-03 03:00:12.877273912 -0800 +++ 25-akpm/fs/inode.c 2004-04-03 03:00:12.885272696 -0800 @@ -180,7 +180,6 @@ void inode_init_once(struct inode *inode INIT_HLIST_NODE(&inode->i_hash); INIT_LIST_HEAD(&inode->i_data.clean_pages); INIT_LIST_HEAD(&inode->i_data.locked_pages); - INIT_LIST_HEAD(&inode->i_data.io_pages); INIT_LIST_HEAD(&inode->i_dentry); INIT_LIST_HEAD(&inode->i_devices); sema_init(&inode->i_sem, 1); diff -puN fs/mpage.c~stop-using-io-pages fs/mpage.c --- 25/fs/mpage.c~stop-using-io-pages 2004-04-03 03:00:12.878273760 -0800 +++ 25-akpm/fs/mpage.c 2004-04-03 03:00:12.886272544 -0800 @@ -589,15 +589,13 @@ out: * This is a library function, which implements the writepages() * address_space_operation. * - * (The next two paragraphs refer to code which isn't here yet, but they - * explain the presence of address_space.io_pages) - * * If a page is already under I/O, generic_writepages() skips it, even * if it's dirty. This is desirable behaviour for memory-cleaning writeback, * but it is INCORRECT for data-integrity system calls such as fsync(). fsync() * and msync() need to guarantee that all the data which was dirty at the time - * the call was made get new I/O started against them. So if called_for_sync() - * is true, we must wait for existing IO to complete. + * the call was made get new I/O started against them. If wbc->sync_mode is + * WB_SYNC_ALL then we were called for data integrity and we must wait for + * existing IO to complete. */ int mpage_writepages(struct address_space *mapping, diff -puN mm/swap_state.c~stop-using-io-pages mm/swap_state.c --- 25/mm/swap_state.c~stop-using-io-pages 2004-04-03 03:00:12.879273608 -0800 +++ 25-akpm/mm/swap_state.c 2004-04-03 03:00:12.887272392 -0800 @@ -27,7 +27,6 @@ struct address_space swapper_space = { .page_tree = RADIX_TREE_INIT(GFP_ATOMIC), .tree_lock = SPIN_LOCK_UNLOCKED, .clean_pages = LIST_HEAD_INIT(swapper_space.clean_pages), - .io_pages = LIST_HEAD_INIT(swapper_space.io_pages), .locked_pages = LIST_HEAD_INIT(swapper_space.locked_pages), .a_ops = &swap_aops, .backing_dev_info = &swap_backing_dev_info, diff -puN mm/truncate.c~stop-using-io-pages mm/truncate.c diff -puN include/linux/fs.h~stop-using-io-pages include/linux/fs.h --- 25/include/linux/fs.h~stop-using-io-pages 2004-04-03 03:00:12.882273152 -0800 +++ 25-akpm/include/linux/fs.h 2004-04-03 03:00:12.888272240 -0800 @@ -325,7 +325,6 @@ struct address_space { spinlock_t tree_lock; /* and spinlock protecting it */ struct list_head clean_pages; /* list of clean pages */ struct list_head locked_pages; /* list of locked pages */ - struct list_head io_pages; /* being prepared for I/O */ unsigned long nrpages; /* number of total pages */ struct address_space_operations *a_ops; /* methods */ struct list_head i_mmap; /* list of private mappings */ _