From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D9892C43382 for ; Thu, 27 Sep 2018 01:48:15 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 7A29F2152A for ; Thu, 27 Sep 2018 01:48:15 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7A29F2152A Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727146AbeI0IEB (ORCPT ); Thu, 27 Sep 2018 04:04:01 -0400 Received: from mx2.suse.de ([195.135.220.15]:40318 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726653AbeI0IEA (ORCPT ); Thu, 27 Sep 2018 04:04:00 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay1.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 5AA71AFAF; Thu, 27 Sep 2018 01:48:10 +0000 (UTC) Subject: Re: [PATCH] split if-condition code in bch_cache_set_alloc To: Dongbo Cao Cc: kent.overstreet@gmail.com, linux-bcache@vger.kernel.org, linux-kernel@vger.kernel.org References: <20180926090032.1881-1-cdbdyx@163.com> From: Coly Li Message-ID: Date: Thu, 27 Sep 2018 09:48:03 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.0 MIME-Version: 1.0 In-Reply-To: <20180926090032.1881-1-cdbdyx@163.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 9/26/18 5:00 PM, Dongbo Cao wrote: > rebase my local code and commit it again. > > Signed-off-by: Dongbo Cao Hi Dongbo, The above commit log does not explain why you make this change (it might belong to changelog). Could you please to make it to be more informative ? Thanks. Coly Li > --- > drivers/md/bcache/super.c | 114 +++++++++++++++++++++++++++++++------- > 1 file changed, 93 insertions(+), 21 deletions(-) > > diff --git a/drivers/md/bcache/super.c b/drivers/md/bcache/super.c > index a2cc354c..03099c4c 100644 > --- a/drivers/md/bcache/super.c > +++ b/drivers/md/bcache/super.c > @@ -1691,10 +1691,13 @@ void bch_cache_set_unregister(struct cache_set *c) > struct cache_set *bch_cache_set_alloc(struct cache_sb *sb) > { > int iter_size; > - struct cache_set *c = kzalloc(sizeof(struct cache_set), GFP_KERNEL); > + const char *err = NULL; > > - if (!c) > - return NULL; > + struct cache_set *c = kzalloc(sizeof(struct cache_set), GFP_KERNEL); > + if (!c) { > + err = "cache_set alloc failed"; > + goto err_cache_set_alloc; > + } > > __module_get(THIS_MODULE); > closure_init(&c->cl, NULL); > @@ -1750,22 +1753,65 @@ struct cache_set *bch_cache_set_alloc(struct cache_sb *sb) > iter_size = (sb->bucket_size / sb->block_size + 1) * > sizeof(struct btree_iter_set); > > - if (!(c->devices = kcalloc(c->nr_uuids, sizeof(void *), GFP_KERNEL)) || > - mempool_init_slab_pool(&c->search, 32, bch_search_cache) || > - mempool_init_kmalloc_pool(&c->bio_meta, 2, > - sizeof(struct bbio) + sizeof(struct bio_vec) * > - bucket_pages(c)) || > - mempool_init_kmalloc_pool(&c->fill_iter, 1, iter_size) || > - bioset_init(&c->bio_split, 4, offsetof(struct bbio, bio), > - BIOSET_NEED_BVECS|BIOSET_NEED_RESCUER) || > - !(c->uuids = alloc_bucket_pages(GFP_KERNEL, c)) || > - !(c->moving_gc_wq = alloc_workqueue("bcache_gc", > - WQ_MEM_RECLAIM, 0)) || > - bch_journal_alloc(c) || > - bch_btree_cache_alloc(c) || > - bch_open_buckets_alloc(c) || > - bch_bset_sort_state_init(&c->sort, ilog2(c->btree_pages))) > - goto err; > + c->devices = kcalloc(c->nr_uuids, sizeof(void *), GFP_KERNEL); > + if (!c->devices) { > + err = "c->devices alloc failed"; > + goto err_devices_alloc; > + } > + > + if (mempool_init_slab_pool(&c->search, 32, bch_search_cache)) { > + err = "c->search alloc failed"; > + goto err_search_alloc; > + } > + > + if (mempool_init_kmalloc_pool(&c->bio_meta, 2, sizeof(struct bbio) > + + sizeof(struct bio_vec) * bucket_pages(c))) { > + err = "c->bio_meta alloc failed"; > + goto err_bio_meta_alloc; > + } > + > + if (mempool_init_kmalloc_pool(&c->fill_iter, 1, iter_size)) { > + err = "c->fill_iter alloc failed"; > + goto err_fill_iter_alloc; > + } > + > + if (bioset_init(&c->bio_split, 4, offsetof(struct bbio, bio), > + BIOSET_NEED_BVECS|BIOSET_NEED_RESCUER)) { > + err = "c->bio_split init failed"; > + goto err_bio_split_init; > + } > + > + c->uuids = alloc_bucket_pages(GFP_KERNEL, c); > + if (!c->uuids) { > + err = "c->uuids alloc failed"; > + goto err_uuids_alloc; > + } > + > + c->moving_gc_wq = alloc_workqueue("bcache_gc", WQ_MEM_RECLAIM, 0); > + if (!c->moving_gc_wq) { > + err = "c->moving_gc_wq alloc failed"; > + goto err_moving_gc_wq_alloc; > + } > + > + if (bch_journal_alloc(c)) { > + err = "bch_journal_alloc failed"; > + goto err_bch_journal_alloc; > + } > + > + if (bch_btree_cache_alloc(c)) { > + err = "bch_btree_cache_alloc failed"; > + goto err_bch_btree_cache_alloc; > + } > + > + if (bch_open_buckets_alloc(c)) { > + err = "bch_open_buckets_alloc failed"; > + goto err_bch_open_buckets_alloc; > + } > + > + if (bch_bset_sort_state_init(&c->sort, ilog2(c->btree_pages))) { > + err = "bch_bset_sort_state_init failed"; > + goto err_bch_bset_sort_state_init; > + } > > c->congested_read_threshold_us = 2000; > c->congested_write_threshold_us = 20000; > @@ -1773,8 +1819,34 @@ struct cache_set *bch_cache_set_alloc(struct cache_sb *sb) > WARN_ON(test_and_clear_bit(CACHE_SET_IO_DISABLE, &c->flags)); > > return c; > -err: > - bch_cache_set_unregister(c); > + > +err_bch_bset_sort_state_init: > + bch_open_buckets_free(c); > +err_bch_open_buckets_alloc: > + bch_btree_cache_free(c); > +err_bch_btree_cache_alloc: > + bch_journal_free(c); > +err_bch_journal_alloc: > + destroy_workqueue(c->moving_gc_wq); > +err_moving_gc_wq_alloc: > + free_pages((unsigned long) c->uuids, ilog2(bucket_pages(c))); > +err_uuids_alloc: > + bioset_exit(&c->bio_split); > +err_bio_split_init: > + mempool_exit(&c->fill_iter); > +err_fill_iter_alloc: > + mempool_exit(&c->bio_meta); > +err_bio_meta_alloc: > + mempool_exit(&c->search); > +err_search_alloc: > + kfree(c->devices); > +err_devices_alloc: > + bch_cache_accounting_destroy(&c->accounting); > + kfree(c); > + module_put(THIS_MODULE); > +err_cache_set_alloc: > + if (err) > + pr_notice("error cache set %s: %s", c->sb.set_uuid, err); > return NULL; > } >