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=-18.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,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 B95EBC4338F for ; Tue, 10 Aug 2021 21:31:04 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9DF4F60F35 for ; Tue, 10 Aug 2021 21:31:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233555AbhHJVb0 (ORCPT ); Tue, 10 Aug 2021 17:31:26 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:35577 "EHLO mailout2.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234012AbhHJVbZ (ORCPT ); Tue, 10 Aug 2021 17:31:25 -0400 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20210810213100euoutp023dd466c7bcb58e3087506b1959a69b58~aD1Ipw4M_2155521555euoutp02r for ; Tue, 10 Aug 2021 21:31:00 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20210810213100euoutp023dd466c7bcb58e3087506b1959a69b58~aD1Ipw4M_2155521555euoutp02r DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1628631060; bh=KEJHq+haGuApNglVmdsYy95fhD9wipGYOxNb9VVBbAY=; h=Subject:To:Cc:From:Date:In-Reply-To:References:From; b=RjKQot5PJM3U0WKufJcSD4GuIhzCaThlyucvJiY/b2cT3iq/+jaGGxRGcg0VCRyjc cUVnLH2V6S93ydNsRp8asHQW+1IvbBEPL8A1M18L8SKJLp9MlyONGSVZkDYA3i6pPN GowxJPX/aFO1Dpd+X5L4G1frRLix/X/3U5v5wvFQ= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20210810213059eucas1p188ca268f821568bf3054f87e3572e991~aD1HeeOPJ2448924489eucas1p1i; Tue, 10 Aug 2021 21:30:59 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id A9.0F.56448.310F2116; Tue, 10 Aug 2021 22:30:59 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20210810213058eucas1p109323e3c3ecaa76d37d8cf63b6d8ecfd~aD1GU-qQM2449324493eucas1p1f; Tue, 10 Aug 2021 21:30:58 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20210810213058eusmtrp1f307f23ea76099d5327b9cac180986ba~aD1GUW4aO0048500485eusmtrp1w; Tue, 10 Aug 2021 21:30:58 +0000 (GMT) X-AuditID: cbfec7f5-d3bff7000002dc80-75-6112f0131d65 Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 2A.44.20981.210F2116; Tue, 10 Aug 2021 22:30:58 +0100 (BST) Received: from [106.210.134.192] (unknown [106.210.134.192]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20210810213057eusmtip14a90b7388e8aa141385b1535be0eeb84~aD1F3QdBr1192811928eusmtip1S; Tue, 10 Aug 2021 21:30:57 +0000 (GMT) Subject: Re: [PATCH 4/8] block: support delayed holder registration To: Christoph Hellwig , Jens Axboe , Mike Snitzer Cc: dm-devel@redhat.com, linux-block@vger.kernel.org, Bartlomiej Zolnierkiewicz From: Marek Szyprowski Message-ID: Date: Tue, 10 Aug 2021 23:30:58 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.12.0 MIME-Version: 1.0 In-Reply-To: <20210804094147.459763-5-hch@lst.de> Content-Transfer-Encoding: 8bit Content-Language: en-US X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprGKsWRmVeSWpSXmKPExsWy7djPc7rCH4QSDRoey1usvtvPZrFxxnpW i73vZrNarFx9lMli7y1ti7aNXxkd2Dwuny312H2zgc3j/b6rbB59W1YxenzeJBfAGsVlk5Ka k1mWWqRvl8CVsa79DXPBsZCKC4s/MTcw9rp3MXJySAiYSNz8eZ61i5GLQ0hgBaPEm951zBDO F0aJxxOWQjmfGSUaZq1kgWnpndkKlVjOKDFh/mFGCOcjo0T39OfsIFXCAs4Si590AiU4OEQE UiV2rQ0HCTML5Eg8WL+SDcRmEzCU6HrbBWbzCthJbHv2EqyVRUBV4mvnG0YQW1QgWeLO6fdQ NYISJ2c+ATuCE6h3/bOlrBAz5SWat85mhrDFJW49mc8Eco+EwBkOiZ+/NrJDXO0i0fSrH+oD YYlXx7dAxWUkTk/uYYFoaGaUeHhuLTuE08MocblpBiNElbXEnXO/2EC+YRbQlFi/Sx/ElBBw lHg21QrC5JO48VYQ4gY+iUnbpjNDhHklOtqEIGaoScw6vg5u68ELl5gnMCrNQvLZLCTfzELy zSyEtQsYWVYxiqeWFuempxYb56WW6xUn5haX5qXrJefnbmIEJp3T/45/3cG44tVHvUOMTByM hxglOJiVRHh3ygklCvGmJFZWpRblxxeV5qQWH2KU5mBREufdtXVNvJBAemJJanZqakFqEUyW iYNTqoHJ6fgKvUS3qg98t8obW0WbvI2OL39w5uq/ZneJVjYj3TmT/lvmfN765N6aA//mJUyf 9lH11+K5zYKnDNTkJzNOe6MYFtWr2HVPh/vm1c1b5V2O2bZG3zRXbN+4Z/PJVjXdRU6Butvj xTJ5rRcbMtVMmm6wfF1Cn4KI0jyFwF9RyfP3Jnj4v723MGqeiWfV3Pr1/yOuxdhbrLnJcl9b cucTy4s8c4/M2+m+abLsSv0AzUOMnnWKfUcOvVNWvvLkcPGORYwPm8+kFMTkV2yf6X0jb2Jc jn2u/cldv38x7VD/lHKSIXlFeq1IpPcltvwiH9b1Xnm2S46p8vyMZesP1p7EWHB31eVQx1nz zC1bGK4osRRnJBpqMRcVJwIAeEZvWakDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrJIsWRmVeSWpSXmKPExsVy+t/xu7pCH4QSDb52ClmsvtvPZrFxxnpW i73vZrNarFx9lMli7y1ti7aNXxkd2Dwuny312H2zgc3j/b6rbB59W1YxenzeJBfAGqVnU5Rf WpKqkJFfXGKrFG1oYaRnaGmhZ2RiqWdobB5rZWSqpG9nk5Kak1mWWqRvl6CXsa79DXPBsZCK C4s/MTcw9rp3MXJySAiYSPTObGXuYuTiEBJYyijxcHoXO0RCRuLktAZWCFtY4s+1LjaIoveM EiebpoIVCQs4Syx+0skIYosIpEosvDeBCcRmFsiRWPxuDVhcSCBc4sPHG2wgNpuAoUTX2y4w m1fATmLbs5dgc1gEVCW+dr4BqxcVSJbo+zKBEaJGUOLkzCcsIDYnUO/6Z0tZIeabSczb/JAZ wpaXaN46G8oWl7j1ZD7TBEahWUjaZyFpmYWkZRaSlgWMLKsYRVJLi3PTc4uN9IoTc4tL89L1 kvNzNzEC42zbsZ9bdjCufPVR7xAjEwfjIUYJDmYlEd6dckKJQrwpiZVVqUX58UWlOanFhxhN gf6ZyCwlmpwPjPS8knhDMwNTQxMzSwNTSzNjJXFekyNr4oUE0hNLUrNTUwtSi2D6mDg4pRqY xPWdJqhFOMybu5+JYVOeb5LkzcgNLrHTDblq3KzPnDj8aWmZs3xosqBC/GWxuwW7crNWaJ9o bmtTfuj0heOjn4YI67nla7ZaHBd3cdKQ5Hp7K+TCxcLvccKZbQbzWW2Yd054H7izp+/Ry0le 5i/WCht8WjJ5kvhzBQvbhsexyh8m3Tqy/v/308vZfSyPOFS2hfmttTLWe/j7HJvSJIYTkQFB nB/5ti54qPRvnfBNr2nb1SxqfI99vLZANnrWt/6Izf2npx48XWe7etPBz7e3cUyfEdbCx7qs aUvoH332NM/6wFQJe4/fG71f17MusPyxlfFeckqg6MJOz9cBp35J8OkIHDfzkni383GDLnu8 EktxRqKhFnNRcSIAfy8RezwDAAA= X-CMS-MailID: 20210810213058eucas1p109323e3c3ecaa76d37d8cf63b6d8ecfd X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-RootMTR: 20210810213058eucas1p109323e3c3ecaa76d37d8cf63b6d8ecfd X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20210810213058eucas1p109323e3c3ecaa76d37d8cf63b6d8ecfd References: <20210804094147.459763-1-hch@lst.de> <20210804094147.459763-5-hch@lst.de> Precedence: bulk List-ID: X-Mailing-List: linux-block@vger.kernel.org Hi, On 04.08.2021 11:41, Christoph Hellwig wrote: > device mapper needs to register holders before it is ready to do I/O. > Currently it does so by registering the disk early, which can leave > the disk and queue in a weird half state where the queue is registered > with the disk, except for sysfs and the elevator. And this state has > been a bit promlematic before, and will get more so when sorting out > the responsibilities between the queue and the disk. > > Support registering holders on an initialized but not registered disk > instead by delaying the sysfs registration until the disk is registered. > > Signed-off-by: Christoph Hellwig > Reviewed-by: Mike Snitzer This patch landed in today's linux-next (20210810) as commit d62633873590 ("block: support delayed holder registration"). It triggers a following lockdep warning on ARM64's virt 'machine' on QEmu: ====================================================== WARNING: possible circular locking dependency detected 5.14.0-rc4+ #10642 Not tainted ------------------------------------------------------ systemd-udevd/227 is trying to acquire lock: ffffb6b41952d628 (mtd_table_mutex){+.+.}-{3:3}, at: blktrans_open+0x40/0x250 but task is already holding lock: ffff0eacc403bb18 (&disk->open_mutex){+.+.}-{3:3}, at: blkdev_get_by_dev+0x110/0x2f8 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #1 (&disk->open_mutex){+.+.}-{3:3}:        __mutex_lock+0xa4/0x978        mutex_lock_nested+0x54/0x60        bd_register_pending_holders+0x2c/0x118        __device_add_disk+0x1d8/0x368        device_add_disk+0x10/0x18        add_mtd_blktrans_dev+0x2dc/0x428        mtdblock_add_mtd+0x68/0x98        blktrans_notify_add+0x44/0x70        add_mtd_device+0x430/0x4a0        mtd_device_parse_register+0x1a4/0x2b0        physmap_flash_probe+0x44c/0x780        platform_probe+0x90/0xd8        really_probe+0x138/0x2d0        __driver_probe_device+0x78/0xd8        driver_probe_device+0x40/0x110        __driver_attach+0xcc/0x118        bus_for_each_dev+0x68/0xc8        driver_attach+0x20/0x28        bus_add_driver+0x168/0x1f8        driver_register+0x60/0x110        __platform_driver_register+0x24/0x30        physmap_init+0x18/0x20        do_one_initcall+0x84/0x450        kernel_init_freeable+0x31c/0x38c        kernel_init+0x20/0x120        ret_from_fork+0x10/0x18 -> #0 (mtd_table_mutex){+.+.}-{3:3}:        __lock_acquire+0xff4/0x1840        lock_acquire+0x130/0x3e8        __mutex_lock+0xa4/0x978        mutex_lock_nested+0x54/0x60        blktrans_open+0x40/0x250        blkdev_get_whole+0x28/0x120        blkdev_get_by_dev+0x15c/0x2f8        blkdev_open+0x50/0xb0        do_dentry_open+0x238/0x3c0        vfs_open+0x28/0x30        path_openat+0x720/0x938        do_filp_open+0x80/0x108        do_sys_openat2+0x1b4/0x2c8        do_sys_open+0x68/0x88        __arm64_compat_sys_openat+0x1c/0x28        invoke_syscall+0x40/0xf8        el0_svc_common+0x60/0x100        do_el0_svc_compat+0x1c/0x48        el0_svc_compat+0x20/0x30        el0t_32_sync_handler+0xec/0x140        el0t_32_sync+0x168/0x16c other info that might help us debug this:  Possible unsafe locking scenario:        CPU0                    CPU1        ----                    ----   lock(&disk->open_mutex);                                lock(mtd_table_mutex);                                lock(&disk->open_mutex);   lock(mtd_table_mutex);  *** DEADLOCK *** 1 lock held by systemd-udevd/227:  #0: ffff0eacc403bb18 (&disk->open_mutex){+.+.}-{3:3}, at: blkdev_get_by_dev+0x110/0x2f8 stack backtrace: CPU: 1 PID: 227 Comm: systemd-udevd Not tainted 5.14.0-rc4+ #10642 Hardware name: linux,dummy-virt (DT) Call trace:  dump_backtrace+0x0/0x1d0  show_stack+0x14/0x20  dump_stack_lvl+0x88/0xb0  dump_stack+0x14/0x2c  print_circular_bug.isra.50+0x1ac/0x200  check_noncircular+0x134/0x148  __lock_acquire+0xff4/0x1840  lock_acquire+0x130/0x3e8  __mutex_lock+0xa4/0x978  mutex_lock_nested+0x54/0x60  blktrans_open+0x40/0x250  blkdev_get_whole+0x28/0x120  blkdev_get_by_dev+0x15c/0x2f8  blkdev_open+0x50/0xb0  do_dentry_open+0x238/0x3c0  vfs_open+0x28/0x30  path_openat+0x720/0x938  do_filp_open+0x80/0x108  do_sys_openat2+0x1b4/0x2c8  do_sys_open+0x68/0x88  __arm64_compat_sys_openat+0x1c/0x28  invoke_syscall+0x40/0xf8  el0_svc_common+0x60/0x100  do_el0_svc_compat+0x1c/0x48  el0_svc_compat+0x20/0x30  el0t_32_sync_handler+0xec/0x140  el0t_32_sync+0x168/0x16c If this is a false positive, then it should be annotated as such. > --- > block/genhd.c | 10 +++++++ > block/holder.c | 68 ++++++++++++++++++++++++++++++++----------- > include/linux/genhd.h | 5 ++++ > 3 files changed, 66 insertions(+), 17 deletions(-) > > diff --git a/block/genhd.c b/block/genhd.c > index cd4eab744667..db916f779077 100644 > --- a/block/genhd.c > +++ b/block/genhd.c > @@ -447,6 +447,16 @@ static void register_disk(struct device *parent, struct gendisk *disk, > kobject_create_and_add("holders", &ddev->kobj); > disk->slave_dir = kobject_create_and_add("slaves", &ddev->kobj); > > + /* > + * XXX: this is a mess, can't wait for real error handling in add_disk. > + * Make sure ->slave_dir is NULL if we failed some of the registration > + * so that the cleanup in bd_unlink_disk_holder works properly. > + */ > + if (bd_register_pending_holders(disk) < 0) { > + kobject_put(disk->slave_dir); > + disk->slave_dir = NULL; > + } > + > if (disk->flags & GENHD_FL_HIDDEN) > return; > > diff --git a/block/holder.c b/block/holder.c > index 11e65d99a9fb..4568cc4f6827 100644 > --- a/block/holder.c > +++ b/block/holder.c > @@ -28,6 +28,19 @@ static void del_symlink(struct kobject *from, struct kobject *to) > sysfs_remove_link(from, kobject_name(to)); > } > > +static int __link_disk_holder(struct block_device *bdev, struct gendisk *disk) > +{ > + int ret; > + > + ret = add_symlink(disk->slave_dir, bdev_kobj(bdev)); > + if (ret) > + return ret; > + ret = add_symlink(bdev->bd_holder_dir, &disk_to_dev(disk)->kobj); > + if (ret) > + del_symlink(disk->slave_dir, bdev_kobj(bdev)); > + return ret; > +} > + > /** > * bd_link_disk_holder - create symlinks between holding disk and slave bdev > * @bdev: the claimed slave bdev > @@ -66,7 +79,7 @@ int bd_link_disk_holder(struct block_device *bdev, struct gendisk *disk) > WARN_ON_ONCE(!bdev->bd_holder); > > /* FIXME: remove the following once add_disk() handles errors */ > - if (WARN_ON(!disk->slave_dir || !bdev->bd_holder_dir)) > + if (WARN_ON(!bdev->bd_holder_dir)) > goto out_unlock; > > holder = bd_find_holder_disk(bdev, disk); > @@ -84,28 +97,28 @@ int bd_link_disk_holder(struct block_device *bdev, struct gendisk *disk) > INIT_LIST_HEAD(&holder->list); > holder->bdev = bdev; > holder->refcnt = 1; > - > - ret = add_symlink(disk->slave_dir, bdev_kobj(bdev)); > - if (ret) > - goto out_free; > - > - ret = add_symlink(bdev->bd_holder_dir, &disk_to_dev(disk)->kobj); > - if (ret) > - goto out_del; > + if (disk->slave_dir) { > + ret = __link_disk_holder(bdev, disk); > + if (ret) { > + kfree(holder); > + goto out_unlock; > + } > + } > > list_add(&holder->list, &disk->slave_bdevs); > - goto out_unlock; > - > -out_del: > - del_symlink(disk->slave_dir, bdev_kobj(bdev)); > -out_free: > - kfree(holder); > out_unlock: > mutex_unlock(&disk->open_mutex); > return ret; > } > EXPORT_SYMBOL_GPL(bd_link_disk_holder); > > +static void __unlink_disk_holder(struct block_device *bdev, > + struct gendisk *disk) > +{ > + del_symlink(disk->slave_dir, bdev_kobj(bdev)); > + del_symlink(bdev->bd_holder_dir, &disk_to_dev(disk)->kobj); > +} > + > /** > * bd_unlink_disk_holder - destroy symlinks created by bd_link_disk_holder() > * @bdev: the calimed slave bdev > @@ -123,11 +136,32 @@ void bd_unlink_disk_holder(struct block_device *bdev, struct gendisk *disk) > mutex_lock(&disk->open_mutex); > holder = bd_find_holder_disk(bdev, disk); > if (!WARN_ON_ONCE(holder == NULL) && !--holder->refcnt) { > - del_symlink(disk->slave_dir, bdev_kobj(bdev)); > - del_symlink(bdev->bd_holder_dir, &disk_to_dev(disk)->kobj); > + if (disk->slave_dir) > + __unlink_disk_holder(bdev, disk); > list_del_init(&holder->list); > kfree(holder); > } > mutex_unlock(&disk->open_mutex); > } > EXPORT_SYMBOL_GPL(bd_unlink_disk_holder); > + > +int bd_register_pending_holders(struct gendisk *disk) > +{ > + struct bd_holder_disk *holder; > + int ret; > + > + mutex_lock(&disk->open_mutex); > + list_for_each_entry(holder, &disk->slave_bdevs, list) { > + ret = __link_disk_holder(holder->bdev, disk); > + if (ret) > + goto out_undo; > + } > + mutex_unlock(&disk->open_mutex); > + return 0; > + > +out_undo: > + list_for_each_entry_continue_reverse(holder, &disk->slave_bdevs, list) > + __unlink_disk_holder(holder->bdev, disk); > + mutex_unlock(&disk->open_mutex); > + return ret; > +} > diff --git a/include/linux/genhd.h b/include/linux/genhd.h > index 0721807d76ee..80952f038d79 100644 > --- a/include/linux/genhd.h > +++ b/include/linux/genhd.h > @@ -323,6 +323,7 @@ long compat_blkdev_ioctl(struct file *, unsigned, unsigned long); > #ifdef CONFIG_BLOCK_HOLDER_DEPRECATED > int bd_link_disk_holder(struct block_device *bdev, struct gendisk *disk); > void bd_unlink_disk_holder(struct block_device *bdev, struct gendisk *disk); > +int bd_register_pending_holders(struct gendisk *disk); > #else > static inline int bd_link_disk_holder(struct block_device *bdev, > struct gendisk *disk) > @@ -333,6 +334,10 @@ static inline void bd_unlink_disk_holder(struct block_device *bdev, > struct gendisk *disk) > { > } > +static inline int bd_register_pending_holders(struct gendisk *disk) > +{ > + return 0; > +} > #endif /* CONFIG_BLOCK_HOLDER_DEPRECATED */ > > dev_t part_devt(struct gendisk *disk, u8 partno); Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland 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.3 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 B82F5C4338F for ; Wed, 11 Aug 2021 07:19:55 +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 2AC3060FC0 for ; Wed, 11 Aug 2021 07:19:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 2AC3060FC0 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=samsung.com Authentication-Results: mail.kernel.org; spf=tempfail smtp.mailfrom=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-130-uSDcnN9MP8Oqk-EwIOabVw-1; Wed, 11 Aug 2021 03:19:52 -0400 X-MC-Unique: uSDcnN9MP8Oqk-EwIOabVw-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 9777ECC621; Wed, 11 Aug 2021 07:19:47 +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 7197C421F; Wed, 11 Aug 2021 07:19:46 +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 9DB4E4BB7C; Wed, 11 Aug 2021 07:19:43 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 17ALahk6020344 for ; Tue, 10 Aug 2021 17:36:43 -0400 Received: by smtp.corp.redhat.com (Postfix) id EA5131000DA7; Tue, 10 Aug 2021 21:36:42 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast05.extmail.prod.ext.rdu2.redhat.com [10.11.55.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E3F451007BA7 for ; Tue, 10 Aug 2021 21:36:40 +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 037878D138C for ; Tue, 10 Aug 2021 21:36:40 +0000 (UTC) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-167-glhjgKUANPGcWQ2fUrftIg-1; Tue, 10 Aug 2021 17:36:38 -0400 X-MC-Unique: glhjgKUANPGcWQ2fUrftIg-1 Received: from eucas1p1.samsung.com (unknown [182.198.249.206]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20210810213100euoutp021e37267d84289fbf970e3ac675caf6e0~aD1IjeHlH2841728417euoutp02J for ; Tue, 10 Aug 2021 21:31:00 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20210810213100euoutp021e37267d84289fbf970e3ac675caf6e0~aD1IjeHlH2841728417euoutp02J Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20210810213059eucas1p188ca268f821568bf3054f87e3572e991~aD1HeeOPJ2448924489eucas1p1i; Tue, 10 Aug 2021 21:30:59 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id A9.0F.56448.310F2116; Tue, 10 Aug 2021 22:30:59 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20210810213058eucas1p109323e3c3ecaa76d37d8cf63b6d8ecfd~aD1GU-qQM2449324493eucas1p1f; Tue, 10 Aug 2021 21:30:58 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20210810213058eusmtrp1f307f23ea76099d5327b9cac180986ba~aD1GUW4aO0048500485eusmtrp1w; Tue, 10 Aug 2021 21:30:58 +0000 (GMT) X-AuditID: cbfec7f5-d3bff7000002dc80-75-6112f0131d65 Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 2A.44.20981.210F2116; Tue, 10 Aug 2021 22:30:58 +0100 (BST) Received: from [106.210.134.192] (unknown [106.210.134.192]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20210810213057eusmtip14a90b7388e8aa141385b1535be0eeb84~aD1F3QdBr1192811928eusmtip1S; Tue, 10 Aug 2021 21:30:57 +0000 (GMT) To: Christoph Hellwig , Jens Axboe , Mike Snitzer From: Marek Szyprowski Message-ID: Date: Tue, 10 Aug 2021 23:30:58 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.12.0 MIME-Version: 1.0 In-Reply-To: <20210804094147.459763-5-hch@lst.de> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprGKsWRmVeSWpSXmKPExsWy7djPc7rCH4QSDRoey1usvtvPZrFxxnpW i73vZrNarFx9lMli7y1ti7aNXxkd2Dwuny312H2zgc3j/b6rbB59W1YxenzeJBfAGsVlk5Ka k1mWWqRvl8CVsa79DXPBsZCKC4s/MTcw9rp3MXJySAiYSNz8eZ61i5GLQ0hgBaPEm951zBDO F0aJxxOWQjmfGSUaZq1kgWnpndkKlVjOKDFh/mFGCOcjo0T39OfsIFXCAs4Si590AiU4OEQE UiV2rQ0HCTML5Eg8WL+SDcRmEzCU6HrbBWbzCthJbHv2EqyVRUBV4mvnG0YQW1QgWeLO6fdQ NYISJ2c+ATuCE6h3/bOlrBAz5SWat85mhrDFJW49mc8Eco+EwBkOiZ+/NrJDXO0i0fSrH+oD YYlXx7dAxWUkTk/uYYFoaGaUeHhuLTuE08MocblpBiNElbXEnXO/2EC+YRbQlFi/Sx/ElBBw lHg21QrC5JO48VYQ4gY+iUnbpjNDhHklOtqEIGaoScw6vg5u68ELl5gnMCrNQvLZLCTfzELy zSyEtQsYWVYxiqeWFuempxYb56WW6xUn5haX5qXrJefnbmIEJp3T/45/3cG44tVHvUOMTByM hxglOJiVRHh3ygklCvGmJFZWpRblxxeV5qQWH2KU5mBREufdtXVNvJBAemJJanZqakFqEUyW iYNTqoHJ6fgKvUS3qg98t8obW0WbvI2OL39w5uq/ZneJVjYj3TmT/lvmfN765N6aA//mJUyf 9lH11+K5zYKnDNTkJzNOe6MYFtWr2HVPh/vm1c1b5V2O2bZG3zRXbN+4Z/PJVjXdRU6Butvj xTJ5rRcbMtVMmm6wfF1Cn4KI0jyFwF9RyfP3Jnj4v723MGqeiWfV3Pr1/yOuxdhbrLnJcl9b cucTy4s8c4/M2+m+abLsSv0AzUOMnnWKfUcOvVNWvvLkcPGORYwPm8+kFMTkV2yf6X0jb2Jc jn2u/cldv38x7VD/lHKSIXlFeq1IpPcltvwiH9b1Xnm2S46p8vyMZesP1p7EWHB31eVQx1nz zC1bGK4osRRnJBpqMRcVJwIAeEZvWakDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrJIsWRmVeSWpSXmKPExsVy+t/xu7pCH4QSDb52ClmsvtvPZrFxxnpW i73vZrNarFx9lMli7y1ti7aNXxkd2Dwuny312H2zgc3j/b6rbB59W1YxenzeJBfAGqVnU5Rf WpKqkJFfXGKrFG1oYaRnaGmhZ2RiqWdobB5rZWSqpG9nk5Kak1mWWqRvl6CXsa79DXPBsZCK C4s/MTcw9rp3MXJySAiYSPTObGXuYuTiEBJYyijxcHoXO0RCRuLktAZWCFtY4s+1LjaIoveM EiebpoIVCQs4Syx+0skIYosIpEosvDeBCcRmFsiRWPxuDVhcSCBc4sPHG2wgNpuAoUTX2y4w m1fATmLbs5dgc1gEVCW+dr4BqxcVSJbo+zKBEaJGUOLkzCcsIDYnUO/6Z0tZIeabSczb/JAZ wpaXaN46G8oWl7j1ZD7TBEahWUjaZyFpmYWkZRaSlgWMLKsYRVJLi3PTc4uN9IoTc4tL89L1 kvNzNzEC42zbsZ9bdjCufPVR7xAjEwfjIUYJDmYlEd6dckKJQrwpiZVVqUX58UWlOanFhxhN gf6ZyCwlmpwPjPS8knhDMwNTQxMzSwNTSzNjJXFekyNr4oUE0hNLUrNTUwtSi2D6mDg4pRqY xPWdJqhFOMybu5+JYVOeb5LkzcgNLrHTDblq3KzPnDj8aWmZs3xosqBC/GWxuwW7crNWaJ9o bmtTfuj0heOjn4YI67nla7ZaHBd3cdKQ5Hp7K+TCxcLvccKZbQbzWW2Yd054H7izp+/Ry0le 5i/WCht8WjJ5kvhzBQvbhsexyh8m3Tqy/v/308vZfSyPOFS2hfmttTLWe/j7HJvSJIYTkQFB nB/5ti54qPRvnfBNr2nb1SxqfI99vLZANnrWt/6Izf2npx48XWe7etPBz7e3cUyfEdbCx7qs aUvoH332NM/6wFQJe4/fG71f17MusPyxlfFeckqg6MJOz9cBp35J8OkIHDfzkni383GDLnu8 EktxRqKhFnNRcSIAfy8RezwDAAA= X-CMS-MailID: 20210810213058eucas1p109323e3c3ecaa76d37d8cf63b6d8ecfd X-Msg-Generator: CA X-RootMTR: 20210810213058eucas1p109323e3c3ecaa76d37d8cf63b6d8ecfd X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20210810213058eucas1p109323e3c3ecaa76d37d8cf63b6d8ecfd References: <20210804094147.459763-1-hch@lst.de> <20210804094147.459763-5-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.3 X-MIME-Autoconverted: from quoted-printable to 8bit by lists01.pubmisc.prod.ext.phx2.redhat.com id 17ALahk6020344 X-loop: dm-devel@redhat.com X-Mailman-Approved-At: Wed, 11 Aug 2021 03:19:31 -0400 Cc: linux-block@vger.kernel.org, dm-devel@redhat.com, Zolnierkiewicz , Bartlomiej Subject: Re: [dm-devel] [PATCH 4/8] block: support delayed holder registration 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGksCgpPbiAwNC4wOC4yMDIxIDExOjQxLCBDaHJpc3RvcGggSGVsbHdpZyB3cm90ZToKPiBkZXZp Y2UgbWFwcGVyIG5lZWRzIHRvIHJlZ2lzdGVyIGhvbGRlcnMgYmVmb3JlIGl0IGlzIHJlYWR5IHRv IGRvIEkvTy4KPiBDdXJyZW50bHkgaXQgZG9lcyBzbyBieSByZWdpc3RlcmluZyB0aGUgZGlzayBl YXJseSwgd2hpY2ggY2FuIGxlYXZlCj4gdGhlIGRpc2sgYW5kIHF1ZXVlIGluIGEgd2VpcmQgaGFs ZiBzdGF0ZSB3aGVyZSB0aGUgcXVldWUgaXMgcmVnaXN0ZXJlZAo+IHdpdGggdGhlIGRpc2ssIGV4 Y2VwdCBmb3Igc3lzZnMgYW5kIHRoZSBlbGV2YXRvci4gIEFuZCB0aGlzIHN0YXRlIGhhcwo+IGJl ZW4gYSBiaXQgcHJvbWxlbWF0aWMgYmVmb3JlLCBhbmQgd2lsbCBnZXQgbW9yZSBzbyB3aGVuIHNv cnRpbmcgb3V0Cj4gdGhlIHJlc3BvbnNpYmlsaXRpZXMgYmV0d2VlbiB0aGUgcXVldWUgYW5kIHRo ZSBkaXNrLgo+Cj4gU3VwcG9ydCByZWdpc3RlcmluZyBob2xkZXJzIG9uIGFuIGluaXRpYWxpemVk IGJ1dCBub3QgcmVnaXN0ZXJlZCBkaXNrCj4gaW5zdGVhZCBieSBkZWxheWluZyB0aGUgc3lzZnMg cmVnaXN0cmF0aW9uIHVudGlsIHRoZSBkaXNrIGlzIHJlZ2lzdGVyZWQuCj4KPiBTaWduZWQtb2Zm LWJ5OiBDaHJpc3RvcGggSGVsbHdpZyA8aGNoQGxzdC5kZT4KPiBSZXZpZXdlZC1ieTogTWlrZSBT bml0emVyIDxzbml0emVyQHJlZGhhdC5jb20+CgpUaGlzIHBhdGNoIGxhbmRlZCBpbiB0b2RheSdz IGxpbnV4LW5leHQgKDIwMjEwODEwKSBhcyBjb21taXQgCmQ2MjYzMzg3MzU5MCAoImJsb2NrOiBz dXBwb3J0IGRlbGF5ZWQgaG9sZGVyIHJlZ2lzdHJhdGlvbiIpLiBJdCB0cmlnZ2VycyAKYSBmb2xs b3dpbmcgbG9ja2RlcCB3YXJuaW5nIG9uIEFSTTY0J3MgdmlydCAnbWFjaGluZScgb24gUUVtdToK Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpX QVJOSU5HOiBwb3NzaWJsZSBjaXJjdWxhciBsb2NraW5nIGRlcGVuZGVuY3kgZGV0ZWN0ZWQKNS4x NC4wLXJjNCsgIzEwNjQyIE5vdCB0YWludGVkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzeXN0ZW1kLXVkZXZkLzIyNyBpcyB0cnlpbmcgdG8g YWNxdWlyZSBsb2NrOgpmZmZmYjZiNDE5NTJkNjI4IChtdGRfdGFibGVfbXV0ZXgpeysuKy59LXsz OjN9LCBhdDogYmxrdHJhbnNfb3BlbisweDQwLzB4MjUwCgpidXQgdGFzayBpcyBhbHJlYWR5IGhv bGRpbmcgbG9jazoKZmZmZjBlYWNjNDAzYmIxOCAoJmRpc2stPm9wZW5fbXV0ZXgpeysuKy59LXsz OjN9LCBhdDogCmJsa2Rldl9nZXRfYnlfZGV2KzB4MTEwLzB4MmY4Cgp3aGljaCBsb2NrIGFscmVh ZHkgZGVwZW5kcyBvbiB0aGUgbmV3IGxvY2suCgoKdGhlIGV4aXN0aW5nIGRlcGVuZGVuY3kgY2hh aW4gKGluIHJldmVyc2Ugb3JkZXIpIGlzOgoKLT4gIzEgKCZkaXNrLT5vcGVuX211dGV4KXsrLisu fS17MzozfToKIMKgwqDCoMKgwqDCoCBfX211dGV4X2xvY2srMHhhNC8weDk3OAogwqDCoMKgwqDC oMKgIG11dGV4X2xvY2tfbmVzdGVkKzB4NTQvMHg2MAogwqDCoMKgwqDCoMKgIGJkX3JlZ2lzdGVy X3BlbmRpbmdfaG9sZGVycysweDJjLzB4MTE4CiDCoMKgwqDCoMKgwqAgX19kZXZpY2VfYWRkX2Rp c2srMHgxZDgvMHgzNjgKIMKgwqDCoMKgwqDCoCBkZXZpY2VfYWRkX2Rpc2srMHgxMC8weDE4CiDC oMKgwqDCoMKgwqAgYWRkX210ZF9ibGt0cmFuc19kZXYrMHgyZGMvMHg0MjgKIMKgwqDCoMKgwqDC oCBtdGRibG9ja19hZGRfbXRkKzB4NjgvMHg5OAogwqDCoMKgwqDCoMKgIGJsa3RyYW5zX25vdGlm eV9hZGQrMHg0NC8weDcwCiDCoMKgwqDCoMKgwqAgYWRkX210ZF9kZXZpY2UrMHg0MzAvMHg0YTAK IMKgwqDCoMKgwqDCoCBtdGRfZGV2aWNlX3BhcnNlX3JlZ2lzdGVyKzB4MWE0LzB4MmIwCiDCoMKg wqDCoMKgwqAgcGh5c21hcF9mbGFzaF9wcm9iZSsweDQ0Yy8weDc4MAogwqDCoMKgwqDCoMKgIHBs YXRmb3JtX3Byb2JlKzB4OTAvMHhkOAogwqDCoMKgwqDCoMKgIHJlYWxseV9wcm9iZSsweDEzOC8w eDJkMAogwqDCoMKgwqDCoMKgIF9fZHJpdmVyX3Byb2JlX2RldmljZSsweDc4LzB4ZDgKIMKgwqDC oMKgwqDCoCBkcml2ZXJfcHJvYmVfZGV2aWNlKzB4NDAvMHgxMTAKIMKgwqDCoMKgwqDCoCBfX2Ry aXZlcl9hdHRhY2grMHhjYy8weDExOAogwqDCoMKgwqDCoMKgIGJ1c19mb3JfZWFjaF9kZXYrMHg2 OC8weGM4CiDCoMKgwqDCoMKgwqAgZHJpdmVyX2F0dGFjaCsweDIwLzB4MjgKIMKgwqDCoMKgwqDC oCBidXNfYWRkX2RyaXZlcisweDE2OC8weDFmOAogwqDCoMKgwqDCoMKgIGRyaXZlcl9yZWdpc3Rl cisweDYwLzB4MTEwCiDCoMKgwqDCoMKgwqAgX19wbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIrMHgy NC8weDMwCiDCoMKgwqDCoMKgwqAgcGh5c21hcF9pbml0KzB4MTgvMHgyMAogwqDCoMKgwqDCoMKg IGRvX29uZV9pbml0Y2FsbCsweDg0LzB4NDUwCiDCoMKgwqDCoMKgwqAga2VybmVsX2luaXRfZnJl ZWFibGUrMHgzMWMvMHgzOGMKIMKgwqDCoMKgwqDCoCBrZXJuZWxfaW5pdCsweDIwLzB4MTIwCiDC oMKgwqDCoMKgwqAgcmV0X2Zyb21fZm9yaysweDEwLzB4MTgKCi0+ICMwIChtdGRfdGFibGVfbXV0 ZXgpeysuKy59LXszOjN9OgogwqDCoMKgwqDCoMKgIF9fbG9ja19hY3F1aXJlKzB4ZmY0LzB4MTg0 MAogwqDCoMKgwqDCoMKgIGxvY2tfYWNxdWlyZSsweDEzMC8weDNlOAogwqDCoMKgwqDCoMKgIF9f bXV0ZXhfbG9jaysweGE0LzB4OTc4CiDCoMKgwqDCoMKgwqAgbXV0ZXhfbG9ja19uZXN0ZWQrMHg1 NC8weDYwCiDCoMKgwqDCoMKgwqAgYmxrdHJhbnNfb3BlbisweDQwLzB4MjUwCiDCoMKgwqDCoMKg wqAgYmxrZGV2X2dldF93aG9sZSsweDI4LzB4MTIwCiDCoMKgwqDCoMKgwqAgYmxrZGV2X2dldF9i eV9kZXYrMHgxNWMvMHgyZjgKIMKgwqDCoMKgwqDCoCBibGtkZXZfb3BlbisweDUwLzB4YjAKIMKg wqDCoMKgwqDCoCBkb19kZW50cnlfb3BlbisweDIzOC8weDNjMAogwqDCoMKgwqDCoMKgIHZmc19v cGVuKzB4MjgvMHgzMAogwqDCoMKgwqDCoMKgIHBhdGhfb3BlbmF0KzB4NzIwLzB4OTM4CiDCoMKg wqDCoMKgwqAgZG9fZmlscF9vcGVuKzB4ODAvMHgxMDgKIMKgwqDCoMKgwqDCoCBkb19zeXNfb3Bl bmF0MisweDFiNC8weDJjOAogwqDCoMKgwqDCoMKgIGRvX3N5c19vcGVuKzB4NjgvMHg4OAogwqDC oMKgwqDCoMKgIF9fYXJtNjRfY29tcGF0X3N5c19vcGVuYXQrMHgxYy8weDI4CiDCoMKgwqDCoMKg wqAgaW52b2tlX3N5c2NhbGwrMHg0MC8weGY4CiDCoMKgwqDCoMKgwqAgZWwwX3N2Y19jb21tb24r MHg2MC8weDEwMAogwqDCoMKgwqDCoMKgIGRvX2VsMF9zdmNfY29tcGF0KzB4MWMvMHg0OAogwqDC oMKgwqDCoMKgIGVsMF9zdmNfY29tcGF0KzB4MjAvMHgzMAogwqDCoMKgwqDCoMKgIGVsMHRfMzJf c3luY19oYW5kbGVyKzB4ZWMvMHgxNDAKIMKgwqDCoMKgwqDCoCBlbDB0XzMyX3N5bmMrMHgxNjgv MHgxNmMKCm90aGVyIGluZm8gdGhhdCBtaWdodCBoZWxwIHVzIGRlYnVnIHRoaXM6CgogwqBQb3Nz aWJsZSB1bnNhZmUgbG9ja2luZyBzY2VuYXJpbzoKCiDCoMKgwqDCoMKgwqAgQ1BVMMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIENQVTEKIMKgwqDCoMKgwqDCoCAtLS0twqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLS0tLQogwqAgbG9jaygmZGlzay0+ b3Blbl9tdXRleCk7CiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgbG9jayhtdGRfdGFibGVfbXV0ZXgpOwogwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxvY2soJmRpc2st Pm9wZW5fbXV0ZXgpOwogwqAgbG9jayhtdGRfdGFibGVfbXV0ZXgpOwoKIMKgKioqIERFQURMT0NL ICoqKgoKMSBsb2NrIGhlbGQgYnkgc3lzdGVtZC11ZGV2ZC8yMjc6CiDCoCMwOiBmZmZmMGVhY2M0 MDNiYjE4ICgmZGlzay0+b3Blbl9tdXRleCl7Ky4rLn0tezM6M30sIGF0OiAKYmxrZGV2X2dldF9i eV9kZXYrMHgxMTAvMHgyZjgKCnN0YWNrIGJhY2t0cmFjZToKQ1BVOiAxIFBJRDogMjI3IENvbW06 IHN5c3RlbWQtdWRldmQgTm90IHRhaW50ZWQgNS4xNC4wLXJjNCsgIzEwNjQyCkhhcmR3YXJlIG5h bWU6IGxpbnV4LGR1bW15LXZpcnQgKERUKQpDYWxsIHRyYWNlOgogwqBkdW1wX2JhY2t0cmFjZSsw eDAvMHgxZDAKIMKgc2hvd19zdGFjaysweDE0LzB4MjAKIMKgZHVtcF9zdGFja19sdmwrMHg4OC8w eGIwCiDCoGR1bXBfc3RhY2srMHgxNC8weDJjCiDCoHByaW50X2NpcmN1bGFyX2J1Zy5pc3JhLjUw KzB4MWFjLzB4MjAwCiDCoGNoZWNrX25vbmNpcmN1bGFyKzB4MTM0LzB4MTQ4CiDCoF9fbG9ja19h Y3F1aXJlKzB4ZmY0LzB4MTg0MAogwqBsb2NrX2FjcXVpcmUrMHgxMzAvMHgzZTgKIMKgX19tdXRl eF9sb2NrKzB4YTQvMHg5NzgKIMKgbXV0ZXhfbG9ja19uZXN0ZWQrMHg1NC8weDYwCiDCoGJsa3Ry YW5zX29wZW4rMHg0MC8weDI1MAogwqBibGtkZXZfZ2V0X3dob2xlKzB4MjgvMHgxMjAKIMKgYmxr ZGV2X2dldF9ieV9kZXYrMHgxNWMvMHgyZjgKIMKgYmxrZGV2X29wZW4rMHg1MC8weGIwCiDCoGRv X2RlbnRyeV9vcGVuKzB4MjM4LzB4M2MwCiDCoHZmc19vcGVuKzB4MjgvMHgzMAogwqBwYXRoX29w ZW5hdCsweDcyMC8weDkzOAogwqBkb19maWxwX29wZW4rMHg4MC8weDEwOAogwqBkb19zeXNfb3Bl bmF0MisweDFiNC8weDJjOAogwqBkb19zeXNfb3BlbisweDY4LzB4ODgKIMKgX19hcm02NF9jb21w YXRfc3lzX29wZW5hdCsweDFjLzB4MjgKIMKgaW52b2tlX3N5c2NhbGwrMHg0MC8weGY4CiDCoGVs MF9zdmNfY29tbW9uKzB4NjAvMHgxMDAKIMKgZG9fZWwwX3N2Y19jb21wYXQrMHgxYy8weDQ4CiDC oGVsMF9zdmNfY29tcGF0KzB4MjAvMHgzMAogwqBlbDB0XzMyX3N5bmNfaGFuZGxlcisweGVjLzB4 MTQwCiDCoGVsMHRfMzJfc3luYysweDE2OC8weDE2YwoKSWYgdGhpcyBpcyBhIGZhbHNlIHBvc2l0 aXZlLCB0aGVuIGl0IHNob3VsZCBiZSBhbm5vdGF0ZWQgYXMgc3VjaC4KCj4gLS0tCj4gICBibG9j ay9nZW5oZC5jICAgICAgICAgfCAxMCArKysrKysrCj4gICBibG9jay9ob2xkZXIuYyAgICAgICAg fCA2OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCj4gICBpbmNs dWRlL2xpbnV4L2dlbmhkLmggfCAgNSArKysrCj4gICAzIGZpbGVzIGNoYW5nZWQsIDY2IGluc2Vy dGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2Jsb2NrL2dlbmhkLmMg Yi9ibG9jay9nZW5oZC5jCj4gaW5kZXggY2Q0ZWFiNzQ0NjY3Li5kYjkxNmY3NzkwNzcgMTAwNjQ0 Cj4gLS0tIGEvYmxvY2svZ2VuaGQuYwo+ICsrKyBiL2Jsb2NrL2dlbmhkLmMKPiBAQCAtNDQ3LDYg KzQ0NywxNiBAQCBzdGF0aWMgdm9pZCByZWdpc3Rlcl9kaXNrKHN0cnVjdCBkZXZpY2UgKnBhcmVu dCwgc3RydWN0IGdlbmRpc2sgKmRpc2ssCj4gICAJCWtvYmplY3RfY3JlYXRlX2FuZF9hZGQoImhv bGRlcnMiLCAmZGRldi0+a29iaik7Cj4gICAJZGlzay0+c2xhdmVfZGlyID0ga29iamVjdF9jcmVh dGVfYW5kX2FkZCgic2xhdmVzIiwgJmRkZXYtPmtvYmopOwo+ICAgCj4gKwkvKgo+ICsJICogWFhY OiB0aGlzIGlzIGEgbWVzcywgY2FuJ3Qgd2FpdCBmb3IgcmVhbCBlcnJvciBoYW5kbGluZyBpbiBh ZGRfZGlzay4KPiArCSAqIE1ha2Ugc3VyZSAtPnNsYXZlX2RpciBpcyBOVUxMIGlmIHdlIGZhaWxl ZCBzb21lIG9mIHRoZSByZWdpc3RyYXRpb24KPiArCSAqIHNvIHRoYXQgdGhlIGNsZWFudXAgaW4g YmRfdW5saW5rX2Rpc2tfaG9sZGVyIHdvcmtzIHByb3Blcmx5Lgo+ICsJICovCj4gKwlpZiAoYmRf cmVnaXN0ZXJfcGVuZGluZ19ob2xkZXJzKGRpc2spIDwgMCkgewo+ICsJCWtvYmplY3RfcHV0KGRp c2stPnNsYXZlX2Rpcik7Cj4gKwkJZGlzay0+c2xhdmVfZGlyID0gTlVMTDsKPiArCX0KPiArCj4g ICAJaWYgKGRpc2stPmZsYWdzICYgR0VOSERfRkxfSElEREVOKQo+ICAgCQlyZXR1cm47Cj4gICAK PiBkaWZmIC0tZ2l0IGEvYmxvY2svaG9sZGVyLmMgYi9ibG9jay9ob2xkZXIuYwo+IGluZGV4IDEx ZTY1ZDk5YTlmYi4uNDU2OGNjNGY2ODI3IDEwMDY0NAo+IC0tLSBhL2Jsb2NrL2hvbGRlci5jCj4g KysrIGIvYmxvY2svaG9sZGVyLmMKPiBAQCAtMjgsNiArMjgsMTkgQEAgc3RhdGljIHZvaWQgZGVs X3N5bWxpbmsoc3RydWN0IGtvYmplY3QgKmZyb20sIHN0cnVjdCBrb2JqZWN0ICp0bykKPiAgIAlz eXNmc19yZW1vdmVfbGluayhmcm9tLCBrb2JqZWN0X25hbWUodG8pKTsKPiAgIH0KPiAgIAo+ICtz dGF0aWMgaW50IF9fbGlua19kaXNrX2hvbGRlcihzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBz dHJ1Y3QgZ2VuZGlzayAqZGlzaykKPiArewo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBhZGRf c3ltbGluayhkaXNrLT5zbGF2ZV9kaXIsIGJkZXZfa29iaihiZGV2KSk7Cj4gKwlpZiAocmV0KQo+ ICsJCXJldHVybiByZXQ7Cj4gKwlyZXQgPSBhZGRfc3ltbGluayhiZGV2LT5iZF9ob2xkZXJfZGly LCAmZGlza190b19kZXYoZGlzayktPmtvYmopOwo+ICsJaWYgKHJldCkKPiArCQlkZWxfc3ltbGlu ayhkaXNrLT5zbGF2ZV9kaXIsIGJkZXZfa29iaihiZGV2KSk7Cj4gKwlyZXR1cm4gcmV0Owo+ICt9 Cj4gKwo+ICAgLyoqCj4gICAgKiBiZF9saW5rX2Rpc2tfaG9sZGVyIC0gY3JlYXRlIHN5bWxpbmtz IGJldHdlZW4gaG9sZGluZyBkaXNrIGFuZCBzbGF2ZSBiZGV2Cj4gICAgKiBAYmRldjogdGhlIGNs YWltZWQgc2xhdmUgYmRldgo+IEBAIC02Niw3ICs3OSw3IEBAIGludCBiZF9saW5rX2Rpc2tfaG9s ZGVyKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIHN0cnVjdCBnZW5kaXNrICpkaXNrKQo+ICAg CVdBUk5fT05fT05DRSghYmRldi0+YmRfaG9sZGVyKTsKPiAgIAo+ICAgCS8qIEZJWE1FOiByZW1v dmUgdGhlIGZvbGxvd2luZyBvbmNlIGFkZF9kaXNrKCkgaGFuZGxlcyBlcnJvcnMgKi8KPiAtCWlm IChXQVJOX09OKCFkaXNrLT5zbGF2ZV9kaXIgfHwgIWJkZXYtPmJkX2hvbGRlcl9kaXIpKQo+ICsJ aWYgKFdBUk5fT04oIWJkZXYtPmJkX2hvbGRlcl9kaXIpKQo+ICAgCQlnb3RvIG91dF91bmxvY2s7 Cj4gICAKPiAgIAlob2xkZXIgPSBiZF9maW5kX2hvbGRlcl9kaXNrKGJkZXYsIGRpc2spOwo+IEBA IC04NCwyOCArOTcsMjggQEAgaW50IGJkX2xpbmtfZGlza19ob2xkZXIoc3RydWN0IGJsb2NrX2Rl dmljZSAqYmRldiwgc3RydWN0IGdlbmRpc2sgKmRpc2spCj4gICAJSU5JVF9MSVNUX0hFQUQoJmhv bGRlci0+bGlzdCk7Cj4gICAJaG9sZGVyLT5iZGV2ID0gYmRldjsKPiAgIAlob2xkZXItPnJlZmNu dCA9IDE7Cj4gLQo+IC0JcmV0ID0gYWRkX3N5bWxpbmsoZGlzay0+c2xhdmVfZGlyLCBiZGV2X2tv YmooYmRldikpOwo+IC0JaWYgKHJldCkKPiAtCQlnb3RvIG91dF9mcmVlOwo+IC0KPiAtCXJldCA9 IGFkZF9zeW1saW5rKGJkZXYtPmJkX2hvbGRlcl9kaXIsICZkaXNrX3RvX2RldihkaXNrKS0+a29i aik7Cj4gLQlpZiAocmV0KQo+IC0JCWdvdG8gb3V0X2RlbDsKPiArCWlmIChkaXNrLT5zbGF2ZV9k aXIpIHsKPiArCQlyZXQgPSBfX2xpbmtfZGlza19ob2xkZXIoYmRldiwgZGlzayk7Cj4gKwkJaWYg KHJldCkgewo+ICsJCQlrZnJlZShob2xkZXIpOwo+ICsJCQlnb3RvIG91dF91bmxvY2s7Cj4gKwkJ fQo+ICsJfQo+ICAgCj4gICAJbGlzdF9hZGQoJmhvbGRlci0+bGlzdCwgJmRpc2stPnNsYXZlX2Jk ZXZzKTsKPiAtCWdvdG8gb3V0X3VubG9jazsKPiAtCj4gLW91dF9kZWw6Cj4gLQlkZWxfc3ltbGlu ayhkaXNrLT5zbGF2ZV9kaXIsIGJkZXZfa29iaihiZGV2KSk7Cj4gLW91dF9mcmVlOgo+IC0Ja2Zy ZWUoaG9sZGVyKTsKPiAgIG91dF91bmxvY2s6Cj4gICAJbXV0ZXhfdW5sb2NrKCZkaXNrLT5vcGVu X211dGV4KTsKPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+ICAgRVhQT1JUX1NZTUJPTF9HUEwoYmRf bGlua19kaXNrX2hvbGRlcik7Cj4gICAKPiArc3RhdGljIHZvaWQgX191bmxpbmtfZGlza19ob2xk ZXIoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwKPiArCQlzdHJ1Y3QgZ2VuZGlzayAqZGlzaykK PiArewo+ICsJZGVsX3N5bWxpbmsoZGlzay0+c2xhdmVfZGlyLCBiZGV2X2tvYmooYmRldikpOwo+ ICsJZGVsX3N5bWxpbmsoYmRldi0+YmRfaG9sZGVyX2RpciwgJmRpc2tfdG9fZGV2KGRpc2spLT5r b2JqKTsKPiArfQo+ICsKPiAgIC8qKgo+ICAgICogYmRfdW5saW5rX2Rpc2tfaG9sZGVyIC0gZGVz dHJveSBzeW1saW5rcyBjcmVhdGVkIGJ5IGJkX2xpbmtfZGlza19ob2xkZXIoKQo+ICAgICogQGJk ZXY6IHRoZSBjYWxpbWVkIHNsYXZlIGJkZXYKPiBAQCAtMTIzLDExICsxMzYsMzIgQEAgdm9pZCBi ZF91bmxpbmtfZGlza19ob2xkZXIoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc3RydWN0IGdl bmRpc2sgKmRpc2spCj4gICAJbXV0ZXhfbG9jaygmZGlzay0+b3Blbl9tdXRleCk7Cj4gICAJaG9s ZGVyID0gYmRfZmluZF9ob2xkZXJfZGlzayhiZGV2LCBkaXNrKTsKPiAgIAlpZiAoIVdBUk5fT05f T05DRShob2xkZXIgPT0gTlVMTCkgJiYgIS0taG9sZGVyLT5yZWZjbnQpIHsKPiAtCQlkZWxfc3lt bGluayhkaXNrLT5zbGF2ZV9kaXIsIGJkZXZfa29iaihiZGV2KSk7Cj4gLQkJZGVsX3N5bWxpbmso YmRldi0+YmRfaG9sZGVyX2RpciwgJmRpc2tfdG9fZGV2KGRpc2spLT5rb2JqKTsKPiArCQlpZiAo ZGlzay0+c2xhdmVfZGlyKQo+ICsJCQlfX3VubGlua19kaXNrX2hvbGRlcihiZGV2LCBkaXNrKTsK PiAgIAkJbGlzdF9kZWxfaW5pdCgmaG9sZGVyLT5saXN0KTsKPiAgIAkJa2ZyZWUoaG9sZGVyKTsK PiAgIAl9Cj4gICAJbXV0ZXhfdW5sb2NrKCZkaXNrLT5vcGVuX211dGV4KTsKPiAgIH0KPiAgIEVY UE9SVF9TWU1CT0xfR1BMKGJkX3VubGlua19kaXNrX2hvbGRlcik7Cj4gKwo+ICtpbnQgYmRfcmVn aXN0ZXJfcGVuZGluZ19ob2xkZXJzKHN0cnVjdCBnZW5kaXNrICpkaXNrKQo+ICt7Cj4gKwlzdHJ1 Y3QgYmRfaG9sZGVyX2Rpc2sgKmhvbGRlcjsKPiArCWludCByZXQ7Cj4gKwo+ICsJbXV0ZXhfbG9j aygmZGlzay0+b3Blbl9tdXRleCk7Cj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGhvbGRlciwgJmRp c2stPnNsYXZlX2JkZXZzLCBsaXN0KSB7Cj4gKwkJcmV0ID0gX19saW5rX2Rpc2tfaG9sZGVyKGhv bGRlci0+YmRldiwgZGlzayk7Cj4gKwkJaWYgKHJldCkKPiArCQkJZ290byBvdXRfdW5kbzsKPiAr CX0KPiArCW11dGV4X3VubG9jaygmZGlzay0+b3Blbl9tdXRleCk7Cj4gKwlyZXR1cm4gMDsKPiAr Cj4gK291dF91bmRvOgo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9jb250aW51ZV9yZXZlcnNlKGhv bGRlciwgJmRpc2stPnNsYXZlX2JkZXZzLCBsaXN0KQo+ICsJCV9fdW5saW5rX2Rpc2tfaG9sZGVy KGhvbGRlci0+YmRldiwgZGlzayk7Cj4gKwltdXRleF91bmxvY2soJmRpc2stPm9wZW5fbXV0ZXgp Owo+ICsJcmV0dXJuIHJldDsKPiArfQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2dlbmhk LmggYi9pbmNsdWRlL2xpbnV4L2dlbmhkLmgKPiBpbmRleCAwNzIxODA3ZDc2ZWUuLjgwOTUyZjAz OGQ3OSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2xpbnV4L2dlbmhkLmgKPiArKysgYi9pbmNsdWRl L2xpbnV4L2dlbmhkLmgKPiBAQCAtMzIzLDYgKzMyMyw3IEBAIGxvbmcgY29tcGF0X2Jsa2Rldl9p b2N0bChzdHJ1Y3QgZmlsZSAqLCB1bnNpZ25lZCwgdW5zaWduZWQgbG9uZyk7Cj4gICAjaWZkZWYg Q09ORklHX0JMT0NLX0hPTERFUl9ERVBSRUNBVEVECj4gICBpbnQgYmRfbGlua19kaXNrX2hvbGRl cihzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzdHJ1Y3QgZ2VuZGlzayAqZGlzayk7Cj4gICB2 b2lkIGJkX3VubGlua19kaXNrX2hvbGRlcihzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzdHJ1 Y3QgZ2VuZGlzayAqZGlzayk7Cj4gK2ludCBiZF9yZWdpc3Rlcl9wZW5kaW5nX2hvbGRlcnMoc3Ry dWN0IGdlbmRpc2sgKmRpc2spOwo+ICAgI2Vsc2UKPiAgIHN0YXRpYyBpbmxpbmUgaW50IGJkX2xp bmtfZGlza19ob2xkZXIoc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwKPiAgIAkJCQkgICAgICBz dHJ1Y3QgZ2VuZGlzayAqZGlzaykKPiBAQCAtMzMzLDYgKzMzNCwxMCBAQCBzdGF0aWMgaW5saW5l IHZvaWQgYmRfdW5saW5rX2Rpc2tfaG9sZGVyKHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsCj4g ICAJCQkJCSBzdHJ1Y3QgZ2VuZGlzayAqZGlzaykKPiAgIHsKPiAgIH0KPiArc3RhdGljIGlubGlu ZSBpbnQgYmRfcmVnaXN0ZXJfcGVuZGluZ19ob2xkZXJzKHN0cnVjdCBnZW5kaXNrICpkaXNrKQo+ ICt7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICAgI2VuZGlmIC8qIENPTkZJR19CTE9DS19IT0xERVJf REVQUkVDQVRFRCAqLwo+ICAgCj4gICBkZXZfdCBwYXJ0X2RldnQoc3RydWN0IGdlbmRpc2sgKmRp c2ssIHU4IHBhcnRubyk7CgpCZXN0IHJlZ2FyZHMKLS0gCk1hcmVrIFN6eXByb3dza2ksIFBoRApT YW1zdW5nIFImRCBJbnN0aXR1dGUgUG9sYW5kCgoKLS0KZG0tZGV2ZWwgbWFpbGluZyBsaXN0CmRt LWRldmVsQHJlZGhhdC5jb20KaHR0cHM6Ly9saXN0bWFuLnJlZGhhdC5jb20vbWFpbG1hbi9saXN0 aW5mby9kbS1kZXZlbA==