On Thu, 14 Mar 2013 15:42:43 -0700 "Darrick J. Wong" <darrick.wong@xxxxxxxxxx> wrote: > Subject: [PATCH] mm: Make snapshotting pages for stable writes a per-bio operation > > Walking a bio's page mappings has proved problematic, so create a new bio flag > to indicate that a bio's data needs to be snapshotted in order to guarantee > stable pages during writeback. Next, for the one user (ext3/jbd) of > snapshotting, hook all the places where writes can be initiated without > PG_writeback set, and set BIO_SNAP_STABLE there. Finally, the MS_SNAP_STABLE > mount flag (only used by ext3) is now superfluous, so get rid of it. whoa, that looks way better. Must do this though: From: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Subject: mm-make-snapshotting-pages-for-stable-writes-a-per-bio-operation-fix rename _submit_bh()'s `flags' to `bio_flags', delobotomize the _submit_bh declaration Cc: Adrian Hunter <adrian.hunter@xxxxxxxxx> Cc: Andy Lutomirski <luto@xxxxxxxxxxxxxx> Cc: Artem Bityutskiy <dedekind1@xxxxxxxxx> Cc: Darrick J. Wong <darrick.wong@xxxxxxxxxx> Cc: Jan Kara <jack@xxxxxxx> Cc: Jens Axboe <axboe@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- fs/buffer.c | 4 ++-- include/linux/buffer_head.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff -puN fs/buffer.c~mm-make-snapshotting-pages-for-stable-writes-a-per-bio-operation-fix fs/buffer.c --- a/fs/buffer.c~mm-make-snapshotting-pages-for-stable-writes-a-per-bio-operation-fix +++ a/fs/buffer.c @@ -2949,7 +2949,7 @@ static void guard_bh_eod(int rw, struct } } -int _submit_bh(int rw, struct buffer_head * bh, unsigned long flags) +int _submit_bh(int rw, struct buffer_head * bh, unsigned long bio_flags) { struct bio *bio; int ret = 0; @@ -2984,7 +2984,7 @@ int _submit_bh(int rw, struct buffer_hea bio->bi_end_io = end_bio_bh_io_sync; bio->bi_private = bh; - bio->bi_flags |= flags; + bio->bi_flags |= bio_flags; /* Take care of bh's that straddle the end of the device */ guard_bh_eod(rw, bio, bh); diff -puN include/linux/buffer_head.h~mm-make-snapshotting-pages-for-stable-writes-a-per-bio-operation-fix include/linux/buffer_head.h --- a/include/linux/buffer_head.h~mm-make-snapshotting-pages-for-stable-writes-a-per-bio-operation-fix +++ a/include/linux/buffer_head.h @@ -181,7 +181,7 @@ void ll_rw_block(int, int, struct buffer int sync_dirty_buffer(struct buffer_head *bh); int __sync_dirty_buffer(struct buffer_head *bh, int rw); void write_dirty_buffer(struct buffer_head *bh, int rw); -int _submit_bh(int, struct buffer_head *, unsigned long); +int _submit_bh(int rw, struct buffer_head *bh, unsigned long bio_flags); int submit_bh(int, struct buffer_head *); void write_boundary_block(struct block_device *bdev, sector_t bblock, unsigned blocksize); _ -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html