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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6A435EB64DA for ; Tue, 4 Jul 2023 16:28:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 281B4280076; Tue, 4 Jul 2023 12:28:46 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1EE2C280098; Tue, 4 Jul 2023 12:28:46 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E4245280076; Tue, 4 Jul 2023 12:28:45 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id D05AC280096 for ; Tue, 4 Jul 2023 12:28:45 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 96883B0032 for ; Tue, 4 Jul 2023 16:28:45 +0000 (UTC) X-FDA: 80974463010.18.454A408 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf04.hostedemail.com (Postfix) with ESMTP id DC73B40022 for ; Tue, 4 Jul 2023 16:28:43 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=rYhrvsNp; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf04.hostedemail.com: domain of kbusch@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=kbusch@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1688488124; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=grp7IOV96yxy6pAh3ZZU8aXr+Lk0kn7LWhW74Y7myAE=; b=3cztBoFpdoM3hQnYC5hyhHcK07itBh6arRwuYdpfjdFtrci1Vhgi3zxFSdMtM5M/CC+hIQ Ce6nlhgQJl3FdBNRjt4uS5mko1Eac1YkS33cYzhh7uvrlzWxVjHtxGNPt9U/iAd4/anmG7 tGNs8cragqUMQ8WYZvNL8TD2hF0/66A= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=rYhrvsNp; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf04.hostedemail.com: domain of kbusch@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=kbusch@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1688488124; a=rsa-sha256; cv=none; b=oU8dtz3JKqpS6KOcTAcFtdTCXWABluFE+gvygvQSbvz6auAmVm3/OgqtSv3ZEH+YPVvE/6 6KtKdsgmeq1qtx3gNBn3mI3lKjr2ucn3Z7dkMkCCDJtsKiz/S5NxudjtNy1NWimt5SPQgZ p9tZP43g15KGsWMGsIjdABGl6SGf9V4= Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 1A3D9612CF; Tue, 4 Jul 2023 16:28:43 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7A8C9C433C7; Tue, 4 Jul 2023 16:28:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1688488122; bh=ZbfFFniWhSahnp7jSJ3oIaV9POCcbiLvynkhKSgpXe4=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=rYhrvsNpwqCJwn41eekT5X8PaPVwBQ6ub8Netmz5zCPt/qzVPnkLxH2Kjiq9nv1Cm yUeZjhUrBrMq2ThgKqf6VqdUdYp1P2/zpT5yvYD7siJiybpmyKwoPpaa5gXpr6CMMv akxinQnPPwXHrxodKNqiTb/6JTMYG4lY9mmxI0dhS9y7wawVJYcWdRHa64BuE/8weJ eX7co1v82fmGWp5kKAm9BaeWX8/tRjFqKX1EDWvGtKd5aZ5LCCXaAY86lmuE5eezEu Ix6OVXIAm9Wp1Cia2H4ClFO9rKC6nhjukt+dwjQnGXu6F26u0+VUNsprhPIs/s+nRo qHwq5/jxHTM8Q== Date: Tue, 4 Jul 2023 10:28:36 -0600 From: Keith Busch To: Jan Kara Cc: linux-block@vger.kernel.org, linux-fsdevel@vger.kernel.org, Jens Axboe , Christoph Hellwig , Alasdair Kergon , Andrew Morton , Anna Schumaker , Chao Yu , Christian Borntraeger , "Darrick J. Wong" , Dave Kleikamp , David Sterba , dm-devel@redhat.com, drbd-dev@lists.linbit.com, Gao Xiang , Jack Wang , Jaegeuk Kim , jfs-discussion@lists.sourceforge.net, Joern Engel , Joseph Qi , Kent Overstreet , linux-bcache@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-erofs@lists.ozlabs.org, linux-ext4@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, linux-mm@kvack.org, linux-mtd@lists.infradead.org, linux-nfs@vger.kernel.org, linux-nilfs@vger.kernel.org, linux-nvme@lists.infradead.org, linux-pm@vger.kernel.org, linux-raid@vger.kernel.org, linux-s390@vger.kernel.org, linux-scsi@vger.kernel.org, linux-xfs@vger.kernel.org, "Md. Haris Iqbal" , Mike Snitzer , Minchan Kim , ocfs2-devel@oss.oracle.com, reiserfs-devel@vger.kernel.org, Sergey Senozhatsky , Song Liu , Sven Schnelle , target-devel@vger.kernel.org, Ted Tso , Trond Myklebust , xen-devel@lists.xenproject.org Subject: Re: [PATCH 01/32] block: Provide blkdev_get_handle_* functions Message-ID: References: <20230629165206.383-1-jack@suse.cz> <20230704122224.16257-1-jack@suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230704122224.16257-1-jack@suse.cz> X-Rspamd-Queue-Id: DC73B40022 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: z4kdmxxrh68igrzzhf7wxdjithzzcrh8 X-HE-Tag: 1688488123-133523 X-HE-Meta: U2FsdGVkX18dtUANyC/VFPEkqANSFyr+LpujbQCZ15wWqETTpuoru9n9jCupnhPNN7Sjeu5KqWAiFdel8/AKRFPIBaEdTxxIRDISB7pj3G0AeysG/KFEcACNnXf+LtjBX1KD90/rDpj+e3++XXSGty1vV2qCdNCTs+tlYkVx9ZfcCK8WylZlIdCRdQbFXFMvfffuV9/qP3juaZG49L4K6zY9eqaCxrUMdlttAJUmdw+AddFemdKwGnktLn5Pd7mUjEBQfT6/azj4rvOJg9CowMGeKIy+Pv1p6xzN8NYYIrHvRRxPy/+9bindzlhzQ/WNCJImlFv62kzQwJl/c+m1LgsT2k0HGNgys+9Rdk8qHjGmyvX02S3/kU5tMIRE8MUeMzZiPZa5rghBi+Z5TlY4RtjQJ1B/aO5nP7nA+MVW14sZb5tzygw/f7Yzb+s+uiFZtF8C4blEA8gQwaPdBQ7s373X4BR8pfO+GFYQlogFe4tN9Z90wJMtWlR2iEcOsOhenK7w4oZAGEqi/Tzpl7nWGBhDo7/T3tz1zLlF1DORhO6bd7A/cIo8Ag01EDYOQfY5WBCRZ9kPhLfPqPfVvw9aN78kgfY36ilQ8h+HZe90O/NiWAZxRJFLCbQoSuiFVQKtq+QRWoRc7Xzh8FBLYFXsNEEylGVIJUnt/7di+3CKzbvISbVd7AUFd849lT8KEAVpMPm8rzSSqEBMpFleN345ygZrSv91pbKie8OP6t9d/OakboE4W8VVRbip9241+NkC/K8snrk5xJWvBaZz1a0i4g62JmBt/NbDvM47HgfdJDip91GQZpViX070TDo/P5MMyp5MDZEynBQj2SOh9uxHObO4jGVHZBxs2tTuDPJYdkJAA1oDP1WtwOvlYYEn7H2kt4XhC8WcORd+KvfRFB8PBblP14Ys6xtEY3om9SPvHMV3X2J1Z8PS9VsHSrgVOOjQnCWhEQQYtQaMx1IvQty UFFsbidr yp/Ae8kooeiM+AbKvT/ZSP0VnUepRfBTUCUAdj5lHQhLNKG7b4n0DG9OUStfL6Ot3AsoclcKEy+TgmmlehipQJjWY43oVON00lRuhNJMFNwHnXCt6j9hX0c7NJalDn3EBCJZuJbhZLL/CaXBm3uIsY90KJlo9e/HOwpClB/Pp3NsuFEXmkIfrKqcYghsWLIgdZszYZOsi/vwwfU5fBO4Kt7AAARM6fYE0+QpKAPI1S9IfA3gL+uPKjukSTSLVc85/XayOPODZH4oy8Ef5p2m2OrbRCx55q2xP3/WPY7GffRY8lTZ97NncmfOsKuDUcAAabR/zQ6SNiEb62wQbyxYearmxa6A/PEQGx23W5LK2Wz9ai19ogq8rI++mnbGciqE0N8dLD2F9VtZXnI5xxPodpis7vA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Tue, Jul 04, 2023 at 02:21:28PM +0200, Jan Kara wrote: > +struct bdev_handle *blkdev_get_handle_by_dev(dev_t dev, blk_mode_t mode, > + void *holder, const struct blk_holder_ops *hops) > +{ > + struct bdev_handle *handle = kmalloc(sizeof(struct bdev_handle), > + GFP_KERNEL); I believe 'sizeof(*handle)' is the preferred style. > + struct block_device *bdev; > + > + if (!handle) > + return ERR_PTR(-ENOMEM); > + bdev = blkdev_get_by_dev(dev, mode, holder, hops); > + if (IS_ERR(bdev)) > + return ERR_CAST(bdev); Need a 'kfree(handle)' before the error return. Or would it be simpler to get the bdev first so you can check the mode settings against a read-only bdev prior to the kmalloc? > + handle->bdev = bdev; > + handle->holder = holder; > + return handle; > +} > +EXPORT_SYMBOL(blkdev_get_handle_by_dev); > + > /** > * blkdev_get_by_path - open a block device by name > * @path: path to the block device to open > @@ -884,6 +902,28 @@ struct block_device *blkdev_get_by_path(const char *path, blk_mode_t mode, > } > EXPORT_SYMBOL(blkdev_get_by_path); > > +struct bdev_handle *blkdev_get_handle_by_path(const char *path, blk_mode_t mode, > + void *holder, const struct blk_holder_ops *hops) > +{ > + struct bdev_handle *handle; > + dev_t dev; > + int error; > + > + error = lookup_bdev(path, &dev); > + if (error) > + return ERR_PTR(error); > + > + handle = blkdev_get_handle_by_dev(dev, mode, holder, hops); > + if (!IS_ERR(handle) && (mode & BLK_OPEN_WRITE) && > + bdev_read_only(handle->bdev)) { > + blkdev_handle_put(handle); > + return ERR_PTR(-EACCES); > + } > + > + return handle; > +} > +EXPORT_SYMBOL(blkdev_get_handle_by_path);