From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6E49017F for ; Sun, 23 May 2021 07:58:51 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1621756730; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9q10j6pxqYkic7UkxlBRvW8G0CcNR1ybReXpt+Eyutc=; b=qnPLP3bDDyKEU+PsCx8mJFdQOt2c6N6KfR04BaZvOBN2hIgT+44QgHQPq6amTymZHv9wcT uQVXSSk1rH3OUOoEsLwbb6c2410es/n0Jb1WbtRq1aNjKmhgiBJGvGDkce3mLJhbLBmP8f 60+5EL1xbSXqQ3Qs+WErJPexJ6ccsMY= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1621756730; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9q10j6pxqYkic7UkxlBRvW8G0CcNR1ybReXpt+Eyutc=; b=QUNsVeYK1qK3iqbouwKdbXcYR8JyMP3yHs0sImd7PFWvdFc0BIppcYnYdXcifwFqde0z8E p++NXvhUiV1DEoDg== Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id C6046AB6D; Sun, 23 May 2021 07:58:49 +0000 (UTC) Subject: Re: [PATCH 06/26] brd: convert to blk_alloc_disk/blk_cleanup_disk To: Christoph Hellwig , Jens Axboe , Geert Uytterhoeven , Chris Zankel , Max Filippov , Philipp Reisner , Lars Ellenberg , Jim Paris , Joshua Morris , Philip Kelleher , Minchan Kim , Nitin Gupta , Matias Bjorling , Coly Li , Mike Snitzer , Song Liu , Maxim Levitsky , Alex Dubov , Ulf Hansson , Dan Williams , Vishal Verma , Dave Jiang , Heiko Carstens , Vasily Gorbik , Christian Borntraeger Cc: linux-block@vger.kernel.org, dm-devel@redhat.com, linux-m68k@lists.linux-m68k.org, linux-xtensa@linux-xtensa.org, drbd-dev@lists.linbit.com, linuxppc-dev@lists.ozlabs.org, linux-bcache@vger.kernel.org, linux-raid@vger.kernel.org, linux-mmc@vger.kernel.org, nvdimm@lists.linux.dev, linux-nvme@lists.infradead.org, linux-s390@vger.kernel.org References: <20210521055116.1053587-1-hch@lst.de> <20210521055116.1053587-7-hch@lst.de> From: Hannes Reinecke Message-ID: <83fc5cdc-53ed-0bd3-fbe8-93d0afd20771@suse.de> Date: Sun, 23 May 2021 09:58:48 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.0 X-Mailing-List: nvdimm@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 In-Reply-To: <20210521055116.1053587-7-hch@lst.de> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit On 5/21/21 7:50 AM, Christoph Hellwig wrote: > Convert the brd driver to use the blk_alloc_disk and blk_cleanup_disk > helpers to simplify gendisk and request_queue allocation. This also > allows to remove the request_queue pointer in struct request_queue, > and to simplify the initialization as blk_cleanup_disk can be called > on any disk returned from blk_alloc_disk. > > Signed-off-by: Christoph Hellwig > --- > drivers/block/brd.c | 94 ++++++++++++++++----------------------------- > 1 file changed, 33 insertions(+), 61 deletions(-) > > diff --git a/drivers/block/brd.c b/drivers/block/brd.c > index 7562cf30b14e..95694113e38e 100644 > --- a/drivers/block/brd.c > +++ b/drivers/block/brd.c > @@ -38,9 +38,7 @@ > * device). > */ > struct brd_device { > - int brd_number; > - > - struct request_queue *brd_queue; > + int brd_number; > struct gendisk *brd_disk; > struct list_head brd_list; > > @@ -372,7 +370,7 @@ static LIST_HEAD(brd_devices); > static DEFINE_MUTEX(brd_devices_mutex); > static struct dentry *brd_debugfs_dir; > > -static struct brd_device *brd_alloc(int i) > +static int brd_alloc(int i) > { > struct brd_device *brd; > struct gendisk *disk; > @@ -380,64 +378,55 @@ static struct brd_device *brd_alloc(int i) > > brd = kzalloc(sizeof(*brd), GFP_KERNEL); > if (!brd) > - goto out; > + return -ENOMEM; > brd->brd_number = i; > spin_lock_init(&brd->brd_lock); > INIT_RADIX_TREE(&brd->brd_pages, GFP_ATOMIC); > > - brd->brd_queue = blk_alloc_queue(NUMA_NO_NODE); > - if (!brd->brd_queue) > - goto out_free_dev; > - > snprintf(buf, DISK_NAME_LEN, "ram%d", i); > if (!IS_ERR_OR_NULL(brd_debugfs_dir)) > debugfs_create_u64(buf, 0444, brd_debugfs_dir, > &brd->brd_nr_pages); > > - /* This is so fdisk will align partitions on 4k, because of > - * direct_access API needing 4k alignment, returning a PFN > - * (This is only a problem on very small devices <= 4M, > - * otherwise fdisk will align on 1M. Regardless this call > - * is harmless) > - */ > - blk_queue_physical_block_size(brd->brd_queue, PAGE_SIZE); > - disk = brd->brd_disk = alloc_disk(max_part); > + disk = brd->brd_disk = blk_alloc_disk(NUMA_NO_NODE); > if (!disk) > - goto out_free_queue; > + goto out_free_dev; > + > disk->major = RAMDISK_MAJOR; > disk->first_minor = i * max_part; > + disk->minors = max_part; > disk->fops = &brd_fops; > disk->private_data = brd; > disk->flags = GENHD_FL_EXT_DEVT; > strlcpy(disk->disk_name, buf, DISK_NAME_LEN); > set_capacity(disk, rd_size * 2); > + > + /* > + * This is so fdisk will align partitions on 4k, because of > + * direct_access API needing 4k alignment, returning a PFN > + * (This is only a problem on very small devices <= 4M, > + * otherwise fdisk will align on 1M. Regardless this call > + * is harmless) > + */ > + blk_queue_physical_block_size(disk->queue, PAGE_SIZE); > Maybe converting the comment to refer to 'PAGE_SIZE' instead of 4k while you're at it ... > /* Tell the block layer that this is not a rotational device */ > - blk_queue_flag_set(QUEUE_FLAG_NONROT, brd->brd_queue); > - blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, brd->brd_queue); > + blk_queue_flag_set(QUEUE_FLAG_NONROT, disk->queue); > + blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, disk->queue); > + add_disk(disk); > + list_add_tail(&brd->brd_list, &brd_devices); > > - return brd; > + return 0; > > -out_free_queue: > - blk_cleanup_queue(brd->brd_queue); > out_free_dev: > kfree(brd); > -out: > - return NULL; > -} > - > -static void brd_free(struct brd_device *brd) > -{ > - put_disk(brd->brd_disk); > - blk_cleanup_queue(brd->brd_queue); > - brd_free_pages(brd); > - kfree(brd); > + return -ENOMEM; > } > > static void brd_probe(dev_t dev) > { > - struct brd_device *brd; > int i = MINOR(dev) / max_part; > + struct brd_device *brd; > > mutex_lock(&brd_devices_mutex); > list_for_each_entry(brd, &brd_devices, brd_list) { > @@ -445,13 +434,7 @@ static void brd_probe(dev_t dev) > goto out_unlock; > } > > - brd = brd_alloc(i); > - if (brd) { > - brd->brd_disk->queue = brd->brd_queue; > - add_disk(brd->brd_disk); > - list_add_tail(&brd->brd_list, &brd_devices); > - } > - > + brd_alloc(i); > out_unlock: > mutex_unlock(&brd_devices_mutex); > } > @@ -460,7 +443,9 @@ static void brd_del_one(struct brd_device *brd) > { > list_del(&brd->brd_list); > del_gendisk(brd->brd_disk); > - brd_free(brd); > + blk_cleanup_disk(brd->brd_disk); > + brd_free_pages(brd); > + kfree(brd); > } > > static inline void brd_check_and_reset_par(void) > @@ -485,7 +470,7 @@ static inline void brd_check_and_reset_par(void) > static int __init brd_init(void) > { > struct brd_device *brd, *next; > - int i; > + int err, i; > > /* > * brd module now has a feature to instantiate underlying device > @@ -511,22 +496,11 @@ static int __init brd_init(void) > > mutex_lock(&brd_devices_mutex); > for (i = 0; i < rd_nr; i++) { > - brd = brd_alloc(i); > - if (!brd) > + err = brd_alloc(i); > + if (err) > goto out_free; > - list_add_tail(&brd->brd_list, &brd_devices); > } > > - /* point of no return */ > - > - list_for_each_entry(brd, &brd_devices, brd_list) { > - /* > - * associate with queue just before adding disk for > - * avoiding to mess up failure path > - */ > - brd->brd_disk->queue = brd->brd_queue; > - add_disk(brd->brd_disk); > - } > mutex_unlock(&brd_devices_mutex); > > pr_info("brd: module loaded\n"); > @@ -535,15 +509,13 @@ static int __init brd_init(void) > out_free: > debugfs_remove_recursive(brd_debugfs_dir); > > - list_for_each_entry_safe(brd, next, &brd_devices, brd_list) { > - list_del(&brd->brd_list); > - brd_free(brd); > - } > + list_for_each_entry_safe(brd, next, &brd_devices, brd_list) > + brd_del_one(brd); > mutex_unlock(&brd_devices_mutex); > unregister_blkdev(RAMDISK_MAJOR, "ramdisk"); > > pr_info("brd: module NOT loaded !!!\n"); > - return -ENOMEM; > + return err; > } > > static void __exit brd_exit(void) > Other than that: Reviewed-by: Hannes Reinecke Cheers, Hannes -- Dr. Hannes Reinecke Kernel Storage Architect hare@suse.de +49 911 74053 688 SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg HRB 36809 (AG Nürnberg), Geschäftsführer: Felix Imendörffer 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=-15.6 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=unavailable 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 DF72EC04FF3 for ; Mon, 24 May 2021 19:58:12 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9E3B561400 for ; Mon, 24 May 2021 19:58:12 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9E3B561400 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-nvme-bounces+linux-nvme=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From: References:Cc:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=6RQgpxF6u35phL1N2xPEk9LL2hAF33lYoUlvV4T4TG8=; b=rgESKviIyEiRSAA5xiW1x43bn I2i9C+jEHb4+06TQHUu1GjEYXO3RtmywVM46EyienyOSRY26MGFdQPFQMk18ilPiNT1RKoSkKTP6r PUh1s9KrEFC+9JvviI3JtNG0Dp7CSxZOFEG+JipzTJ+nkH4uVd1yjMbSNrHj7CfDXEliG9jq08mmP u/GjhJffOsYf54RtIWgYl2Nn/ihgI1c54QxxnBGEkTH1/30/O8aIR/00qEwzguFdmsayKndRORVjx e/igDbbK0ISPbsiJtepCh2upQSpQon7PnQzubeRCWB+8SahyW81DpeDWq79YFPaBVWhZkz0IrV9Kz FQCX/zJMA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1llGi9-001lY4-21; Mon, 24 May 2021 19:58:01 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1lkj0g-0040jY-C4 for linux-nvme@desiato.infradead.org; Sun, 23 May 2021 07:59:45 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: Content-Type:In-Reply-To:MIME-Version:Date:Message-ID:From:References:Cc:To: Subject:Sender:Reply-To:Content-ID:Content-Description; bh=9q10j6pxqYkic7UkxlBRvW8G0CcNR1ybReXpt+Eyutc=; b=R+7w2wTfRQRMe4pi8ixiV5waGw ci7DX23U7XofOyaqkWl7+K3A0wexo1pDFqmAeBhjQOE8D0I3DDnPqKTfeBFkV2sbYBxRe4RC+u+u9 TRmu5xcco/8Lqe2YcvXKPxjjV9zzyOHvVM096/ZBjSZxPauN6atKQKj0j1K6w2eGymABq1G8w7YsR ZS38VFbdUMoRewjISVQdGARUE3+F4IWXA1UzZnAbErPTtBNKxbyX/5T2CHHMAeM8RwaAHu88zbtKp 4r2SJWiUFvNvlLUz0TOtB6+sTNUJi3YA/5zr+JFwSH7krHQ+FXDovuzrFT+0ixvhd6FuWBInh3pUP pyrv65UA==; Received: from mx2.suse.de ([195.135.220.15]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lkj0d-000MRc-9W for linux-nvme@lists.infradead.org; Sun, 23 May 2021 07:58:53 +0000 X-Virus-Scanned: by amavisd-new at test-mx.suse.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1621756730; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9q10j6pxqYkic7UkxlBRvW8G0CcNR1ybReXpt+Eyutc=; b=qnPLP3bDDyKEU+PsCx8mJFdQOt2c6N6KfR04BaZvOBN2hIgT+44QgHQPq6amTymZHv9wcT uQVXSSk1rH3OUOoEsLwbb6c2410es/n0Jb1WbtRq1aNjKmhgiBJGvGDkce3mLJhbLBmP8f 60+5EL1xbSXqQ3Qs+WErJPexJ6ccsMY= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1621756730; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9q10j6pxqYkic7UkxlBRvW8G0CcNR1ybReXpt+Eyutc=; b=QUNsVeYK1qK3iqbouwKdbXcYR8JyMP3yHs0sImd7PFWvdFc0BIppcYnYdXcifwFqde0z8E p++NXvhUiV1DEoDg== Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id C6046AB6D; Sun, 23 May 2021 07:58:49 +0000 (UTC) Subject: Re: [PATCH 06/26] brd: convert to blk_alloc_disk/blk_cleanup_disk To: Christoph Hellwig , Jens Axboe , Geert Uytterhoeven , Chris Zankel , Max Filippov , Philipp Reisner , Lars Ellenberg , Jim Paris , Joshua Morris , Philip Kelleher , Minchan Kim , Nitin Gupta , Matias Bjorling , Coly Li , Mike Snitzer , Song Liu , Maxim Levitsky , Alex Dubov , Ulf Hansson , Dan Williams , Vishal Verma , Dave Jiang , Heiko Carstens , Vasily Gorbik , Christian Borntraeger Cc: linux-block@vger.kernel.org, dm-devel@redhat.com, linux-m68k@lists.linux-m68k.org, linux-xtensa@linux-xtensa.org, drbd-dev@lists.linbit.com, linuxppc-dev@lists.ozlabs.org, linux-bcache@vger.kernel.org, linux-raid@vger.kernel.org, linux-mmc@vger.kernel.org, nvdimm@lists.linux.dev, linux-nvme@lists.infradead.org, linux-s390@vger.kernel.org References: <20210521055116.1053587-1-hch@lst.de> <20210521055116.1053587-7-hch@lst.de> From: Hannes Reinecke Message-ID: <83fc5cdc-53ed-0bd3-fbe8-93d0afd20771@suse.de> Date: Sun, 23 May 2021 09:58:48 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.0 MIME-Version: 1.0 In-Reply-To: <20210521055116.1053587-7-hch@lst.de> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210523_005851_655751_D55B5067 X-CRM114-Status: GOOD ( 35.62 ) X-Mailman-Approved-At: Mon, 24 May 2021 11:59:45 -0700 X-BeenThere: linux-nvme@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "Linux-nvme" Errors-To: linux-nvme-bounces+linux-nvme=archiver.kernel.org@lists.infradead.org T24gNS8yMS8yMSA3OjUwIEFNLCBDaHJpc3RvcGggSGVsbHdpZyB3cm90ZToKPiBDb252ZXJ0IHRo ZSBicmQgZHJpdmVyIHRvIHVzZSB0aGUgYmxrX2FsbG9jX2Rpc2sgYW5kIGJsa19jbGVhbnVwX2Rp c2sKPiBoZWxwZXJzIHRvIHNpbXBsaWZ5IGdlbmRpc2sgYW5kIHJlcXVlc3RfcXVldWUgYWxsb2Nh dGlvbi4gIFRoaXMgYWxzbwo+IGFsbG93cyB0byByZW1vdmUgdGhlIHJlcXVlc3RfcXVldWUgcG9p bnRlciBpbiBzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSwKPiBhbmQgdG8gc2ltcGxpZnkgdGhlIGluaXRp YWxpemF0aW9uIGFzIGJsa19jbGVhbnVwX2Rpc2sgY2FuIGJlIGNhbGxlZAo+IG9uIGFueSBkaXNr IHJldHVybmVkIGZyb20gYmxrX2FsbG9jX2Rpc2suCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0 b3BoIEhlbGx3aWcgPGhjaEBsc3QuZGU+Cj4gLS0tCj4gICBkcml2ZXJzL2Jsb2NrL2JyZC5jIHwg OTQgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gICAxIGZp bGUgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgNjEgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvYmxvY2svYnJkLmMgYi9kcml2ZXJzL2Jsb2NrL2JyZC5jCj4gaW5kZXgg NzU2MmNmMzBiMTRlLi45NTY5NDExM2UzOGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ibG9jay9i cmQuYwo+ICsrKyBiL2RyaXZlcnMvYmxvY2svYnJkLmMKPiBAQCAtMzgsOSArMzgsNyBAQAo+ICAg ICogZGV2aWNlKS4KPiAgICAqLwo+ICAgc3RydWN0IGJyZF9kZXZpY2Ugewo+IC0JaW50CQlicmRf bnVtYmVyOwo+IC0KPiAtCXN0cnVjdCByZXF1ZXN0X3F1ZXVlCSpicmRfcXVldWU7Cj4gKwlpbnQJ CQlicmRfbnVtYmVyOwo+ICAgCXN0cnVjdCBnZW5kaXNrCQkqYnJkX2Rpc2s7Cj4gICAJc3RydWN0 IGxpc3RfaGVhZAlicmRfbGlzdDsKPiAgIAo+IEBAIC0zNzIsNyArMzcwLDcgQEAgc3RhdGljIExJ U1RfSEVBRChicmRfZGV2aWNlcyk7Cj4gICBzdGF0aWMgREVGSU5FX01VVEVYKGJyZF9kZXZpY2Vz X211dGV4KTsKPiAgIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpicmRfZGVidWdmc19kaXI7Cj4gICAK PiAtc3RhdGljIHN0cnVjdCBicmRfZGV2aWNlICpicmRfYWxsb2MoaW50IGkpCj4gK3N0YXRpYyBp bnQgYnJkX2FsbG9jKGludCBpKQo+ICAgewo+ICAgCXN0cnVjdCBicmRfZGV2aWNlICpicmQ7Cj4g ICAJc3RydWN0IGdlbmRpc2sgKmRpc2s7Cj4gQEAgLTM4MCw2NCArMzc4LDU1IEBAIHN0YXRpYyBz dHJ1Y3QgYnJkX2RldmljZSAqYnJkX2FsbG9jKGludCBpKQo+ICAgCj4gICAJYnJkID0ga3phbGxv YyhzaXplb2YoKmJyZCksIEdGUF9LRVJORUwpOwo+ICAgCWlmICghYnJkKQo+IC0JCWdvdG8gb3V0 Owo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICAgCWJyZC0+YnJkX251bWJlcgkJPSBpOwo+ICAgCXNw aW5fbG9ja19pbml0KCZicmQtPmJyZF9sb2NrKTsKPiAgIAlJTklUX1JBRElYX1RSRUUoJmJyZC0+ YnJkX3BhZ2VzLCBHRlBfQVRPTUlDKTsKPiAgIAo+IC0JYnJkLT5icmRfcXVldWUgPSBibGtfYWxs b2NfcXVldWUoTlVNQV9OT19OT0RFKTsKPiAtCWlmICghYnJkLT5icmRfcXVldWUpCj4gLQkJZ290 byBvdXRfZnJlZV9kZXY7Cj4gLQo+ICAgCXNucHJpbnRmKGJ1ZiwgRElTS19OQU1FX0xFTiwgInJh bSVkIiwgaSk7Cj4gICAJaWYgKCFJU19FUlJfT1JfTlVMTChicmRfZGVidWdmc19kaXIpKQo+ICAg CQlkZWJ1Z2ZzX2NyZWF0ZV91NjQoYnVmLCAwNDQ0LCBicmRfZGVidWdmc19kaXIsCj4gICAJCQkJ JmJyZC0+YnJkX25yX3BhZ2VzKTsKPiAgIAo+IC0JLyogVGhpcyBpcyBzbyBmZGlzayB3aWxsIGFs aWduIHBhcnRpdGlvbnMgb24gNGssIGJlY2F1c2Ugb2YKPiAtCSAqIGRpcmVjdF9hY2Nlc3MgQVBJ IG5lZWRpbmcgNGsgYWxpZ25tZW50LCByZXR1cm5pbmcgYSBQRk4KPiAtCSAqIChUaGlzIGlzIG9u bHkgYSBwcm9ibGVtIG9uIHZlcnkgc21hbGwgZGV2aWNlcyA8PSA0TSwKPiAtCSAqICBvdGhlcndp c2UgZmRpc2sgd2lsbCBhbGlnbiBvbiAxTS4gUmVnYXJkbGVzcyB0aGlzIGNhbGwKPiAtCSAqICBp cyBoYXJtbGVzcykKPiAtCSAqLwo+IC0JYmxrX3F1ZXVlX3BoeXNpY2FsX2Jsb2NrX3NpemUoYnJk LT5icmRfcXVldWUsIFBBR0VfU0laRSk7Cj4gLQlkaXNrID0gYnJkLT5icmRfZGlzayA9IGFsbG9j X2Rpc2sobWF4X3BhcnQpOwo+ICsJZGlzayA9IGJyZC0+YnJkX2Rpc2sgPSBibGtfYWxsb2NfZGlz ayhOVU1BX05PX05PREUpOwo+ICAgCWlmICghZGlzaykKPiAtCQlnb3RvIG91dF9mcmVlX3F1ZXVl Owo+ICsJCWdvdG8gb3V0X2ZyZWVfZGV2Owo+ICsKPiAgIAlkaXNrLT5tYWpvcgkJPSBSQU1ESVNL X01BSk9SOwo+ICAgCWRpc2stPmZpcnN0X21pbm9yCT0gaSAqIG1heF9wYXJ0Owo+ICsJZGlzay0+ bWlub3JzCQk9IG1heF9wYXJ0Owo+ICAgCWRpc2stPmZvcHMJCT0gJmJyZF9mb3BzOwo+ICAgCWRp c2stPnByaXZhdGVfZGF0YQk9IGJyZDsKPiAgIAlkaXNrLT5mbGFncwkJPSBHRU5IRF9GTF9FWFRf REVWVDsKPiAgIAlzdHJsY3B5KGRpc2stPmRpc2tfbmFtZSwgYnVmLCBESVNLX05BTUVfTEVOKTsK PiAgIAlzZXRfY2FwYWNpdHkoZGlzaywgcmRfc2l6ZSAqIDIpOwo+ICsJCj4gKwkvKgo+ICsJICog VGhpcyBpcyBzbyBmZGlzayB3aWxsIGFsaWduIHBhcnRpdGlvbnMgb24gNGssIGJlY2F1c2Ugb2YK PiArCSAqIGRpcmVjdF9hY2Nlc3MgQVBJIG5lZWRpbmcgNGsgYWxpZ25tZW50LCByZXR1cm5pbmcg YSBQRk4KPiArCSAqIChUaGlzIGlzIG9ubHkgYSBwcm9ibGVtIG9uIHZlcnkgc21hbGwgZGV2aWNl cyA8PSA0TSwKPiArCSAqICBvdGhlcndpc2UgZmRpc2sgd2lsbCBhbGlnbiBvbiAxTS4gUmVnYXJk bGVzcyB0aGlzIGNhbGwKPiArCSAqICBpcyBoYXJtbGVzcykKPiArCSAqLwo+ICsJYmxrX3F1ZXVl X3BoeXNpY2FsX2Jsb2NrX3NpemUoZGlzay0+cXVldWUsIFBBR0VfU0laRSk7Cj4gICAKCk1heWJl IGNvbnZlcnRpbmcgdGhlIGNvbW1lbnQgdG8gcmVmZXIgdG8gJ1BBR0VfU0laRScgaW5zdGVhZCBv ZiA0ayB3aGlsZSAKeW91J3JlIGF0IGl0IC4uLgoKPiAgIAkvKiBUZWxsIHRoZSBibG9jayBsYXll ciB0aGF0IHRoaXMgaXMgbm90IGEgcm90YXRpb25hbCBkZXZpY2UgKi8KPiAtCWJsa19xdWV1ZV9m bGFnX3NldChRVUVVRV9GTEFHX05PTlJPVCwgYnJkLT5icmRfcXVldWUpOwo+IC0JYmxrX3F1ZXVl X2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19BRERfUkFORE9NLCBicmQtPmJyZF9xdWV1ZSk7Cj4gKwli bGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19OT05ST1QsIGRpc2stPnF1ZXVlKTsKPiArCWJs a19xdWV1ZV9mbGFnX2NsZWFyKFFVRVVFX0ZMQUdfQUREX1JBTkRPTSwgZGlzay0+cXVldWUpOwo+ ICsJYWRkX2Rpc2soZGlzayk7Cj4gKwlsaXN0X2FkZF90YWlsKCZicmQtPmJyZF9saXN0LCAmYnJk X2RldmljZXMpOwo+ICAgCj4gLQlyZXR1cm4gYnJkOwo+ICsJcmV0dXJuIDA7Cj4gICAKPiAtb3V0 X2ZyZWVfcXVldWU6Cj4gLQlibGtfY2xlYW51cF9xdWV1ZShicmQtPmJyZF9xdWV1ZSk7Cj4gICBv dXRfZnJlZV9kZXY6Cj4gICAJa2ZyZWUoYnJkKTsKPiAtb3V0Ogo+IC0JcmV0dXJuIE5VTEw7Cj4g LX0KPiAtCj4gLXN0YXRpYyB2b2lkIGJyZF9mcmVlKHN0cnVjdCBicmRfZGV2aWNlICpicmQpCj4g LXsKPiAtCXB1dF9kaXNrKGJyZC0+YnJkX2Rpc2spOwo+IC0JYmxrX2NsZWFudXBfcXVldWUoYnJk LT5icmRfcXVldWUpOwo+IC0JYnJkX2ZyZWVfcGFnZXMoYnJkKTsKPiAtCWtmcmVlKGJyZCk7Cj4g KwlyZXR1cm4gLUVOT01FTTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQgYnJkX3Byb2JlKGRl dl90IGRldikKPiAgIHsKPiAtCXN0cnVjdCBicmRfZGV2aWNlICpicmQ7Cj4gICAJaW50IGkgPSBN SU5PUihkZXYpIC8gbWF4X3BhcnQ7Cj4gKwlzdHJ1Y3QgYnJkX2RldmljZSAqYnJkOwo+ICAgCj4g ICAJbXV0ZXhfbG9jaygmYnJkX2RldmljZXNfbXV0ZXgpOwo+ICAgCWxpc3RfZm9yX2VhY2hfZW50 cnkoYnJkLCAmYnJkX2RldmljZXMsIGJyZF9saXN0KSB7Cj4gQEAgLTQ0NSwxMyArNDM0LDcgQEAg c3RhdGljIHZvaWQgYnJkX3Byb2JlKGRldl90IGRldikKPiAgIAkJCWdvdG8gb3V0X3VubG9jazsK PiAgIAl9Cj4gICAKPiAtCWJyZCA9IGJyZF9hbGxvYyhpKTsKPiAtCWlmIChicmQpIHsKPiAtCQli cmQtPmJyZF9kaXNrLT5xdWV1ZSA9IGJyZC0+YnJkX3F1ZXVlOwo+IC0JCWFkZF9kaXNrKGJyZC0+ YnJkX2Rpc2spOwo+IC0JCWxpc3RfYWRkX3RhaWwoJmJyZC0+YnJkX2xpc3QsICZicmRfZGV2aWNl cyk7Cj4gLQl9Cj4gLQo+ICsJYnJkX2FsbG9jKGkpOwo+ICAgb3V0X3VubG9jazoKPiAgIAltdXRl eF91bmxvY2soJmJyZF9kZXZpY2VzX211dGV4KTsKPiAgIH0KPiBAQCAtNDYwLDcgKzQ0Myw5IEBA IHN0YXRpYyB2b2lkIGJyZF9kZWxfb25lKHN0cnVjdCBicmRfZGV2aWNlICpicmQpCj4gICB7Cj4g ICAJbGlzdF9kZWwoJmJyZC0+YnJkX2xpc3QpOwo+ICAgCWRlbF9nZW5kaXNrKGJyZC0+YnJkX2Rp c2spOwo+IC0JYnJkX2ZyZWUoYnJkKTsKPiArCWJsa19jbGVhbnVwX2Rpc2soYnJkLT5icmRfZGlz ayk7Cj4gKwlicmRfZnJlZV9wYWdlcyhicmQpOwo+ICsJa2ZyZWUoYnJkKTsKPiAgIH0KPiAgIAo+ ICAgc3RhdGljIGlubGluZSB2b2lkIGJyZF9jaGVja19hbmRfcmVzZXRfcGFyKHZvaWQpCj4gQEAg LTQ4NSw3ICs0NzAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYnJkX2NoZWNrX2FuZF9yZXNldF9w YXIodm9pZCkKPiAgIHN0YXRpYyBpbnQgX19pbml0IGJyZF9pbml0KHZvaWQpCj4gICB7Cj4gICAJ c3RydWN0IGJyZF9kZXZpY2UgKmJyZCwgKm5leHQ7Cj4gLQlpbnQgaTsKPiArCWludCBlcnIsIGk7 Cj4gICAKPiAgIAkvKgo+ICAgCSAqIGJyZCBtb2R1bGUgbm93IGhhcyBhIGZlYXR1cmUgdG8gaW5z dGFudGlhdGUgdW5kZXJseWluZyBkZXZpY2UKPiBAQCAtNTExLDIyICs0OTYsMTEgQEAgc3RhdGlj IGludCBfX2luaXQgYnJkX2luaXQodm9pZCkKPiAgIAo+ICAgCW11dGV4X2xvY2soJmJyZF9kZXZp Y2VzX211dGV4KTsKPiAgIAlmb3IgKGkgPSAwOyBpIDwgcmRfbnI7IGkrKykgewo+IC0JCWJyZCA9 IGJyZF9hbGxvYyhpKTsKPiAtCQlpZiAoIWJyZCkKPiArCQllcnIgPSBicmRfYWxsb2MoaSk7Cj4g KwkJaWYgKGVycikKPiAgIAkJCWdvdG8gb3V0X2ZyZWU7Cj4gLQkJbGlzdF9hZGRfdGFpbCgmYnJk LT5icmRfbGlzdCwgJmJyZF9kZXZpY2VzKTsKPiAgIAl9Cj4gICAKPiAtCS8qIHBvaW50IG9mIG5v IHJldHVybiAqLwo+IC0KPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkoYnJkLCAmYnJkX2RldmljZXMs IGJyZF9saXN0KSB7Cj4gLQkJLyoKPiAtCQkgKiBhc3NvY2lhdGUgd2l0aCBxdWV1ZSBqdXN0IGJl Zm9yZSBhZGRpbmcgZGlzayBmb3IKPiAtCQkgKiBhdm9pZGluZyB0byBtZXNzIHVwIGZhaWx1cmUg cGF0aAo+IC0JCSAqLwo+IC0JCWJyZC0+YnJkX2Rpc2stPnF1ZXVlID0gYnJkLT5icmRfcXVldWU7 Cj4gLQkJYWRkX2Rpc2soYnJkLT5icmRfZGlzayk7Cj4gLQl9Cj4gICAJbXV0ZXhfdW5sb2NrKCZi cmRfZGV2aWNlc19tdXRleCk7Cj4gICAKPiAgIAlwcl9pbmZvKCJicmQ6IG1vZHVsZSBsb2FkZWRc biIpOwo+IEBAIC01MzUsMTUgKzUwOSwxMyBAQCBzdGF0aWMgaW50IF9faW5pdCBicmRfaW5pdCh2 b2lkKQo+ICAgb3V0X2ZyZWU6Cj4gICAJZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGJyZF9kZWJ1 Z2ZzX2Rpcik7Cj4gICAKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShicmQsIG5leHQsICZi cmRfZGV2aWNlcywgYnJkX2xpc3QpIHsKPiAtCQlsaXN0X2RlbCgmYnJkLT5icmRfbGlzdCk7Cj4g LQkJYnJkX2ZyZWUoYnJkKTsKPiAtCX0KPiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShicmQs IG5leHQsICZicmRfZGV2aWNlcywgYnJkX2xpc3QpCj4gKwkJYnJkX2RlbF9vbmUoYnJkKTsKPiAg IAltdXRleF91bmxvY2soJmJyZF9kZXZpY2VzX211dGV4KTsKPiAgIAl1bnJlZ2lzdGVyX2Jsa2Rl dihSQU1ESVNLX01BSk9SLCAicmFtZGlzayIpOwo+ICAgCj4gICAJcHJfaW5mbygiYnJkOiBtb2R1 bGUgTk9UIGxvYWRlZCAhISFcbiIpOwo+IC0JcmV0dXJuIC1FTk9NRU07Cj4gKwlyZXR1cm4gZXJy Owo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZCBfX2V4aXQgYnJkX2V4aXQodm9pZCkKPiAKT3Ro ZXIgdGhhbiB0aGF0OgoKUmV2aWV3ZWQtYnk6IEhhbm5lcyBSZWluZWNrZSA8aGFyZUBzdXNlLmRl PgoKQ2hlZXJzLAoKSGFubmVzCi0tIApEci4gSGFubmVzIFJlaW5lY2tlICAgICAgICAgICAgICAg IEtlcm5lbCBTdG9yYWdlIEFyY2hpdGVjdApoYXJlQHN1c2UuZGUgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArNDkgOTExIDc0MDUzIDY4OApTVVNFIFNvZnR3YXJlIFNvbHV0aW9ucyBHbWJI LCBNYXhmZWxkc3RyLiA1LCA5MDQwOSBOw7xybmJlcmcKSFJCIDM2ODA5IChBRyBOw7xybmJlcmcp LCBHZXNjaMOkZnRzZsO8aHJlcjogRmVsaXggSW1lbmTDtnJmZmVyCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpMaW51eC1udm1lIG1haWxpbmcgbGlzdApM aW51eC1udm1lQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcv bWFpbG1hbi9saXN0aW5mby9saW51eC1udm1lCg== 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=-15.1 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=unavailable 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 7565BC47080 for ; Sun, 23 May 2021 07:59:22 +0000 (UTC) Received: from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B26A561076 for ; Sun, 23 May 2021 07:59:21 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B26A561076 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Received: from boromir.ozlabs.org (localhost [IPv6:::1]) by lists.ozlabs.org (Postfix) with ESMTP id 4Fnt6032C3z3bsl for ; Sun, 23 May 2021 17:59:20 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 header.s=susede2_rsa header.b=qnPLP3bD; dkim=fail reason="signature verification failed" header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=QUNsVeYK; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=suse.de (client-ip=195.135.220.15; helo=mx2.suse.de; envelope-from=hare@suse.de; receiver=) Authentication-Results: lists.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=suse.de header.i=@suse.de header.a=rsa-sha256 header.s=susede2_rsa header.b=qnPLP3bD; dkim=pass header.d=suse.de header.i=@suse.de header.a=ed25519-sha256 header.s=susede2_ed25519 header.b=QUNsVeYK; dkim-atps=neutral Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4Fnt5S46pkz2xYZ for ; Sun, 23 May 2021 17:58:52 +1000 (AEST) X-Virus-Scanned: by amavisd-new at test-mx.suse.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1621756730; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9q10j6pxqYkic7UkxlBRvW8G0CcNR1ybReXpt+Eyutc=; b=qnPLP3bDDyKEU+PsCx8mJFdQOt2c6N6KfR04BaZvOBN2hIgT+44QgHQPq6amTymZHv9wcT uQVXSSk1rH3OUOoEsLwbb6c2410es/n0Jb1WbtRq1aNjKmhgiBJGvGDkce3mLJhbLBmP8f 60+5EL1xbSXqQ3Qs+WErJPexJ6ccsMY= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1621756730; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9q10j6pxqYkic7UkxlBRvW8G0CcNR1ybReXpt+Eyutc=; b=QUNsVeYK1qK3iqbouwKdbXcYR8JyMP3yHs0sImd7PFWvdFc0BIppcYnYdXcifwFqde0z8E p++NXvhUiV1DEoDg== Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id C6046AB6D; Sun, 23 May 2021 07:58:49 +0000 (UTC) Subject: Re: [PATCH 06/26] brd: convert to blk_alloc_disk/blk_cleanup_disk To: Christoph Hellwig , Jens Axboe , Geert Uytterhoeven , Chris Zankel , Max Filippov , Philipp Reisner , Lars Ellenberg , Jim Paris , Joshua Morris , Philip Kelleher , Minchan Kim , Nitin Gupta , Matias Bjorling , Coly Li , Mike Snitzer , Song Liu , Maxim Levitsky , Alex Dubov , Ulf Hansson , Dan Williams , Vishal Verma , Dave Jiang , Heiko Carstens , Vasily Gorbik , Christian Borntraeger References: <20210521055116.1053587-1-hch@lst.de> <20210521055116.1053587-7-hch@lst.de> From: Hannes Reinecke Message-ID: <83fc5cdc-53ed-0bd3-fbe8-93d0afd20771@suse.de> Date: Sun, 23 May 2021 09:58:48 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.0 MIME-Version: 1.0 In-Reply-To: <20210521055116.1053587-7-hch@lst.de> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-bcache@vger.kernel.org, linux-xtensa@linux-xtensa.org, linux-raid@vger.kernel.org, nvdimm@lists.linux.dev, linux-s390@vger.kernel.org, linux-mmc@vger.kernel.org, linux-m68k@lists.linux-m68k.org, linux-nvme@lists.infradead.org, linux-block@vger.kernel.org, dm-devel@redhat.com, linuxppc-dev@lists.ozlabs.org, drbd-dev@lists.linbit.com Errors-To: linuxppc-dev-bounces+linuxppc-dev=archiver.kernel.org@lists.ozlabs.org Sender: "Linuxppc-dev" On 5/21/21 7:50 AM, Christoph Hellwig wrote: > Convert the brd driver to use the blk_alloc_disk and blk_cleanup_disk > helpers to simplify gendisk and request_queue allocation. This also > allows to remove the request_queue pointer in struct request_queue, > and to simplify the initialization as blk_cleanup_disk can be called > on any disk returned from blk_alloc_disk. > > Signed-off-by: Christoph Hellwig > --- > drivers/block/brd.c | 94 ++++++++++++++++----------------------------- > 1 file changed, 33 insertions(+), 61 deletions(-) > > diff --git a/drivers/block/brd.c b/drivers/block/brd.c > index 7562cf30b14e..95694113e38e 100644 > --- a/drivers/block/brd.c > +++ b/drivers/block/brd.c > @@ -38,9 +38,7 @@ > * device). > */ > struct brd_device { > - int brd_number; > - > - struct request_queue *brd_queue; > + int brd_number; > struct gendisk *brd_disk; > struct list_head brd_list; > > @@ -372,7 +370,7 @@ static LIST_HEAD(brd_devices); > static DEFINE_MUTEX(brd_devices_mutex); > static struct dentry *brd_debugfs_dir; > > -static struct brd_device *brd_alloc(int i) > +static int brd_alloc(int i) > { > struct brd_device *brd; > struct gendisk *disk; > @@ -380,64 +378,55 @@ static struct brd_device *brd_alloc(int i) > > brd = kzalloc(sizeof(*brd), GFP_KERNEL); > if (!brd) > - goto out; > + return -ENOMEM; > brd->brd_number = i; > spin_lock_init(&brd->brd_lock); > INIT_RADIX_TREE(&brd->brd_pages, GFP_ATOMIC); > > - brd->brd_queue = blk_alloc_queue(NUMA_NO_NODE); > - if (!brd->brd_queue) > - goto out_free_dev; > - > snprintf(buf, DISK_NAME_LEN, "ram%d", i); > if (!IS_ERR_OR_NULL(brd_debugfs_dir)) > debugfs_create_u64(buf, 0444, brd_debugfs_dir, > &brd->brd_nr_pages); > > - /* This is so fdisk will align partitions on 4k, because of > - * direct_access API needing 4k alignment, returning a PFN > - * (This is only a problem on very small devices <= 4M, > - * otherwise fdisk will align on 1M. Regardless this call > - * is harmless) > - */ > - blk_queue_physical_block_size(brd->brd_queue, PAGE_SIZE); > - disk = brd->brd_disk = alloc_disk(max_part); > + disk = brd->brd_disk = blk_alloc_disk(NUMA_NO_NODE); > if (!disk) > - goto out_free_queue; > + goto out_free_dev; > + > disk->major = RAMDISK_MAJOR; > disk->first_minor = i * max_part; > + disk->minors = max_part; > disk->fops = &brd_fops; > disk->private_data = brd; > disk->flags = GENHD_FL_EXT_DEVT; > strlcpy(disk->disk_name, buf, DISK_NAME_LEN); > set_capacity(disk, rd_size * 2); > + > + /* > + * This is so fdisk will align partitions on 4k, because of > + * direct_access API needing 4k alignment, returning a PFN > + * (This is only a problem on very small devices <= 4M, > + * otherwise fdisk will align on 1M. Regardless this call > + * is harmless) > + */ > + blk_queue_physical_block_size(disk->queue, PAGE_SIZE); > Maybe converting the comment to refer to 'PAGE_SIZE' instead of 4k while you're at it ... > /* Tell the block layer that this is not a rotational device */ > - blk_queue_flag_set(QUEUE_FLAG_NONROT, brd->brd_queue); > - blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, brd->brd_queue); > + blk_queue_flag_set(QUEUE_FLAG_NONROT, disk->queue); > + blk_queue_flag_clear(QUEUE_FLAG_ADD_RANDOM, disk->queue); > + add_disk(disk); > + list_add_tail(&brd->brd_list, &brd_devices); > > - return brd; > + return 0; > > -out_free_queue: > - blk_cleanup_queue(brd->brd_queue); > out_free_dev: > kfree(brd); > -out: > - return NULL; > -} > - > -static void brd_free(struct brd_device *brd) > -{ > - put_disk(brd->brd_disk); > - blk_cleanup_queue(brd->brd_queue); > - brd_free_pages(brd); > - kfree(brd); > + return -ENOMEM; > } > > static void brd_probe(dev_t dev) > { > - struct brd_device *brd; > int i = MINOR(dev) / max_part; > + struct brd_device *brd; > > mutex_lock(&brd_devices_mutex); > list_for_each_entry(brd, &brd_devices, brd_list) { > @@ -445,13 +434,7 @@ static void brd_probe(dev_t dev) > goto out_unlock; > } > > - brd = brd_alloc(i); > - if (brd) { > - brd->brd_disk->queue = brd->brd_queue; > - add_disk(brd->brd_disk); > - list_add_tail(&brd->brd_list, &brd_devices); > - } > - > + brd_alloc(i); > out_unlock: > mutex_unlock(&brd_devices_mutex); > } > @@ -460,7 +443,9 @@ static void brd_del_one(struct brd_device *brd) > { > list_del(&brd->brd_list); > del_gendisk(brd->brd_disk); > - brd_free(brd); > + blk_cleanup_disk(brd->brd_disk); > + brd_free_pages(brd); > + kfree(brd); > } > > static inline void brd_check_and_reset_par(void) > @@ -485,7 +470,7 @@ static inline void brd_check_and_reset_par(void) > static int __init brd_init(void) > { > struct brd_device *brd, *next; > - int i; > + int err, i; > > /* > * brd module now has a feature to instantiate underlying device > @@ -511,22 +496,11 @@ static int __init brd_init(void) > > mutex_lock(&brd_devices_mutex); > for (i = 0; i < rd_nr; i++) { > - brd = brd_alloc(i); > - if (!brd) > + err = brd_alloc(i); > + if (err) > goto out_free; > - list_add_tail(&brd->brd_list, &brd_devices); > } > > - /* point of no return */ > - > - list_for_each_entry(brd, &brd_devices, brd_list) { > - /* > - * associate with queue just before adding disk for > - * avoiding to mess up failure path > - */ > - brd->brd_disk->queue = brd->brd_queue; > - add_disk(brd->brd_disk); > - } > mutex_unlock(&brd_devices_mutex); > > pr_info("brd: module loaded\n"); > @@ -535,15 +509,13 @@ static int __init brd_init(void) > out_free: > debugfs_remove_recursive(brd_debugfs_dir); > > - list_for_each_entry_safe(brd, next, &brd_devices, brd_list) { > - list_del(&brd->brd_list); > - brd_free(brd); > - } > + list_for_each_entry_safe(brd, next, &brd_devices, brd_list) > + brd_del_one(brd); > mutex_unlock(&brd_devices_mutex); > unregister_blkdev(RAMDISK_MAJOR, "ramdisk"); > > pr_info("brd: module NOT loaded !!!\n"); > - return -ENOMEM; > + return err; > } > > static void __exit brd_exit(void) > Other than that: Reviewed-by: Hannes Reinecke Cheers, Hannes -- Dr. Hannes Reinecke Kernel Storage Architect hare@suse.de +49 911 74053 688 SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg HRB 36809 (AG Nürnberg), Geschäftsführer: Felix Imendörffer 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=-15.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 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 75E7EC4707A for ; Sun, 23 May 2021 07:59:06 +0000 (UTC) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 02CC861205 for ; Sun, 23 May 2021 07:59:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 02CC861205 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=tempfail smtp.mailfrom=dm-devel-bounces@redhat.com Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-516-QelYNmWONEWPA9fn4A1fiw-1; Sun, 23 May 2021 03:59:03 -0400 X-MC-Unique: QelYNmWONEWPA9fn4A1fiw-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E3063180FD66; Sun, 23 May 2021 07:58:59 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C2D286E6F9; Sun, 23 May 2021 07:58:59 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 441A844A63; Sun, 23 May 2021 07:58:59 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 14N7wuOb027909 for ; Sun, 23 May 2021 03:58:57 -0400 Received: by smtp.corp.redhat.com (Postfix) id CD6E9200BA94; Sun, 23 May 2021 07:58:56 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast06.extmail.prod.ext.rdu2.redhat.com [10.11.55.22]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C91B5200D8C2 for ; Sun, 23 May 2021 07:58:54 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 1EDA31857F1E for ; Sun, 23 May 2021 07:58:54 +0000 (UTC) Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-105-GG4tpJXDMBm-Spsw743s0w-1; Sun, 23 May 2021 03:58:51 -0400 X-MC-Unique: GG4tpJXDMBm-Spsw743s0w-1 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id C6046AB6D; Sun, 23 May 2021 07:58:49 +0000 (UTC) To: Christoph Hellwig , Jens Axboe , Geert Uytterhoeven , Chris Zankel , Max Filippov , Philipp Reisner , Lars Ellenberg , Jim Paris , Joshua Morris , Philip Kelleher , Minchan Kim , Nitin Gupta , Matias Bjorling , Coly Li , Mike Snitzer , Song Liu , Maxim Levitsky , Alex Dubov , Ulf Hansson , Dan Williams , Vishal Verma , Dave Jiang , Heiko Carstens , Vasily Gorbik , Christian Borntraeger References: <20210521055116.1053587-1-hch@lst.de> <20210521055116.1053587-7-hch@lst.de> From: Hannes Reinecke Message-ID: <83fc5cdc-53ed-0bd3-fbe8-93d0afd20771@suse.de> Date: Sun, 23 May 2021 09:58:48 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.0 MIME-Version: 1.0 In-Reply-To: <20210521055116.1053587-7-hch@lst.de> X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 14N7wuOb027909 X-loop: dm-devel@redhat.com Cc: linux-xtensa@linux-xtensa.org, linux-m68k@vger.kernel.org, linux-raid@vger.kernel.org, nvdimm@lists.linux.dev, linux-s390@vger.kernel.org, linux-mmc@vger.kernel.org, linux-bcache@vger.kernel.org, linux-nvme@lists.infradead.org, linux-block@vger.kernel.org, dm-devel@redhat.com, drbd-dev@tron.linbit.com, linuxppc-dev@lists.ozlabs.org Subject: Re: [dm-devel] [PATCH 06/26] brd: convert to blk_alloc_disk/blk_cleanup_disk X-BeenThere: dm-devel@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: device-mapper development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=dm-devel-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" T24gNS8yMS8yMSA3OjUwIEFNLCBDaHJpc3RvcGggSGVsbHdpZyB3cm90ZToKPiBDb252ZXJ0IHRo ZSBicmQgZHJpdmVyIHRvIHVzZSB0aGUgYmxrX2FsbG9jX2Rpc2sgYW5kIGJsa19jbGVhbnVwX2Rp c2sKPiBoZWxwZXJzIHRvIHNpbXBsaWZ5IGdlbmRpc2sgYW5kIHJlcXVlc3RfcXVldWUgYWxsb2Nh dGlvbi4gIFRoaXMgYWxzbwo+IGFsbG93cyB0byByZW1vdmUgdGhlIHJlcXVlc3RfcXVldWUgcG9p bnRlciBpbiBzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSwKPiBhbmQgdG8gc2ltcGxpZnkgdGhlIGluaXRp YWxpemF0aW9uIGFzIGJsa19jbGVhbnVwX2Rpc2sgY2FuIGJlIGNhbGxlZAo+IG9uIGFueSBkaXNr IHJldHVybmVkIGZyb20gYmxrX2FsbG9jX2Rpc2suCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0 b3BoIEhlbGx3aWcgPGhjaEBsc3QuZGU+Cj4gLS0tCj4gICBkcml2ZXJzL2Jsb2NrL2JyZC5jIHwg OTQgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gICAxIGZp bGUgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgNjEgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvYmxvY2svYnJkLmMgYi9kcml2ZXJzL2Jsb2NrL2JyZC5jCj4gaW5kZXgg NzU2MmNmMzBiMTRlLi45NTY5NDExM2UzOGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ibG9jay9i cmQuYwo+ICsrKyBiL2RyaXZlcnMvYmxvY2svYnJkLmMKPiBAQCAtMzgsOSArMzgsNyBAQAo+ICAg ICogZGV2aWNlKS4KPiAgICAqLwo+ICAgc3RydWN0IGJyZF9kZXZpY2Ugewo+IC0JaW50CQlicmRf bnVtYmVyOwo+IC0KPiAtCXN0cnVjdCByZXF1ZXN0X3F1ZXVlCSpicmRfcXVldWU7Cj4gKwlpbnQJ CQlicmRfbnVtYmVyOwo+ICAgCXN0cnVjdCBnZW5kaXNrCQkqYnJkX2Rpc2s7Cj4gICAJc3RydWN0 IGxpc3RfaGVhZAlicmRfbGlzdDsKPiAgIAo+IEBAIC0zNzIsNyArMzcwLDcgQEAgc3RhdGljIExJ U1RfSEVBRChicmRfZGV2aWNlcyk7Cj4gICBzdGF0aWMgREVGSU5FX01VVEVYKGJyZF9kZXZpY2Vz X211dGV4KTsKPiAgIHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpicmRfZGVidWdmc19kaXI7Cj4gICAK PiAtc3RhdGljIHN0cnVjdCBicmRfZGV2aWNlICpicmRfYWxsb2MoaW50IGkpCj4gK3N0YXRpYyBp bnQgYnJkX2FsbG9jKGludCBpKQo+ICAgewo+ICAgCXN0cnVjdCBicmRfZGV2aWNlICpicmQ7Cj4g ICAJc3RydWN0IGdlbmRpc2sgKmRpc2s7Cj4gQEAgLTM4MCw2NCArMzc4LDU1IEBAIHN0YXRpYyBz dHJ1Y3QgYnJkX2RldmljZSAqYnJkX2FsbG9jKGludCBpKQo+ICAgCj4gICAJYnJkID0ga3phbGxv YyhzaXplb2YoKmJyZCksIEdGUF9LRVJORUwpOwo+ICAgCWlmICghYnJkKQo+IC0JCWdvdG8gb3V0 Owo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICAgCWJyZC0+YnJkX251bWJlcgkJPSBpOwo+ICAgCXNw aW5fbG9ja19pbml0KCZicmQtPmJyZF9sb2NrKTsKPiAgIAlJTklUX1JBRElYX1RSRUUoJmJyZC0+ YnJkX3BhZ2VzLCBHRlBfQVRPTUlDKTsKPiAgIAo+IC0JYnJkLT5icmRfcXVldWUgPSBibGtfYWxs b2NfcXVldWUoTlVNQV9OT19OT0RFKTsKPiAtCWlmICghYnJkLT5icmRfcXVldWUpCj4gLQkJZ290 byBvdXRfZnJlZV9kZXY7Cj4gLQo+ICAgCXNucHJpbnRmKGJ1ZiwgRElTS19OQU1FX0xFTiwgInJh bSVkIiwgaSk7Cj4gICAJaWYgKCFJU19FUlJfT1JfTlVMTChicmRfZGVidWdmc19kaXIpKQo+ICAg CQlkZWJ1Z2ZzX2NyZWF0ZV91NjQoYnVmLCAwNDQ0LCBicmRfZGVidWdmc19kaXIsCj4gICAJCQkJ JmJyZC0+YnJkX25yX3BhZ2VzKTsKPiAgIAo+IC0JLyogVGhpcyBpcyBzbyBmZGlzayB3aWxsIGFs aWduIHBhcnRpdGlvbnMgb24gNGssIGJlY2F1c2Ugb2YKPiAtCSAqIGRpcmVjdF9hY2Nlc3MgQVBJ IG5lZWRpbmcgNGsgYWxpZ25tZW50LCByZXR1cm5pbmcgYSBQRk4KPiAtCSAqIChUaGlzIGlzIG9u bHkgYSBwcm9ibGVtIG9uIHZlcnkgc21hbGwgZGV2aWNlcyA8PSA0TSwKPiAtCSAqICBvdGhlcndp c2UgZmRpc2sgd2lsbCBhbGlnbiBvbiAxTS4gUmVnYXJkbGVzcyB0aGlzIGNhbGwKPiAtCSAqICBp cyBoYXJtbGVzcykKPiAtCSAqLwo+IC0JYmxrX3F1ZXVlX3BoeXNpY2FsX2Jsb2NrX3NpemUoYnJk LT5icmRfcXVldWUsIFBBR0VfU0laRSk7Cj4gLQlkaXNrID0gYnJkLT5icmRfZGlzayA9IGFsbG9j X2Rpc2sobWF4X3BhcnQpOwo+ICsJZGlzayA9IGJyZC0+YnJkX2Rpc2sgPSBibGtfYWxsb2NfZGlz ayhOVU1BX05PX05PREUpOwo+ICAgCWlmICghZGlzaykKPiAtCQlnb3RvIG91dF9mcmVlX3F1ZXVl Owo+ICsJCWdvdG8gb3V0X2ZyZWVfZGV2Owo+ICsKPiAgIAlkaXNrLT5tYWpvcgkJPSBSQU1ESVNL X01BSk9SOwo+ICAgCWRpc2stPmZpcnN0X21pbm9yCT0gaSAqIG1heF9wYXJ0Owo+ICsJZGlzay0+ bWlub3JzCQk9IG1heF9wYXJ0Owo+ICAgCWRpc2stPmZvcHMJCT0gJmJyZF9mb3BzOwo+ICAgCWRp c2stPnByaXZhdGVfZGF0YQk9IGJyZDsKPiAgIAlkaXNrLT5mbGFncwkJPSBHRU5IRF9GTF9FWFRf REVWVDsKPiAgIAlzdHJsY3B5KGRpc2stPmRpc2tfbmFtZSwgYnVmLCBESVNLX05BTUVfTEVOKTsK PiAgIAlzZXRfY2FwYWNpdHkoZGlzaywgcmRfc2l6ZSAqIDIpOwo+ICsJCj4gKwkvKgo+ICsJICog VGhpcyBpcyBzbyBmZGlzayB3aWxsIGFsaWduIHBhcnRpdGlvbnMgb24gNGssIGJlY2F1c2Ugb2YK PiArCSAqIGRpcmVjdF9hY2Nlc3MgQVBJIG5lZWRpbmcgNGsgYWxpZ25tZW50LCByZXR1cm5pbmcg YSBQRk4KPiArCSAqIChUaGlzIGlzIG9ubHkgYSBwcm9ibGVtIG9uIHZlcnkgc21hbGwgZGV2aWNl cyA8PSA0TSwKPiArCSAqICBvdGhlcndpc2UgZmRpc2sgd2lsbCBhbGlnbiBvbiAxTS4gUmVnYXJk bGVzcyB0aGlzIGNhbGwKPiArCSAqICBpcyBoYXJtbGVzcykKPiArCSAqLwo+ICsJYmxrX3F1ZXVl X3BoeXNpY2FsX2Jsb2NrX3NpemUoZGlzay0+cXVldWUsIFBBR0VfU0laRSk7Cj4gICAKCk1heWJl IGNvbnZlcnRpbmcgdGhlIGNvbW1lbnQgdG8gcmVmZXIgdG8gJ1BBR0VfU0laRScgaW5zdGVhZCBv ZiA0ayB3aGlsZSAKeW91J3JlIGF0IGl0IC4uLgoKPiAgIAkvKiBUZWxsIHRoZSBibG9jayBsYXll ciB0aGF0IHRoaXMgaXMgbm90IGEgcm90YXRpb25hbCBkZXZpY2UgKi8KPiAtCWJsa19xdWV1ZV9m bGFnX3NldChRVUVVRV9GTEFHX05PTlJPVCwgYnJkLT5icmRfcXVldWUpOwo+IC0JYmxrX3F1ZXVl X2ZsYWdfY2xlYXIoUVVFVUVfRkxBR19BRERfUkFORE9NLCBicmQtPmJyZF9xdWV1ZSk7Cj4gKwli bGtfcXVldWVfZmxhZ19zZXQoUVVFVUVfRkxBR19OT05ST1QsIGRpc2stPnF1ZXVlKTsKPiArCWJs a19xdWV1ZV9mbGFnX2NsZWFyKFFVRVVFX0ZMQUdfQUREX1JBTkRPTSwgZGlzay0+cXVldWUpOwo+ ICsJYWRkX2Rpc2soZGlzayk7Cj4gKwlsaXN0X2FkZF90YWlsKCZicmQtPmJyZF9saXN0LCAmYnJk X2RldmljZXMpOwo+ICAgCj4gLQlyZXR1cm4gYnJkOwo+ICsJcmV0dXJuIDA7Cj4gICAKPiAtb3V0 X2ZyZWVfcXVldWU6Cj4gLQlibGtfY2xlYW51cF9xdWV1ZShicmQtPmJyZF9xdWV1ZSk7Cj4gICBv dXRfZnJlZV9kZXY6Cj4gICAJa2ZyZWUoYnJkKTsKPiAtb3V0Ogo+IC0JcmV0dXJuIE5VTEw7Cj4g LX0KPiAtCj4gLXN0YXRpYyB2b2lkIGJyZF9mcmVlKHN0cnVjdCBicmRfZGV2aWNlICpicmQpCj4g LXsKPiAtCXB1dF9kaXNrKGJyZC0+YnJkX2Rpc2spOwo+IC0JYmxrX2NsZWFudXBfcXVldWUoYnJk LT5icmRfcXVldWUpOwo+IC0JYnJkX2ZyZWVfcGFnZXMoYnJkKTsKPiAtCWtmcmVlKGJyZCk7Cj4g KwlyZXR1cm4gLUVOT01FTTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQgYnJkX3Byb2JlKGRl dl90IGRldikKPiAgIHsKPiAtCXN0cnVjdCBicmRfZGV2aWNlICpicmQ7Cj4gICAJaW50IGkgPSBN SU5PUihkZXYpIC8gbWF4X3BhcnQ7Cj4gKwlzdHJ1Y3QgYnJkX2RldmljZSAqYnJkOwo+ICAgCj4g ICAJbXV0ZXhfbG9jaygmYnJkX2RldmljZXNfbXV0ZXgpOwo+ICAgCWxpc3RfZm9yX2VhY2hfZW50 cnkoYnJkLCAmYnJkX2RldmljZXMsIGJyZF9saXN0KSB7Cj4gQEAgLTQ0NSwxMyArNDM0LDcgQEAg c3RhdGljIHZvaWQgYnJkX3Byb2JlKGRldl90IGRldikKPiAgIAkJCWdvdG8gb3V0X3VubG9jazsK PiAgIAl9Cj4gICAKPiAtCWJyZCA9IGJyZF9hbGxvYyhpKTsKPiAtCWlmIChicmQpIHsKPiAtCQli cmQtPmJyZF9kaXNrLT5xdWV1ZSA9IGJyZC0+YnJkX3F1ZXVlOwo+IC0JCWFkZF9kaXNrKGJyZC0+ YnJkX2Rpc2spOwo+IC0JCWxpc3RfYWRkX3RhaWwoJmJyZC0+YnJkX2xpc3QsICZicmRfZGV2aWNl cyk7Cj4gLQl9Cj4gLQo+ICsJYnJkX2FsbG9jKGkpOwo+ICAgb3V0X3VubG9jazoKPiAgIAltdXRl eF91bmxvY2soJmJyZF9kZXZpY2VzX211dGV4KTsKPiAgIH0KPiBAQCAtNDYwLDcgKzQ0Myw5IEBA IHN0YXRpYyB2b2lkIGJyZF9kZWxfb25lKHN0cnVjdCBicmRfZGV2aWNlICpicmQpCj4gICB7Cj4g ICAJbGlzdF9kZWwoJmJyZC0+YnJkX2xpc3QpOwo+ICAgCWRlbF9nZW5kaXNrKGJyZC0+YnJkX2Rp c2spOwo+IC0JYnJkX2ZyZWUoYnJkKTsKPiArCWJsa19jbGVhbnVwX2Rpc2soYnJkLT5icmRfZGlz ayk7Cj4gKwlicmRfZnJlZV9wYWdlcyhicmQpOwo+ICsJa2ZyZWUoYnJkKTsKPiAgIH0KPiAgIAo+ ICAgc3RhdGljIGlubGluZSB2b2lkIGJyZF9jaGVja19hbmRfcmVzZXRfcGFyKHZvaWQpCj4gQEAg LTQ4NSw3ICs0NzAsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYnJkX2NoZWNrX2FuZF9yZXNldF9w YXIodm9pZCkKPiAgIHN0YXRpYyBpbnQgX19pbml0IGJyZF9pbml0KHZvaWQpCj4gICB7Cj4gICAJ c3RydWN0IGJyZF9kZXZpY2UgKmJyZCwgKm5leHQ7Cj4gLQlpbnQgaTsKPiArCWludCBlcnIsIGk7 Cj4gICAKPiAgIAkvKgo+ICAgCSAqIGJyZCBtb2R1bGUgbm93IGhhcyBhIGZlYXR1cmUgdG8gaW5z dGFudGlhdGUgdW5kZXJseWluZyBkZXZpY2UKPiBAQCAtNTExLDIyICs0OTYsMTEgQEAgc3RhdGlj IGludCBfX2luaXQgYnJkX2luaXQodm9pZCkKPiAgIAo+ICAgCW11dGV4X2xvY2soJmJyZF9kZXZp Y2VzX211dGV4KTsKPiAgIAlmb3IgKGkgPSAwOyBpIDwgcmRfbnI7IGkrKykgewo+IC0JCWJyZCA9 IGJyZF9hbGxvYyhpKTsKPiAtCQlpZiAoIWJyZCkKPiArCQllcnIgPSBicmRfYWxsb2MoaSk7Cj4g KwkJaWYgKGVycikKPiAgIAkJCWdvdG8gb3V0X2ZyZWU7Cj4gLQkJbGlzdF9hZGRfdGFpbCgmYnJk LT5icmRfbGlzdCwgJmJyZF9kZXZpY2VzKTsKPiAgIAl9Cj4gICAKPiAtCS8qIHBvaW50IG9mIG5v IHJldHVybiAqLwo+IC0KPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkoYnJkLCAmYnJkX2RldmljZXMs IGJyZF9saXN0KSB7Cj4gLQkJLyoKPiAtCQkgKiBhc3NvY2lhdGUgd2l0aCBxdWV1ZSBqdXN0IGJl Zm9yZSBhZGRpbmcgZGlzayBmb3IKPiAtCQkgKiBhdm9pZGluZyB0byBtZXNzIHVwIGZhaWx1cmUg cGF0aAo+IC0JCSAqLwo+IC0JCWJyZC0+YnJkX2Rpc2stPnF1ZXVlID0gYnJkLT5icmRfcXVldWU7 Cj4gLQkJYWRkX2Rpc2soYnJkLT5icmRfZGlzayk7Cj4gLQl9Cj4gICAJbXV0ZXhfdW5sb2NrKCZi cmRfZGV2aWNlc19tdXRleCk7Cj4gICAKPiAgIAlwcl9pbmZvKCJicmQ6IG1vZHVsZSBsb2FkZWRc biIpOwo+IEBAIC01MzUsMTUgKzUwOSwxMyBAQCBzdGF0aWMgaW50IF9faW5pdCBicmRfaW5pdCh2 b2lkKQo+ICAgb3V0X2ZyZWU6Cj4gICAJZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKGJyZF9kZWJ1 Z2ZzX2Rpcik7Cj4gICAKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShicmQsIG5leHQsICZi cmRfZGV2aWNlcywgYnJkX2xpc3QpIHsKPiAtCQlsaXN0X2RlbCgmYnJkLT5icmRfbGlzdCk7Cj4g LQkJYnJkX2ZyZWUoYnJkKTsKPiAtCX0KPiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShicmQs IG5leHQsICZicmRfZGV2aWNlcywgYnJkX2xpc3QpCj4gKwkJYnJkX2RlbF9vbmUoYnJkKTsKPiAg IAltdXRleF91bmxvY2soJmJyZF9kZXZpY2VzX211dGV4KTsKPiAgIAl1bnJlZ2lzdGVyX2Jsa2Rl dihSQU1ESVNLX01BSk9SLCAicmFtZGlzayIpOwo+ICAgCj4gICAJcHJfaW5mbygiYnJkOiBtb2R1 bGUgTk9UIGxvYWRlZCAhISFcbiIpOwo+IC0JcmV0dXJuIC1FTk9NRU07Cj4gKwlyZXR1cm4gZXJy Owo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZCBfX2V4aXQgYnJkX2V4aXQodm9pZCkKPiAKT3Ro ZXIgdGhhbiB0aGF0OgoKUmV2aWV3ZWQtYnk6IEhhbm5lcyBSZWluZWNrZSA8aGFyZUBzdXNlLmRl PgoKQ2hlZXJzLAoKSGFubmVzCi0tIApEci4gSGFubmVzIFJlaW5lY2tlICAgICAgICAgICAgICAg IEtlcm5lbCBTdG9yYWdlIEFyY2hpdGVjdApoYXJlQHN1c2UuZGUgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArNDkgOTExIDc0MDUzIDY4OApTVVNFIFNvZnR3YXJlIFNvbHV0aW9ucyBHbWJI LCBNYXhmZWxkc3RyLiA1LCA5MDQwOSBOw7xybmJlcmcKSFJCIDM2ODA5IChBRyBOw7xybmJlcmcp LCBHZXNjaMOkZnRzZsO8aHJlcjogRmVsaXggSW1lbmTDtnJmZmVyCgoKLS0KZG0tZGV2ZWwgbWFp bGluZyBsaXN0CmRtLWRldmVsQHJlZGhhdC5jb20KaHR0cHM6Ly9saXN0bWFuLnJlZGhhdC5jb20v bWFpbG1hbi9saXN0aW5mby9kbS1kZXZlbA==