remove buffer_head.b_inode
PATCH 1/1 remove buffer_head.b_inode
Removal of buffer_head.b_inode. The list_emptiness of b_inode_buffers is used to indicate whether the buffer is on an inode's i_dirty_buffers.
=====================================
fs/buffer.c renamed from fs/buffer.c~cleanup-030-b_inode +6 -14
@@ -416,9 +416,7 @@ void buffer_insert_list(spinlock_t *lockif (lock ==NULL ) lock = &global_bufferlist_lock;spin_lock (lock); -if (bh->b_inode) -list_del (&bh->b_inode_buffers); - bh->b_inode =1 ; +list_del (&bh->b_inode_buffers);list_add (&bh->b_inode_buffers, list);spin_unlock (lock); }
@@ -428,10 +426,7 @@ void buffer_insert_list(spinlock_t *lock*/ static inline void __remove_inode_queue (struct buffer_head *bh) { -if (bh->b_inode) { -list_del (&bh->b_inode_buffers); - bh->b_inode =0 ; - } +list_del_init (&bh->b_inode_buffers); }int inode_has_buffers (struct inode *inode)
@@ -656,11 +651,8 @@ int fsync_buffers_list(spinlock_t *lock,spin_lock (lock);while (!list_empty (list)) { bh =BH_ENTRY (list->next); -list_del (&bh->b_inode_buffers); -if (!buffer_dirty (bh) && !buffer_locked (bh)) - bh->b_inode =0 ; -else { - bh->b_inode =1 ; +list_del_init (&bh->b_inode_buffers); +if (buffer_dirty (bh) ||buffer_locked (bh)) {list_add (&bh->b_inode_buffers, &tmp);if (buffer_dirty (bh)) {get_bh (bh);
@@ -2237,8 +2229,7 @@ EXPORT_SYMBOL(alloc_buffer_head);void free_buffer_head (struct buffer_head *bh) { -if (bh->b_inode) -BUG (); +BUG_ON (!list_empty (&bh->b_inode_buffers));mempool_free (bh, bh_mempool); }EXPORT_SYMBOL (free_buffer_head);
@@ -2253,6 +2244,7 @@ static void init_buffer_head(void *data, bh->b_dev =B_FREE ; bh->b_bdev =NULL ; bh->b_blocknr =-1 ; +INIT_LIST_HEAD (&bh->b_inode_buffers);init_waitqueue_head (&bh->b_wait); } }
include/linux/fs.h renamed from include/linux/fs.h~cleanup-030-b_inode +0 -1
@@ -257,7 +257,6 @@ struct buffer_head {wait_queue_head_t b_wait; -int b_inode;/* will go away */ struct list_head b_inode_buffers;/* doubly linked list of inode dirty buffers */ };