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 - 25-akpm/mm/truncate.c | 1 - fs/direct-io.c | 0 6 files changed, 3 insertions(+), 9 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-03-14 14:25:22.690986080 -0800 +++ 25-akpm/fs/inode.c 2004-03-14 14:25:22.698984864 -0800 @@ -178,7 +178,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-03-14 14:25:22.691985928 -0800 +++ 25-akpm/fs/mpage.c 2004-03-14 14:25:22.699984712 -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-03-14 14:25:22.693985624 -0800 +++ 25-akpm/mm/swap_state.c 2004-03-14 14:25:22.700984560 -0800 @@ -28,7 +28,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 --- 25/mm/truncate.c~stop-using-io-pages 2004-03-14 14:25:22.694985472 -0800 +++ 25-akpm/mm/truncate.c 2004-03-14 14:25:22.700984560 -0800 @@ -179,7 +179,6 @@ void truncate_inode_pages(struct address WARN_ON(mapping->nrpages); WARN_ON(!list_empty(&mapping->clean_pages)); WARN_ON(!list_empty(&mapping->locked_pages)); - WARN_ON(!list_empty(&mapping->io_pages)); } } diff -puN include/linux/fs.h~stop-using-io-pages include/linux/fs.h --- 25/include/linux/fs.h~stop-using-io-pages 2004-03-14 14:25:22.696985168 -0800 +++ 25-akpm/include/linux/fs.h 2004-03-14 14:25:22.702984256 -0800 @@ -328,7 +328,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 */ _