--- a/fs/nilfs2/segment.c +++ b/fs/nilfs2/segment.c @@ -741,6 +741,10 @@ static size_t nilfs_lookup_dirty_data_buffers(struct inode *inode, do { if (!buffer_dirty(bh) || buffer_async_write(bh)) continue; + + if (list_empty(&bh->b_assoc_buffers)) + continue; + get_bh(bh); list_add_tail(&bh->b_assoc_buffers, listp); ndirties++;