Hi all, After merging the device-mapper tree, today's linux-next build (x86_64 allmodconfig) failed like this: drivers/md/dm-writecache.c: In function 'writecache_dtr': drivers/md/dm-writecache.c:1799:3: error: implicit declaration of function 'bioset_free'; did you mean 'bvec_free'? [-Werror=implicit-function-declaration] bioset_free(wc->bio_set); ^~~~~~~~~~~ bvec_free drivers/md/dm-writecache.c: In function 'writecache_ctr': drivers/md/dm-writecache.c:1929:17: error: implicit declaration of function 'bioset_create'; did you mean 'bioset_exit'? [-Werror=implicit-function-declaration] wc->bio_set = bioset_create(BIO_POOL_SIZE, ^~~~~~~~~~~~~ bioset_exit drivers/md/dm-writecache.c:1929:15: warning: assignment makes pointer from integer without a cast [-Wint-conversion] wc->bio_set = bioset_create(BIO_POOL_SIZE, ^ Caused by commit 2105231db61b ("dm: add writecache target") interacting with commit dad08527525f ("block: Drop bioset_create()") from the block tree. Can we please consider not immediately dropping APIs if at all possible. :-( I have added the following merge fix patch (hopefully this is enough): From: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> Date: Thu, 31 May 2018 14:06:10 +1000 Subject: [PATCH] dm: fixup for "block: Drop bioset_create()" Signed-off-by: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> --- drivers/md/dm-writecache.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/drivers/md/dm-writecache.c b/drivers/md/dm-writecache.c index 844c4fb2fcfc..b95f1f0e199d 100644 --- a/drivers/md/dm-writecache.c +++ b/drivers/md/dm-writecache.c @@ -211,7 +211,7 @@ struct dm_writecache { struct completion flush_completion; struct bio *flush_bio; - struct bio_set *bio_set; + struct bio_set bio_set; mempool_t *copy_pool; struct dm_kcopyd_client *dm_kcopyd; @@ -1494,7 +1494,7 @@ static void __writecache_writeback_pmem(struct dm_writecache *wc, struct writeba max_pages = e->wc_list_contiguous; - bio = bio_alloc_bioset(GFP_NOIO, max_pages, wc->bio_set); + bio = bio_alloc_bioset(GFP_NOIO, max_pages, &wc->bio_set); wb = container_of(bio, struct writeback_struct, bio); wb->wc = wc; wb->bio.bi_end_io = writecache_writeback_endio; @@ -1795,8 +1795,7 @@ static void writecache_dtr(struct dm_target *ti) if (wc->flush_thread) kthread_stop(wc->flush_thread); - if (wc->bio_set) - bioset_free(wc->bio_set); + bioset_exit(&wc->bio_set); mempool_destroy(wc->copy_pool); @@ -1926,11 +1925,10 @@ static int writecache_ctr(struct dm_target *ti, unsigned argc, char **argv) } if (WC_MODE_PMEM(wc)) { - wc->bio_set = bioset_create(BIO_POOL_SIZE, + r = bioset_init(&wc->bio_set, BIO_POOL_SIZE, offsetof(struct writeback_struct, bio), BIOSET_NEED_BVECS); - if (!wc->bio_set) { - r = -ENOMEM; + if (r) { ti->error = "Could not allocate bio set"; goto bad; } -- 2.17.0 -- Cheers, Stephen Rothwell
Attachment:
pgpD7BBlwggq3.pgp
Description: OpenPGP digital signature