Re: [GIT PULL] Core block IO changes for 3.14
On Tue, Jan 28, 2014 at 4:45 PM, Jaegeuk Kim wrote: > > In the case of f2fs, could you please check the following code changes? So I ended up doing the merge differently wrt the f2fs_write_end_io() function. As far as I can tell, we can just initialize the f2fs_sb_info directly and unconditionally using the first bio_vec entry, giving us the simpler struct f2fs_sb_info *sbi = F2FS_SB(bio->bi_io_vec->bv_page->mapping->host->i_sb); which is still ugly, but whatever. I'm not quite seeing why f2fs doesn't just set bio->private to the superblock pointer and avoid this whole complex and long pointer chasing, but there's probably some reason. Anyway, it compiles for me, and looks simpler than the alternate resolutions, but maybe there is some reason I miss why you guys did it the way you did. And while I could test that it compiles and looks sane, I don't have a f2fs to actually *test* it on, and maybe I screwed up royally. I'll push it out once I've done the rest of the allmodconfig build-test. Linus -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [GIT PULL] Core block IO changes for 3.14
On Tue, Jan 28, 2014 at 4:45 PM, Jaegeuk Kim jaegeuk@samsung.com wrote: In the case of f2fs, could you please check the following code changes? So I ended up doing the merge differently wrt the f2fs_write_end_io() function. As far as I can tell, we can just initialize the f2fs_sb_info directly and unconditionally using the first bio_vec entry, giving us the simpler struct f2fs_sb_info *sbi = F2FS_SB(bio-bi_io_vec-bv_page-mapping-host-i_sb); which is still ugly, but whatever. I'm not quite seeing why f2fs doesn't just set bio-private to the superblock pointer and avoid this whole complex and long pointer chasing, but there's probably some reason. Anyway, it compiles for me, and looks simpler than the alternate resolutions, but maybe there is some reason I miss why you guys did it the way you did. And while I could test that it compiles and looks sane, I don't have a f2fs to actually *test* it on, and maybe I screwed up royally. I'll push it out once I've done the rest of the allmodconfig build-test. Linus -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [GIT PULL] Core block IO changes for 3.14
On Wed, Jan 29 2014, Geert Uytterhoeven wrote: > Hi Jens, > > On Wed, Jan 29, 2014 at 4:17 PM, Jens Axboe wrote: > > On Wed, Jan 29 2014, Geert Uytterhoeven wrote: > >> On Tue, Jan 28, 2014 at 11:52 PM, Jens Axboe wrote: > >> >> - Finally the immutable biovec changes from Kent Overstreet. This > >> >> enables some nice future work on making arbitrarily sized bios > >> >> possible, and splitting more efficient. Related fixes to immutable > >> >> bio_vecs: > >> >> > >> >> - dm-cache immutable fixup from Mike Snitzer. > >> >> - btrfs immutable fixup from Muthu Kumar. > >> >> > >> >> - bio-integrity fix from Nic Bellinger, which is also going to stable. > >> >> > >> >> > >> >> Please pull! There will be a bit of merge work for you, but it should be > >> >> fairly straight forward. It's mostly related to changin: > >> >> > >> >> bio->bi_sector -> bio->bi_iter.bi_sector > >> >> bio->bi_size-> bio->bi_iter.bi_size > >> >> > >> >> > >> >> git://git.kernel.dk/linux-block.git for-3.14/core > >> > > >> > BTW, let me know if you want me to merge this. The above has been in > >> > for-next since forever, and Stephen has carried a fix or two for new > >> > merges. > >> > >> arch/xtensa/platforms/iss/simdisk.c:108:23: error: 'struct bio' has no > >> member named 'bi_sector' > >> > >> http://kisskb.ellerman.id.au/kisskb/buildresult/10542666/ > > > > Does the below fix it for you? There's an existing bug in there where it > > kunmaps the wrong part (page instead of the address). Not sure that > > matters on xtensa or whether the kmaps are a no-op, but cleaned up none > > the less. > > Yes, it does. Thanks! Thanks for testing! > Acked-by: Geert Uytterhoeven Added. Linus, I queued up this patch, it's in for-3.14/core as well. This will offset the inserted/deleted lines by 7/7. -- Jens Axboe -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [GIT PULL] Core block IO changes for 3.14
Hi Jens, On Wed, Jan 29, 2014 at 4:17 PM, Jens Axboe wrote: > On Wed, Jan 29 2014, Geert Uytterhoeven wrote: >> On Tue, Jan 28, 2014 at 11:52 PM, Jens Axboe wrote: >> >> - Finally the immutable biovec changes from Kent Overstreet. This >> >> enables some nice future work on making arbitrarily sized bios >> >> possible, and splitting more efficient. Related fixes to immutable >> >> bio_vecs: >> >> >> >> - dm-cache immutable fixup from Mike Snitzer. >> >> - btrfs immutable fixup from Muthu Kumar. >> >> >> >> - bio-integrity fix from Nic Bellinger, which is also going to stable. >> >> >> >> >> >> Please pull! There will be a bit of merge work for you, but it should be >> >> fairly straight forward. It's mostly related to changin: >> >> >> >> bio->bi_sector -> bio->bi_iter.bi_sector >> >> bio->bi_size-> bio->bi_iter.bi_size >> >> >> >> >> >> git://git.kernel.dk/linux-block.git for-3.14/core >> > >> > BTW, let me know if you want me to merge this. The above has been in >> > for-next since forever, and Stephen has carried a fix or two for new >> > merges. >> >> arch/xtensa/platforms/iss/simdisk.c:108:23: error: 'struct bio' has no >> member named 'bi_sector' >> >> http://kisskb.ellerman.id.au/kisskb/buildresult/10542666/ > > Does the below fix it for you? There's an existing bug in there where it > kunmaps the wrong part (page instead of the address). Not sure that > matters on xtensa or whether the kmaps are a no-op, but cleaned up none > the less. Yes, it does. Thanks! Acked-by: Geert Uytterhoeven > diff --git a/arch/xtensa/platforms/iss/simdisk.c > b/arch/xtensa/platforms/iss/simdisk.c > index 8c6e819cd8ed..48eebacdf5fe 100644 > --- a/arch/xtensa/platforms/iss/simdisk.c > +++ b/arch/xtensa/platforms/iss/simdisk.c > @@ -103,18 +103,18 @@ static void simdisk_transfer(struct simdisk *dev, > unsigned long sector, > > static int simdisk_xfer_bio(struct simdisk *dev, struct bio *bio) > { > - int i; > - struct bio_vec *bvec; > - sector_t sector = bio->bi_sector; > + struct bio_vec bvec; > + struct bvec_iter iter; > + sector_t sector = bio->bi_iter.bi_sector; > > - bio_for_each_segment(bvec, bio, i) { > - char *buffer = __bio_kmap_atomic(bio, i); > - unsigned len = bvec->bv_len >> SECTOR_SHIFT; > + bio_for_each_segment(bvec, bio, iter) { > + char *buffer = __bio_kmap_atomic(bio, iter); > + unsigned len = bvec.bv_len >> SECTOR_SHIFT; > > simdisk_transfer(dev, sector, len, buffer, > bio_data_dir(bio) == WRITE); > sector += len; > - __bio_kunmap_atomic(bio); > + __bio_kunmap_atomic(buffer); > } > return 0; > } Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [GIT PULL] Core block IO changes for 3.14
On Wed, Jan 29 2014, Geert Uytterhoeven wrote: > On Tue, Jan 28, 2014 at 11:52 PM, Jens Axboe wrote: > >> - Finally the immutable biovec changes from Kent Overstreet. This > >> enables some nice future work on making arbitrarily sized bios > >> possible, and splitting more efficient. Related fixes to immutable > >> bio_vecs: > >> > >> - dm-cache immutable fixup from Mike Snitzer. > >> - btrfs immutable fixup from Muthu Kumar. > >> > >> - bio-integrity fix from Nic Bellinger, which is also going to stable. > >> > >> > >> Please pull! There will be a bit of merge work for you, but it should be > >> fairly straight forward. It's mostly related to changin: > >> > >> bio->bi_sector -> bio->bi_iter.bi_sector > >> bio->bi_size-> bio->bi_iter.bi_size > >> > >> > >> git://git.kernel.dk/linux-block.git for-3.14/core > > > > BTW, let me know if you want me to merge this. The above has been in > > for-next since forever, and Stephen has carried a fix or two for new > > merges. > > arch/xtensa/platforms/iss/simdisk.c:108:23: error: 'struct bio' has no > member named 'bi_sector' > > http://kisskb.ellerman.id.au/kisskb/buildresult/10542666/ Does the below fix it for you? There's an existing bug in there where it kunmaps the wrong part (page instead of the address). Not sure that matters on xtensa or whether the kmaps are a no-op, but cleaned up none the less. diff --git a/arch/xtensa/platforms/iss/simdisk.c b/arch/xtensa/platforms/iss/simdisk.c index 8c6e819cd8ed..48eebacdf5fe 100644 --- a/arch/xtensa/platforms/iss/simdisk.c +++ b/arch/xtensa/platforms/iss/simdisk.c @@ -103,18 +103,18 @@ static void simdisk_transfer(struct simdisk *dev, unsigned long sector, static int simdisk_xfer_bio(struct simdisk *dev, struct bio *bio) { - int i; - struct bio_vec *bvec; - sector_t sector = bio->bi_sector; + struct bio_vec bvec; + struct bvec_iter iter; + sector_t sector = bio->bi_iter.bi_sector; - bio_for_each_segment(bvec, bio, i) { - char *buffer = __bio_kmap_atomic(bio, i); - unsigned len = bvec->bv_len >> SECTOR_SHIFT; + bio_for_each_segment(bvec, bio, iter) { + char *buffer = __bio_kmap_atomic(bio, iter); + unsigned len = bvec.bv_len >> SECTOR_SHIFT; simdisk_transfer(dev, sector, len, buffer, bio_data_dir(bio) == WRITE); sector += len; - __bio_kunmap_atomic(bio); + __bio_kunmap_atomic(buffer); } return 0; } -- Jens Axboe -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [GIT PULL] Core block IO changes for 3.14
On Tue, Jan 28, 2014 at 11:52 PM, Jens Axboe wrote: >> - Finally the immutable biovec changes from Kent Overstreet. This >> enables some nice future work on making arbitrarily sized bios >> possible, and splitting more efficient. Related fixes to immutable >> bio_vecs: >> >> - dm-cache immutable fixup from Mike Snitzer. >> - btrfs immutable fixup from Muthu Kumar. >> >> - bio-integrity fix from Nic Bellinger, which is also going to stable. >> >> >> Please pull! There will be a bit of merge work for you, but it should be >> fairly straight forward. It's mostly related to changin: >> >> bio->bi_sector -> bio->bi_iter.bi_sector >> bio->bi_size-> bio->bi_iter.bi_size >> >> >> git://git.kernel.dk/linux-block.git for-3.14/core > > BTW, let me know if you want me to merge this. The above has been in > for-next since forever, and Stephen has carried a fix or two for new > merges. arch/xtensa/platforms/iss/simdisk.c:108:23: error: 'struct bio' has no member named 'bi_sector' http://kisskb.ellerman.id.au/kisskb/buildresult/10542666/ Reported before at: http://www.spinics.net/lists/dm-devel/msg20937.html Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [GIT PULL] Core block IO changes for 3.14
On Tue, Jan 28, 2014 at 11:52 PM, Jens Axboe ax...@kernel.dk wrote: - Finally the immutable biovec changes from Kent Overstreet. This enables some nice future work on making arbitrarily sized bios possible, and splitting more efficient. Related fixes to immutable bio_vecs: - dm-cache immutable fixup from Mike Snitzer. - btrfs immutable fixup from Muthu Kumar. - bio-integrity fix from Nic Bellinger, which is also going to stable. Please pull! There will be a bit of merge work for you, but it should be fairly straight forward. It's mostly related to changin: bio-bi_sector - bio-bi_iter.bi_sector bio-bi_size- bio-bi_iter.bi_size git://git.kernel.dk/linux-block.git for-3.14/core BTW, let me know if you want me to merge this. The above has been in for-next since forever, and Stephen has carried a fix or two for new merges. arch/xtensa/platforms/iss/simdisk.c:108:23: error: 'struct bio' has no member named 'bi_sector' http://kisskb.ellerman.id.au/kisskb/buildresult/10542666/ Reported before at: http://www.spinics.net/lists/dm-devel/msg20937.html Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say programmer or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [GIT PULL] Core block IO changes for 3.14
On Wed, Jan 29 2014, Geert Uytterhoeven wrote: On Tue, Jan 28, 2014 at 11:52 PM, Jens Axboe ax...@kernel.dk wrote: - Finally the immutable biovec changes from Kent Overstreet. This enables some nice future work on making arbitrarily sized bios possible, and splitting more efficient. Related fixes to immutable bio_vecs: - dm-cache immutable fixup from Mike Snitzer. - btrfs immutable fixup from Muthu Kumar. - bio-integrity fix from Nic Bellinger, which is also going to stable. Please pull! There will be a bit of merge work for you, but it should be fairly straight forward. It's mostly related to changin: bio-bi_sector - bio-bi_iter.bi_sector bio-bi_size- bio-bi_iter.bi_size git://git.kernel.dk/linux-block.git for-3.14/core BTW, let me know if you want me to merge this. The above has been in for-next since forever, and Stephen has carried a fix or two for new merges. arch/xtensa/platforms/iss/simdisk.c:108:23: error: 'struct bio' has no member named 'bi_sector' http://kisskb.ellerman.id.au/kisskb/buildresult/10542666/ Does the below fix it for you? There's an existing bug in there where it kunmaps the wrong part (page instead of the address). Not sure that matters on xtensa or whether the kmaps are a no-op, but cleaned up none the less. diff --git a/arch/xtensa/platforms/iss/simdisk.c b/arch/xtensa/platforms/iss/simdisk.c index 8c6e819cd8ed..48eebacdf5fe 100644 --- a/arch/xtensa/platforms/iss/simdisk.c +++ b/arch/xtensa/platforms/iss/simdisk.c @@ -103,18 +103,18 @@ static void simdisk_transfer(struct simdisk *dev, unsigned long sector, static int simdisk_xfer_bio(struct simdisk *dev, struct bio *bio) { - int i; - struct bio_vec *bvec; - sector_t sector = bio-bi_sector; + struct bio_vec bvec; + struct bvec_iter iter; + sector_t sector = bio-bi_iter.bi_sector; - bio_for_each_segment(bvec, bio, i) { - char *buffer = __bio_kmap_atomic(bio, i); - unsigned len = bvec-bv_len SECTOR_SHIFT; + bio_for_each_segment(bvec, bio, iter) { + char *buffer = __bio_kmap_atomic(bio, iter); + unsigned len = bvec.bv_len SECTOR_SHIFT; simdisk_transfer(dev, sector, len, buffer, bio_data_dir(bio) == WRITE); sector += len; - __bio_kunmap_atomic(bio); + __bio_kunmap_atomic(buffer); } return 0; } -- Jens Axboe -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [GIT PULL] Core block IO changes for 3.14
Hi Jens, On Wed, Jan 29, 2014 at 4:17 PM, Jens Axboe ax...@kernel.dk wrote: On Wed, Jan 29 2014, Geert Uytterhoeven wrote: On Tue, Jan 28, 2014 at 11:52 PM, Jens Axboe ax...@kernel.dk wrote: - Finally the immutable biovec changes from Kent Overstreet. This enables some nice future work on making arbitrarily sized bios possible, and splitting more efficient. Related fixes to immutable bio_vecs: - dm-cache immutable fixup from Mike Snitzer. - btrfs immutable fixup from Muthu Kumar. - bio-integrity fix from Nic Bellinger, which is also going to stable. Please pull! There will be a bit of merge work for you, but it should be fairly straight forward. It's mostly related to changin: bio-bi_sector - bio-bi_iter.bi_sector bio-bi_size- bio-bi_iter.bi_size git://git.kernel.dk/linux-block.git for-3.14/core BTW, let me know if you want me to merge this. The above has been in for-next since forever, and Stephen has carried a fix or two for new merges. arch/xtensa/platforms/iss/simdisk.c:108:23: error: 'struct bio' has no member named 'bi_sector' http://kisskb.ellerman.id.au/kisskb/buildresult/10542666/ Does the below fix it for you? There's an existing bug in there where it kunmaps the wrong part (page instead of the address). Not sure that matters on xtensa or whether the kmaps are a no-op, but cleaned up none the less. Yes, it does. Thanks! Acked-by: Geert Uytterhoeven ge...@linux-m68k.org diff --git a/arch/xtensa/platforms/iss/simdisk.c b/arch/xtensa/platforms/iss/simdisk.c index 8c6e819cd8ed..48eebacdf5fe 100644 --- a/arch/xtensa/platforms/iss/simdisk.c +++ b/arch/xtensa/platforms/iss/simdisk.c @@ -103,18 +103,18 @@ static void simdisk_transfer(struct simdisk *dev, unsigned long sector, static int simdisk_xfer_bio(struct simdisk *dev, struct bio *bio) { - int i; - struct bio_vec *bvec; - sector_t sector = bio-bi_sector; + struct bio_vec bvec; + struct bvec_iter iter; + sector_t sector = bio-bi_iter.bi_sector; - bio_for_each_segment(bvec, bio, i) { - char *buffer = __bio_kmap_atomic(bio, i); - unsigned len = bvec-bv_len SECTOR_SHIFT; + bio_for_each_segment(bvec, bio, iter) { + char *buffer = __bio_kmap_atomic(bio, iter); + unsigned len = bvec.bv_len SECTOR_SHIFT; simdisk_transfer(dev, sector, len, buffer, bio_data_dir(bio) == WRITE); sector += len; - __bio_kunmap_atomic(bio); + __bio_kunmap_atomic(buffer); } return 0; } Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say programmer or something like that. -- Linus Torvalds -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [GIT PULL] Core block IO changes for 3.14
On Wed, Jan 29 2014, Geert Uytterhoeven wrote: Hi Jens, On Wed, Jan 29, 2014 at 4:17 PM, Jens Axboe ax...@kernel.dk wrote: On Wed, Jan 29 2014, Geert Uytterhoeven wrote: On Tue, Jan 28, 2014 at 11:52 PM, Jens Axboe ax...@kernel.dk wrote: - Finally the immutable biovec changes from Kent Overstreet. This enables some nice future work on making arbitrarily sized bios possible, and splitting more efficient. Related fixes to immutable bio_vecs: - dm-cache immutable fixup from Mike Snitzer. - btrfs immutable fixup from Muthu Kumar. - bio-integrity fix from Nic Bellinger, which is also going to stable. Please pull! There will be a bit of merge work for you, but it should be fairly straight forward. It's mostly related to changin: bio-bi_sector - bio-bi_iter.bi_sector bio-bi_size- bio-bi_iter.bi_size git://git.kernel.dk/linux-block.git for-3.14/core BTW, let me know if you want me to merge this. The above has been in for-next since forever, and Stephen has carried a fix or two for new merges. arch/xtensa/platforms/iss/simdisk.c:108:23: error: 'struct bio' has no member named 'bi_sector' http://kisskb.ellerman.id.au/kisskb/buildresult/10542666/ Does the below fix it for you? There's an existing bug in there where it kunmaps the wrong part (page instead of the address). Not sure that matters on xtensa or whether the kmaps are a no-op, but cleaned up none the less. Yes, it does. Thanks! Thanks for testing! Acked-by: Geert Uytterhoeven ge...@linux-m68k.org Added. Linus, I queued up this patch, it's in for-3.14/core as well. This will offset the inserted/deleted lines by 7/7. -- Jens Axboe -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [GIT PULL] Core block IO changes for 3.14
Hi Jens and Stephen, In the case of f2fs, could you please check the following code changes? It is based on the following commit from Linus tree. commit d891ea23d5203e5c47439b2a174f86a00b356a6c Merge: 08d21b5 125d725 Author: Linus Torvalds Date: Tue Jan 28 11:02:23 2014 -0800 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client --- fs/f2fs/data.c | 31 ++- include/trace/events/f2fs.h | 4 ++-- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index 0ae5587..55ae30a 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -26,40 +26,37 @@ static void f2fs_read_end_io(struct bio *bio, int err) { - const int uptodate = test_bit(BIO_UPTODATE, >bi_flags); - struct bio_vec *bvec = bio->bi_io_vec + bio->bi_vcnt - 1; + struct bio_vec *bvec; + int i; - do { + bio_for_each_segment_all(bvec, bio, i) { struct page *page = bvec->bv_page; - if (--bvec >= bio->bi_io_vec) - prefetchw(>bv_page->flags); - - if (unlikely(!uptodate)) { + if (unlikely(err)) { ClearPageUptodate(page); SetPageError(page); } else { SetPageUptodate(page); } unlock_page(page); - } while (bvec >= bio->bi_io_vec); + } bio_put(bio); } static void f2fs_write_end_io(struct bio *bio, int err) { - const int uptodate = test_bit(BIO_UPTODATE, >bi_flags); - struct bio_vec *bvec = bio->bi_io_vec + bio->bi_vcnt - 1; - struct f2fs_sb_info *sbi = F2FS_SB(bvec->bv_page->mapping->host->i_sb); + struct f2fs_sb_info *sbi = NULL; + struct bio_vec *bvec; + int i; - do { + bio_for_each_segment_all(bvec, bio, i) { struct page *page = bvec->bv_page; - if (--bvec >= bio->bi_io_vec) - prefetchw(>bv_page->flags); + if (!sbi) + sbi = F2FS_SB(bvec->bv_page->mapping->host->i_sb); - if (unlikely(!uptodate)) { + if (unlikely(err)) { SetPageError(page); set_bit(AS_EIO, >mapping->flags); set_ckpt_flags(sbi->ckpt, CP_ERROR_FLAG); @@ -67,7 +64,7 @@ static void f2fs_write_end_io(struct bio *bio, int err) } end_page_writeback(page); dec_page_count(sbi, F2FS_WRITEBACK); - } while (bvec >= bio->bi_io_vec); + } if (bio->bi_private) complete(bio->bi_private); @@ -91,7 +88,7 @@ static struct bio *__bio_alloc(struct f2fs_sb_info *sbi, block_t blk_addr, bio = bio_alloc(GFP_NOIO, npages); bio->bi_bdev = sbi->sb->s_bdev; - bio->bi_sector = SECTOR_FROM_BLOCK(sbi, blk_addr); + bio->bi_iter.bi_sector = SECTOR_FROM_BLOCK(sbi, blk_addr); bio->bi_end_io = is_read ? f2fs_read_end_io : f2fs_write_end_io; return bio; diff --git a/include/trace/events/f2fs.h b/include/trace/events/f2fs.h index 3b9f28d..67f38fa 100644 --- a/include/trace/events/f2fs.h +++ b/include/trace/events/f2fs.h @@ -629,8 +629,8 @@ DECLARE_EVENT_CLASS(f2fs__submit_bio, __entry->dev= sb->s_dev; __entry->rw = rw; __entry->type = type; - __entry->sector = bio->bi_sector; - __entry->size = bio->bi_size; + __entry->sector = bio->bi_iter.bi_sector; + __entry->size = bio->bi_iter.bi_size; ), TP_printk("dev = (%d,%d), %s%s, %s, sector = %lld, size = %u", -- 1.8.4.474.g128a96c Thanks, 2014-01-29 (수), 11:05 +1100, Stephen Rothwell: > Hi all, > > On Tue, 28 Jan 2014 15:52:29 -0700 Jens Axboe wrote: > > > > On Tue, Jan 28 2014, Jens Axboe wrote: > > > > > > This is the pull request for the core block IO changes for 3.14. The > > > major piece in here is the immutable bio_ve series from Kent, the rest > > > is fairly minor. It was supposed to go in last round, but various issues > > > pushed it to this release instead. The pull request contains: > > > > > > > > > - Various smaller blk-mq fixes from different folks. Nothing major here, > > > just minor fixes and cleanups. > > > > > > - Fix for a memory leak in the error path in the block ioctl code from > > > Christian Engelmayer. > > > > > > - Header export fix from CaiZhiyong. > > > > > > - Finally the immutable biovec changes from Kent Overstreet. This > > > enables some nice future work on making arbitrarily sized bios > > > possible, and splitting more efficient. Related fixes to immutable > > > bio_vecs: > > > > > > - dm-cache immutable fixup from Mike Snitzer. > > > - btrfs immutable fixup from
Re: [GIT PULL] Core block IO changes for 3.14
Hi all, On Tue, 28 Jan 2014 15:52:29 -0700 Jens Axboe wrote: > > On Tue, Jan 28 2014, Jens Axboe wrote: > > > > This is the pull request for the core block IO changes for 3.14. The > > major piece in here is the immutable bio_ve series from Kent, the rest > > is fairly minor. It was supposed to go in last round, but various issues > > pushed it to this release instead. The pull request contains: > > > > > > - Various smaller blk-mq fixes from different folks. Nothing major here, > > just minor fixes and cleanups. > > > > - Fix for a memory leak in the error path in the block ioctl code from > > Christian Engelmayer. > > > > - Header export fix from CaiZhiyong. > > > > - Finally the immutable biovec changes from Kent Overstreet. This > > enables some nice future work on making arbitrarily sized bios > > possible, and splitting more efficient. Related fixes to immutable > > bio_vecs: > > > > - dm-cache immutable fixup from Mike Snitzer. > > - btrfs immutable fixup from Muthu Kumar. > > > > - bio-integrity fix from Nic Bellinger, which is also going to stable. > > > > > > Please pull! There will be a bit of merge work for you, but it should be > > fairly straight forward. It's mostly related to changin: > > > > bio->bi_sector -> bio->bi_iter.bi_sector > > bio->bi_size-> bio->bi_iter.bi_size > > > > > > git://git.kernel.dk/linux-block.git for-3.14/core > > BTW, let me know if you want me to merge this. The above has been in > for-next since forever, and Stephen has carried a fix or two for new > merges. The worst bit is the conflicts with the f2fs changes that have already been merged. My current merge commit looks like this (though I don't remember getting any comments on my fixes): da3f6c793c656a022453df8bf458d13e5a353beb diff --cc drivers/md/dm-thin.c index 726228b33a01,357eb272dbd9..faaf944597ab --- a/drivers/md/dm-thin.c +++ b/drivers/md/dm-thin.c @@@ -1258,8 -1262,8 +1264,8 @@@ static void process_bio_read_only(struc r = dm_thin_find_block(tc->td, block, 1, _result); switch (r) { case 0: - if (lookup_result.shared && (rw == WRITE) && bio->bi_size) + if (lookup_result.shared && (rw == WRITE) && bio->bi_iter.bi_size) - bio_io_error(bio); + handle_unserviceable_bio(tc->pool, bio); else { inc_all_io_entry(tc->pool, bio); remap_and_issue(tc, bio, lookup_result.block); diff --cc drivers/md/raid10.c index 8d39d63281b9,6d43d88657aa..33fc408e5eac --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@@ -1319,8 -1256,8 +1256,8 @@@ read_again /* Could not read all from this device, so we will * need another r10_bio. */ - sectors_handled = (r10_bio->sectors + max_sectors + sectors_handled = (r10_bio->sector + max_sectors - - bio->bi_sector); + - bio->bi_iter.bi_sector); r10_bio->sectors = max_sectors; spin_lock_irq(>device_lock); if (bio->bi_phys_segments == 0) diff --cc fs/btrfs/extent_io.c index fbe501d3bd01,bcb6f1b780d6..85bbd01f1271 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c @@@ -2375,12 -2332,15 +2375,13 @@@ int end_extent_writepage(struct page *p */ static void end_bio_extent_writepage(struct bio *bio, int err) { - struct bio_vec *bvec = bio->bi_io_vec + bio->bi_vcnt - 1; + struct bio_vec *bvec; - struct extent_io_tree *tree; u64 start; u64 end; + int i; - do { + bio_for_each_segment_all(bvec, bio, i) { struct page *page = bvec->bv_page; - tree = _I(page->mapping->host)->io_tree; /* We always issue full-page reads, but if some block * in a page fails to read, blk_update_request() will diff --cc fs/btrfs/inode.c index 1ef056837755,7ab0e94ad492..f0422a5efa78 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@@ -7016,10 -6891,11 +7013,11 @@@ static void btrfs_end_dio_bio(struct bi struct btrfs_dio_private *dip = bio->bi_private; if (err) { - printk(KERN_ERR "btrfs direct IO failed ino %llu rw %lu " -"sector %#Lx len %u err no %d\n", + btrfs_err(BTRFS_I(dip->inode)->root->fs_info, +"direct IO failed ino %llu rw %lu sector %#Lx len %u err no %d", btrfs_ino(dip->inode), bio->bi_rw, - (unsigned long long)bio->bi_sector, bio->bi_size, err); + (unsigned long long)bio->bi_iter.bi_sector, + bio->bi_iter.bi_size, err); dip->errors = 1; /* diff --cc fs/f2fs/data.c index 0ae558723506,a2c8de8ba6ce..25d675e6a138
Re: [GIT PULL] Core block IO changes for 3.14
On Tue, Jan 28 2014, Jens Axboe wrote: > Hi Linus, > > This is the pull request for the core block IO changes for 3.14. The > major piece in here is the immutable bio_ve series from Kent, the rest > is fairly minor. It was supposed to go in last round, but various issues > pushed it to this release instead. The pull request contains: > > > - Various smaller blk-mq fixes from different folks. Nothing major here, > just minor fixes and cleanups. > > - Fix for a memory leak in the error path in the block ioctl code from > Christian Engelmayer. > > - Header export fix from CaiZhiyong. > > - Finally the immutable biovec changes from Kent Overstreet. This > enables some nice future work on making arbitrarily sized bios > possible, and splitting more efficient. Related fixes to immutable > bio_vecs: > > - dm-cache immutable fixup from Mike Snitzer. > - btrfs immutable fixup from Muthu Kumar. > > - bio-integrity fix from Nic Bellinger, which is also going to stable. > > > Please pull! There will be a bit of merge work for you, but it should be > fairly straight forward. It's mostly related to changin: > > bio->bi_sector -> bio->bi_iter.bi_sector > bio->bi_size-> bio->bi_iter.bi_size > > > git://git.kernel.dk/linux-block.git for-3.14/core BTW, let me know if you want me to merge this. The above has been in for-next since forever, and Stephen has carried a fix or two for new merges. -- Jens Axboe -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[GIT PULL] Core block IO changes for 3.14
Hi Linus, This is the pull request for the core block IO changes for 3.14. The major piece in here is the immutable bio_ve series from Kent, the rest is fairly minor. It was supposed to go in last round, but various issues pushed it to this release instead. The pull request contains: - Various smaller blk-mq fixes from different folks. Nothing major here, just minor fixes and cleanups. - Fix for a memory leak in the error path in the block ioctl code from Christian Engelmayer. - Header export fix from CaiZhiyong. - Finally the immutable biovec changes from Kent Overstreet. This enables some nice future work on making arbitrarily sized bios possible, and splitting more efficient. Related fixes to immutable bio_vecs: - dm-cache immutable fixup from Mike Snitzer. - btrfs immutable fixup from Muthu Kumar. - bio-integrity fix from Nic Bellinger, which is also going to stable. Please pull! There will be a bit of merge work for you, but it should be fairly straight forward. It's mostly related to changin: bio->bi_sector -> bio->bi_iter.bi_sector bio->bi_size-> bio->bi_iter.bi_size git://git.kernel.dk/linux-block.git for-3.14/core Andrew Morton (1): block/blk-mq-cpu.c: use hotcpu_notifier() CaiZhiyong (1): block: remove unrelated header files and export symbol Christian Engelmayer (1): block: Fix memory leak in rw_copy_check_uvector() handling Christoph Hellwig (1): blk-mq: use __smp_call_function_single directly Dave Hansen (1): blk-mq: uses page->list incorrectly Jens Axboe (2): Merge tag 'v3.13-rc6' into for-3.14/core Revert "block: Warn and free bio if bi_end_io is not set" Jose Alonso (1): blk-mq: for_each_* macro correctness Kent Overstreet (28): block: submit_bio_wait() conversions block: Convert various code to bio_for_each_segment() bcache: Kill unaligned bvec hack block: Abstract out bvec iterator dm: Use bvec_iter for dm_bio_record() block: Convert bio_iovec() to bvec_iter block: Convert bio_for_each_segment() to bvec_iter block: Immutable bio vecs block: Convert bio_copy_data() to bvec_iter bio-integrity: Convert to bvec_iter block: Kill bio_segments()/bi_vcnt usage block: Convert drivers to immutable biovecs aoe: Convert to immutable biovecs ceph: Convert to immutable biovecs block: Kill bio_iovec_idx(), __bio_iovec() block: Refactor bio_clone_bioset() for immutable biovecs block: Add bio_clone_fast() rbd: Refactor bio cloning dm: Refactor for new bio cloning/splitting block: Don't save/copy bvec array anymore block: Remove bi_idx hacks block: Generic bio chaining block: Rename bio_split() -> bio_pair_split() block: Introduce new bio_split() block: Kill bio_pair_split() block: Silence spurious compiler warnings block: Really silence spurious compiler warnings block: fixup for generic bio chaining Mike Snitzer (1): dm cache: increment bi_remaining when bi_end_io is restored Ming Lei (4): block: blk-mq: support draining mq queue block: blk-mq: make blk_sync_queue support mq block: blk-mq: don't export blk_mq_free_queue() blk-mq: fix initializing request's start time Muthu Kumar (1): btrfs: fix missing increment of bi_remaining Muthukumar Ratty (1): block: Warn and free bio if bi_end_io is not set Nicholas Bellinger (1): bio-integrity: Fix bio_integrity_verify segment start bug Documentation/block/biodoc.txt | 7 +- Documentation/block/biovecs.txt | 111 ++ arch/m68k/emu/nfblock.c | 13 +- arch/powerpc/sysdev/axonram.c | 21 +- block/blk-core.c| 61 ++-- block/blk-exec.c| 4 + block/blk-flush.c | 2 +- block/blk-integrity.c | 40 ++- block/blk-lib.c | 12 +- block/blk-map.c | 6 +- block/blk-merge.c | 66 ++-- block/blk-mq-cpu.c | 37 +- block/blk-mq.c | 123 +++ block/blk-mq.h | 3 +- block/blk-sysfs.c | 1 + block/blk-throttle.c| 14 +- block/cmdline-parser.c | 18 +- block/elevator.c| 2 +- block/scsi_ioctl.c | 6 +- drivers/block/aoe/aoe.h | 10 +- drivers/block/aoe/aoecmd.c | 153 - drivers/block/brd.c | 16 +- drivers/block/drbd/drbd_actlog.c| 2 +- drivers/block/drbd/drbd_bitmap.c| 2 +- drivers/block/drbd/drbd_main.c | 27 +-
[GIT PULL] Core block IO changes for 3.14
Hi Linus, This is the pull request for the core block IO changes for 3.14. The major piece in here is the immutable bio_ve series from Kent, the rest is fairly minor. It was supposed to go in last round, but various issues pushed it to this release instead. The pull request contains: - Various smaller blk-mq fixes from different folks. Nothing major here, just minor fixes and cleanups. - Fix for a memory leak in the error path in the block ioctl code from Christian Engelmayer. - Header export fix from CaiZhiyong. - Finally the immutable biovec changes from Kent Overstreet. This enables some nice future work on making arbitrarily sized bios possible, and splitting more efficient. Related fixes to immutable bio_vecs: - dm-cache immutable fixup from Mike Snitzer. - btrfs immutable fixup from Muthu Kumar. - bio-integrity fix from Nic Bellinger, which is also going to stable. Please pull! There will be a bit of merge work for you, but it should be fairly straight forward. It's mostly related to changin: bio-bi_sector - bio-bi_iter.bi_sector bio-bi_size- bio-bi_iter.bi_size git://git.kernel.dk/linux-block.git for-3.14/core Andrew Morton (1): block/blk-mq-cpu.c: use hotcpu_notifier() CaiZhiyong (1): block: remove unrelated header files and export symbol Christian Engelmayer (1): block: Fix memory leak in rw_copy_check_uvector() handling Christoph Hellwig (1): blk-mq: use __smp_call_function_single directly Dave Hansen (1): blk-mq: uses page-list incorrectly Jens Axboe (2): Merge tag 'v3.13-rc6' into for-3.14/core Revert block: Warn and free bio if bi_end_io is not set Jose Alonso (1): blk-mq: for_each_* macro correctness Kent Overstreet (28): block: submit_bio_wait() conversions block: Convert various code to bio_for_each_segment() bcache: Kill unaligned bvec hack block: Abstract out bvec iterator dm: Use bvec_iter for dm_bio_record() block: Convert bio_iovec() to bvec_iter block: Convert bio_for_each_segment() to bvec_iter block: Immutable bio vecs block: Convert bio_copy_data() to bvec_iter bio-integrity: Convert to bvec_iter block: Kill bio_segments()/bi_vcnt usage block: Convert drivers to immutable biovecs aoe: Convert to immutable biovecs ceph: Convert to immutable biovecs block: Kill bio_iovec_idx(), __bio_iovec() block: Refactor bio_clone_bioset() for immutable biovecs block: Add bio_clone_fast() rbd: Refactor bio cloning dm: Refactor for new bio cloning/splitting block: Don't save/copy bvec array anymore block: Remove bi_idx hacks block: Generic bio chaining block: Rename bio_split() - bio_pair_split() block: Introduce new bio_split() block: Kill bio_pair_split() block: Silence spurious compiler warnings block: Really silence spurious compiler warnings block: fixup for generic bio chaining Mike Snitzer (1): dm cache: increment bi_remaining when bi_end_io is restored Ming Lei (4): block: blk-mq: support draining mq queue block: blk-mq: make blk_sync_queue support mq block: blk-mq: don't export blk_mq_free_queue() blk-mq: fix initializing request's start time Muthu Kumar (1): btrfs: fix missing increment of bi_remaining Muthukumar Ratty (1): block: Warn and free bio if bi_end_io is not set Nicholas Bellinger (1): bio-integrity: Fix bio_integrity_verify segment start bug Documentation/block/biodoc.txt | 7 +- Documentation/block/biovecs.txt | 111 ++ arch/m68k/emu/nfblock.c | 13 +- arch/powerpc/sysdev/axonram.c | 21 +- block/blk-core.c| 61 ++-- block/blk-exec.c| 4 + block/blk-flush.c | 2 +- block/blk-integrity.c | 40 ++- block/blk-lib.c | 12 +- block/blk-map.c | 6 +- block/blk-merge.c | 66 ++-- block/blk-mq-cpu.c | 37 +- block/blk-mq.c | 123 +++ block/blk-mq.h | 3 +- block/blk-sysfs.c | 1 + block/blk-throttle.c| 14 +- block/cmdline-parser.c | 18 +- block/elevator.c| 2 +- block/scsi_ioctl.c | 6 +- drivers/block/aoe/aoe.h | 10 +- drivers/block/aoe/aoecmd.c | 153 - drivers/block/brd.c | 16 +- drivers/block/drbd/drbd_actlog.c| 2 +- drivers/block/drbd/drbd_bitmap.c| 2 +- drivers/block/drbd/drbd_main.c | 27 +-
Re: [GIT PULL] Core block IO changes for 3.14
On Tue, Jan 28 2014, Jens Axboe wrote: Hi Linus, This is the pull request for the core block IO changes for 3.14. The major piece in here is the immutable bio_ve series from Kent, the rest is fairly minor. It was supposed to go in last round, but various issues pushed it to this release instead. The pull request contains: - Various smaller blk-mq fixes from different folks. Nothing major here, just minor fixes and cleanups. - Fix for a memory leak in the error path in the block ioctl code from Christian Engelmayer. - Header export fix from CaiZhiyong. - Finally the immutable biovec changes from Kent Overstreet. This enables some nice future work on making arbitrarily sized bios possible, and splitting more efficient. Related fixes to immutable bio_vecs: - dm-cache immutable fixup from Mike Snitzer. - btrfs immutable fixup from Muthu Kumar. - bio-integrity fix from Nic Bellinger, which is also going to stable. Please pull! There will be a bit of merge work for you, but it should be fairly straight forward. It's mostly related to changin: bio-bi_sector - bio-bi_iter.bi_sector bio-bi_size- bio-bi_iter.bi_size git://git.kernel.dk/linux-block.git for-3.14/core BTW, let me know if you want me to merge this. The above has been in for-next since forever, and Stephen has carried a fix or two for new merges. -- Jens Axboe -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [GIT PULL] Core block IO changes for 3.14
Hi all, On Tue, 28 Jan 2014 15:52:29 -0700 Jens Axboe ax...@kernel.dk wrote: On Tue, Jan 28 2014, Jens Axboe wrote: This is the pull request for the core block IO changes for 3.14. The major piece in here is the immutable bio_ve series from Kent, the rest is fairly minor. It was supposed to go in last round, but various issues pushed it to this release instead. The pull request contains: - Various smaller blk-mq fixes from different folks. Nothing major here, just minor fixes and cleanups. - Fix for a memory leak in the error path in the block ioctl code from Christian Engelmayer. - Header export fix from CaiZhiyong. - Finally the immutable biovec changes from Kent Overstreet. This enables some nice future work on making arbitrarily sized bios possible, and splitting more efficient. Related fixes to immutable bio_vecs: - dm-cache immutable fixup from Mike Snitzer. - btrfs immutable fixup from Muthu Kumar. - bio-integrity fix from Nic Bellinger, which is also going to stable. Please pull! There will be a bit of merge work for you, but it should be fairly straight forward. It's mostly related to changin: bio-bi_sector - bio-bi_iter.bi_sector bio-bi_size- bio-bi_iter.bi_size git://git.kernel.dk/linux-block.git for-3.14/core BTW, let me know if you want me to merge this. The above has been in for-next since forever, and Stephen has carried a fix or two for new merges. The worst bit is the conflicts with the f2fs changes that have already been merged. My current merge commit looks like this (though I don't remember getting any comments on my fixes): da3f6c793c656a022453df8bf458d13e5a353beb diff --cc drivers/md/dm-thin.c index 726228b33a01,357eb272dbd9..faaf944597ab --- a/drivers/md/dm-thin.c +++ b/drivers/md/dm-thin.c @@@ -1258,8 -1262,8 +1264,8 @@@ static void process_bio_read_only(struc r = dm_thin_find_block(tc-td, block, 1, lookup_result); switch (r) { case 0: - if (lookup_result.shared (rw == WRITE) bio-bi_size) + if (lookup_result.shared (rw == WRITE) bio-bi_iter.bi_size) - bio_io_error(bio); + handle_unserviceable_bio(tc-pool, bio); else { inc_all_io_entry(tc-pool, bio); remap_and_issue(tc, bio, lookup_result.block); diff --cc drivers/md/raid10.c index 8d39d63281b9,6d43d88657aa..33fc408e5eac --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@@ -1319,8 -1256,8 +1256,8 @@@ read_again /* Could not read all from this device, so we will * need another r10_bio. */ - sectors_handled = (r10_bio-sectors + max_sectors + sectors_handled = (r10_bio-sector + max_sectors - - bio-bi_sector); + - bio-bi_iter.bi_sector); r10_bio-sectors = max_sectors; spin_lock_irq(conf-device_lock); if (bio-bi_phys_segments == 0) diff --cc fs/btrfs/extent_io.c index fbe501d3bd01,bcb6f1b780d6..85bbd01f1271 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c @@@ -2375,12 -2332,15 +2375,13 @@@ int end_extent_writepage(struct page *p */ static void end_bio_extent_writepage(struct bio *bio, int err) { - struct bio_vec *bvec = bio-bi_io_vec + bio-bi_vcnt - 1; + struct bio_vec *bvec; - struct extent_io_tree *tree; u64 start; u64 end; + int i; - do { + bio_for_each_segment_all(bvec, bio, i) { struct page *page = bvec-bv_page; - tree = BTRFS_I(page-mapping-host)-io_tree; /* We always issue full-page reads, but if some block * in a page fails to read, blk_update_request() will diff --cc fs/btrfs/inode.c index 1ef056837755,7ab0e94ad492..f0422a5efa78 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@@ -7016,10 -6891,11 +7013,11 @@@ static void btrfs_end_dio_bio(struct bi struct btrfs_dio_private *dip = bio-bi_private; if (err) { - printk(KERN_ERR btrfs direct IO failed ino %llu rw %lu -sector %#Lx len %u err no %d\n, + btrfs_err(BTRFS_I(dip-inode)-root-fs_info, +direct IO failed ino %llu rw %lu sector %#Lx len %u err no %d, btrfs_ino(dip-inode), bio-bi_rw, - (unsigned long long)bio-bi_sector, bio-bi_size, err); + (unsigned long long)bio-bi_iter.bi_sector, + bio-bi_iter.bi_size, err); dip-errors = 1; /* diff --cc fs/f2fs/data.c index 0ae558723506,a2c8de8ba6ce..25d675e6a138 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@@ -24,195 -24,6 +24,192 @@@ #include
Re: [GIT PULL] Core block IO changes for 3.14
Hi Jens and Stephen, In the case of f2fs, could you please check the following code changes? It is based on the following commit from Linus tree. commit d891ea23d5203e5c47439b2a174f86a00b356a6c Merge: 08d21b5 125d725 Author: Linus Torvalds torva...@linux-foundation.org Date: Tue Jan 28 11:02:23 2014 -0800 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client --- fs/f2fs/data.c | 31 ++- include/trace/events/f2fs.h | 4 ++-- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index 0ae5587..55ae30a 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -26,40 +26,37 @@ static void f2fs_read_end_io(struct bio *bio, int err) { - const int uptodate = test_bit(BIO_UPTODATE, bio-bi_flags); - struct bio_vec *bvec = bio-bi_io_vec + bio-bi_vcnt - 1; + struct bio_vec *bvec; + int i; - do { + bio_for_each_segment_all(bvec, bio, i) { struct page *page = bvec-bv_page; - if (--bvec = bio-bi_io_vec) - prefetchw(bvec-bv_page-flags); - - if (unlikely(!uptodate)) { + if (unlikely(err)) { ClearPageUptodate(page); SetPageError(page); } else { SetPageUptodate(page); } unlock_page(page); - } while (bvec = bio-bi_io_vec); + } bio_put(bio); } static void f2fs_write_end_io(struct bio *bio, int err) { - const int uptodate = test_bit(BIO_UPTODATE, bio-bi_flags); - struct bio_vec *bvec = bio-bi_io_vec + bio-bi_vcnt - 1; - struct f2fs_sb_info *sbi = F2FS_SB(bvec-bv_page-mapping-host-i_sb); + struct f2fs_sb_info *sbi = NULL; + struct bio_vec *bvec; + int i; - do { + bio_for_each_segment_all(bvec, bio, i) { struct page *page = bvec-bv_page; - if (--bvec = bio-bi_io_vec) - prefetchw(bvec-bv_page-flags); + if (!sbi) + sbi = F2FS_SB(bvec-bv_page-mapping-host-i_sb); - if (unlikely(!uptodate)) { + if (unlikely(err)) { SetPageError(page); set_bit(AS_EIO, page-mapping-flags); set_ckpt_flags(sbi-ckpt, CP_ERROR_FLAG); @@ -67,7 +64,7 @@ static void f2fs_write_end_io(struct bio *bio, int err) } end_page_writeback(page); dec_page_count(sbi, F2FS_WRITEBACK); - } while (bvec = bio-bi_io_vec); + } if (bio-bi_private) complete(bio-bi_private); @@ -91,7 +88,7 @@ static struct bio *__bio_alloc(struct f2fs_sb_info *sbi, block_t blk_addr, bio = bio_alloc(GFP_NOIO, npages); bio-bi_bdev = sbi-sb-s_bdev; - bio-bi_sector = SECTOR_FROM_BLOCK(sbi, blk_addr); + bio-bi_iter.bi_sector = SECTOR_FROM_BLOCK(sbi, blk_addr); bio-bi_end_io = is_read ? f2fs_read_end_io : f2fs_write_end_io; return bio; diff --git a/include/trace/events/f2fs.h b/include/trace/events/f2fs.h index 3b9f28d..67f38fa 100644 --- a/include/trace/events/f2fs.h +++ b/include/trace/events/f2fs.h @@ -629,8 +629,8 @@ DECLARE_EVENT_CLASS(f2fs__submit_bio, __entry-dev= sb-s_dev; __entry-rw = rw; __entry-type = type; - __entry-sector = bio-bi_sector; - __entry-size = bio-bi_size; + __entry-sector = bio-bi_iter.bi_sector; + __entry-size = bio-bi_iter.bi_size; ), TP_printk(dev = (%d,%d), %s%s, %s, sector = %lld, size = %u, -- 1.8.4.474.g128a96c Thanks, 2014-01-29 (수), 11:05 +1100, Stephen Rothwell: Hi all, On Tue, 28 Jan 2014 15:52:29 -0700 Jens Axboe ax...@kernel.dk wrote: On Tue, Jan 28 2014, Jens Axboe wrote: This is the pull request for the core block IO changes for 3.14. The major piece in here is the immutable bio_ve series from Kent, the rest is fairly minor. It was supposed to go in last round, but various issues pushed it to this release instead. The pull request contains: - Various smaller blk-mq fixes from different folks. Nothing major here, just minor fixes and cleanups. - Fix for a memory leak in the error path in the block ioctl code from Christian Engelmayer. - Header export fix from CaiZhiyong. - Finally the immutable biovec changes from Kent Overstreet. This enables some nice future work on making arbitrarily sized bios possible, and splitting more efficient. Related fixes to immutable bio_vecs: - dm-cache immutable fixup from Mike Snitzer. - btrfs immutable fixup from Muthu Kumar. - bio-integrity fix from Nic Bellinger,