summaryrefslogtreecommitdiff
path: root/include/linux/fs.h
diff options
context:
space:
mode:
authorAndrew Morton <akpm@zip.com.au>2002-04-29 23:53:20 -0700
committerLinus Torvalds <torvalds@home.transmeta.com>2002-04-29 23:53:20 -0700
commit7d513234c45c6428985e77a5fd6d1382b8fa205b (patch)
treec53addf52a1f3c8207006c2ea433c271a6a262a9 /include/linux/fs.h
parentdf6867ef84a7d9ee4d44f451751a3f4128de10f9 (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.h13
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 *);