Message ID | 1469549700-9732-1-git-send-email-paolo.valente@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi, [auto build test WARNING on block/for-next] [also build test WARNING on v4.7 next-20160726] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Paolo-Valente/block-add-missing-group-association-in-bio-cloning-functions/20160727-005044 base: https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git for-next config: x86_64-randconfig-x015-201630 (attached as .config) compiler: gcc-6 (Debian 6.1.1-9) 6.1.1 20160705 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All warnings (new ones prefixed by >>): In file included from block/bio.c:20:0: include/linux/bio.h: In function 'bio_clone_blkcg_association': >> include/linux/bio.h:480:30: warning: 'return' with a value, in function returning void struct bio *src) { return 0; } ^ include/linux/bio.h:479:20: note: declared here static inline void bio_clone_blkcg_association(struct bio *dst, ^~~~~~~~~~~~~~~~~~~~~~~~~~~ vim +/return +480 include/linux/bio.h 464 void zero_fill_bio(struct bio *bio); 465 extern struct bio_vec *bvec_alloc(gfp_t, int, unsigned long *, mempool_t *); 466 extern void bvec_free(mempool_t *, struct bio_vec *, unsigned int); 467 extern unsigned int bvec_nr_vecs(unsigned short idx); 468 469 #ifdef CONFIG_BLK_CGROUP 470 int bio_associate_blkcg(struct bio *bio, struct cgroup_subsys_state *blkcg_css); 471 int bio_associate_current(struct bio *bio); 472 void bio_disassociate_task(struct bio *bio); 473 void bio_clone_blkcg_association(struct bio *dst, struct bio *src); 474 #else /* CONFIG_BLK_CGROUP */ 475 static inline int bio_associate_blkcg(struct bio *bio, 476 struct cgroup_subsys_state *blkcg_css) { return 0; } 477 static inline int bio_associate_current(struct bio *bio) { return -ENOENT; } 478 static inline void bio_disassociate_task(struct bio *bio) { } 479 static inline void bio_clone_blkcg_association(struct bio *dst, > 480 struct bio *src) { return 0; } 481 #endif /* CONFIG_BLK_CGROUP */ 482 483 #ifdef CONFIG_HIGHMEM 484 /* 485 * remember never ever reenable interrupts between a bvec_kmap_irq and 486 * bvec_kunmap_irq! 487 */ 488 static inline char *bvec_kmap_irq(struct bio_vec *bvec, unsigned long *flags) --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
diff --git a/block/bio.c b/block/bio.c index 0e4aa42..4623869 100644 --- a/block/bio.c +++ b/block/bio.c @@ -579,6 +579,8 @@ void __bio_clone_fast(struct bio *bio, struct bio *bio_src) bio->bi_rw = bio_src->bi_rw; bio->bi_iter = bio_src->bi_iter; bio->bi_io_vec = bio_src->bi_io_vec; + + bio_clone_blkcg_association(bio, bio_src); } EXPORT_SYMBOL(__bio_clone_fast); @@ -684,6 +686,8 @@ integrity_clone: } } + bio_clone_blkcg_association(bio, bio_src); + return bio; } EXPORT_SYMBOL(bio_clone_bioset); @@ -2005,6 +2009,17 @@ void bio_disassociate_task(struct bio *bio) } } +/** + * bio_clone_blkcg_association - clone blkcg association from src to dst bio + * @dst: destination bio + * @src: source bio + */ +void bio_clone_blkcg_association(struct bio *dst, struct bio *src) +{ + if (src->bi_css) + WARN_ON(bio_associate_blkcg(dst, src->bi_css)); +} + #endif /* CONFIG_BLK_CGROUP */ static void __init biovec_init_slabs(void) diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c index 75533ad..92fe3f8 100644 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c @@ -2696,12 +2696,6 @@ struct bio *btrfs_bio_clone(struct bio *bio, gfp_t gfp_mask) btrfs_bio->csum = NULL; btrfs_bio->csum_allocated = NULL; btrfs_bio->end_io = NULL; - -#ifdef CONFIG_BLK_CGROUP - /* FIXME, put this into bio_clone_bioset */ - if (bio->bi_css) - bio_associate_blkcg(new, bio->bi_css); -#endif } return new; } diff --git a/include/linux/bio.h b/include/linux/bio.h index 9faebf7..c9403b7 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h @@ -527,11 +527,14 @@ extern unsigned int bvec_nr_vecs(unsigned short idx); int bio_associate_blkcg(struct bio *bio, struct cgroup_subsys_state *blkcg_css); int bio_associate_current(struct bio *bio); void bio_disassociate_task(struct bio *bio); +void bio_clone_blkcg_association(struct bio *dst, struct bio *src); #else /* CONFIG_BLK_CGROUP */ static inline int bio_associate_blkcg(struct bio *bio, struct cgroup_subsys_state *blkcg_css) { return 0; } static inline int bio_associate_current(struct bio *bio) { return -ENOENT; } static inline void bio_disassociate_task(struct bio *bio) { } +static inline void bio_clone_blkcg_association(struct bio *dst, + struct bio *src) { return 0; } #endif /* CONFIG_BLK_CGROUP */ #ifdef CONFIG_HIGHMEM