diff options
| author | Andrew Morton <akpm@zip.com.au> | 2002-04-29 23:53:20 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.transmeta.com> | 2002-04-29 23:53:20 -0700 |
| commit | 7d513234c45c6428985e77a5fd6d1382b8fa205b (patch) | |
| tree | c53addf52a1f3c8207006c2ea433c271a6a262a9 /include/linux/fs.h | |
| parent | df6867ef84a7d9ee4d44f451751a3f4128de10f9 (diff) | |
[PATCH] remove i_dirty_data_buffers
Removes inode.i_dirty_data_buffers. It's no longer used - all dirty
buffers have their pages marked dirty and filemap_fdatasync() /
filemap_fdatawait() catches it all.
Updates all callers.
This required a change in JFS - it has "metapages" which
are a container around a page which holds metadata. They
were holding these pages locked and were relying on fsync_inode_data_buffers
for writing them out. So fdatasync() deadlocked.
I've changed JFS to not lock those pages. Change was acked
by Dave Kleikamp <shaggy@austin.ibm.com> as the right
thing to do, but may not be complete. Probably igrab()
against ->host is needed to pin the address_space down.
Diffstat (limited to 'include/linux/fs.h')
| -rw-r--r-- | include/linux/fs.h | 13 |
1 files changed, 0 insertions, 13 deletions
diff --git a/include/linux/fs.h b/include/linux/fs.h index 16c8dc3de35b..4027b4573cd7 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -435,7 +435,6 @@ struct inode { struct list_head i_dentry; struct list_head i_dirty_buffers; /* uses i_bufferlist_lock */ - struct list_head i_dirty_data_buffers; spinlock_t i_bufferlist_lock; unsigned long i_ino; @@ -1266,13 +1265,6 @@ buffer_insert_inode_queue(struct buffer_head *bh, struct inode *inode) bh, &inode->i_dirty_buffers); } -static inline void -buffer_insert_inode_data_queue(struct buffer_head *bh, struct inode *inode) -{ - buffer_insert_list(&inode->i_bufferlist_lock, - bh, &inode->i_dirty_data_buffers); -} - #define atomic_set_buffer_dirty(bh) test_and_set_bit(BH_Dirty, &(bh)->b_state) static inline void mark_buffer_async(struct buffer_head * bh, int on) @@ -1341,11 +1333,6 @@ static inline int fsync_inode_buffers(struct inode *inode) return fsync_buffers_list(&inode->i_bufferlist_lock, &inode->i_dirty_buffers); } -static inline int fsync_inode_data_buffers(struct inode *inode) -{ - return fsync_buffers_list(&inode->i_bufferlist_lock, - &inode->i_dirty_data_buffers); -} extern int inode_has_buffers(struct inode *); extern int filemap_fdatasync(struct address_space *); extern int filemap_fdatawait(struct address_space *); |
