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 D823EC369AB for ; Mon, 21 Apr 2025 17:19:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4D0BA6B0011; Mon, 21 Apr 2025 13:19:10 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4315D6B0012; Mon, 21 Apr 2025 13:19:10 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2D3396B0022; Mon, 21 Apr 2025 13:19:10 -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 09AB96B0011 for ; Mon, 21 Apr 2025 13:19:10 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id C39DE5C4D2 for ; Mon, 21 Apr 2025 17:19:10 +0000 (UTC) X-FDA: 83358711660.20.4C4BE86 Received: from tor.source.kernel.org (tor.source.kernel.org [172.105.4.254]) by imf30.hostedemail.com (Postfix) with ESMTP id 2D09B80002 for ; Mon, 21 Apr 2025 17:19:09 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=g2tlHUyR; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf30.hostedemail.com: domain of djwong@kernel.org designates 172.105.4.254 as permitted sender) smtp.mailfrom=djwong@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1745255949; a=rsa-sha256; cv=none; b=yrz7PoajQwMWhaysL9GYNODKC98zS0Dcahuq2M+vosK0DX6QKK4Q1Vz429HCPNv9avBvh1 a5H3l2hrj2QNSOClO+/6/0Sy1YuKP2CMbR0rD17G31pAd09+McID02z5iRfgLveg29xPis 9dM1jQrci/sm+TinEUIL2w69jOskAhc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1745255949; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=mRFXsku+TqidwgdR1q6DgxcE/id7+aiRJDAFgpR0C8Q=; b=YyXjCrAV2kiGfzS4EZKO+1fBpt5k095SFD31Ygu6cu7yhbT/A4xVetLbQbmmtLzuEX3XRC I5Co12QMA3TMMPuY833myvQ10k5QEf1DAW4lJSg98OcNH1RNEQT9VdrI1eqCN0Psy81Ake 2fVEM+dISzMwqqxSzVYn1qcuvgPlAM8= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=g2tlHUyR; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf30.hostedemail.com: domain of djwong@kernel.org designates 172.105.4.254 as permitted sender) smtp.mailfrom=djwong@kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id 83FE460008; Mon, 21 Apr 2025 17:18:49 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4382CC4CEE4; Mon, 21 Apr 2025 17:19:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1745255948; bh=+H6fFWWt2/LM4OHZdgzZEKwmbr40JTh8CZAIUJwoGKc=; h=Date:Subject:From:To:Cc:In-Reply-To:References:From; b=g2tlHUyR4qqHxf3rfBK4X1nWoAmfqe//dTOepUmG+ci1hw8WBAJEFnYoCMC016PgB ICE1S6CPyJjhtZIECCBXFTRvQKYw1WpHYDSPDgkFAUtOLvmBcR0HswJVnpnlemmHr1 c8TmIs9gzZdvESeq3+ElFoe4Rsu/uY/vyt+l/2PffGdzEWJeVx5SRpaO84u+zBY43F sycqG5Og9fzsfXArQWKGq4+3lKJJaeTfI9bcOXraVmGE76c1vCs3/iJYX8ABe3phBZ JEqcmfcm+29KjXpnAkXK2ZZzZA/ivGaOXOrNBfJ2QP7PAZ+XpmPOVdtj4Th1eNpWJH m7ixgbDDO1dPg== Date: Mon, 21 Apr 2025 10:19:07 -0700 Subject: [PATCH 2/3] block: hoist block size validation code to a separate function From: "Darrick J. Wong" To: djwong@kernel.org, cem@kernel.org, axboe@kernel.dk Cc: shinichiro.kawasaki@wdc.com, linux-mm@kvack.org, mcgrof@kernel.org, linux-fsdevel@vger.kernel.org, linux-xfs@vger.kernel.org, willy@infradead.org, hch@infradead.org, linux-block@vger.kernel.org Message-ID: <174525589069.2138337.10477679176303850629.stgit@frogsfrogsfrogs> In-Reply-To: <174525589013.2138337.16473045486118778580.stgit@frogsfrogsfrogs> References: <174525589013.2138337.16473045486118778580.stgit@frogsfrogsfrogs> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 2D09B80002 X-Stat-Signature: 7dm47e1wrnkr5ar1q9q6i5jp5j4q5ckz X-Rspam-User: X-HE-Tag: 1745255949-72964 X-HE-Meta: U2FsdGVkX18+uuPzRvj0wexPcczoWl9hFzUoADKqcfcEp689p6h9T+wN5NEbZY6eAAxsEzXC2qLGomBk5yIZPfud/S23vsoJxxUV1kfGPlKNFh+gJ4kOzS74Wf+RKMt3N6ffCDE7w8gt4zfmHJwX9R1F/EB1gZxIaP9tBOy0x9EgzEYy6vcPLFPZ8015L3CLSLEUdX/lO3NlaM+2uoiFYqcO7Slo5EJ5dwh/wBe+fCGS0BuFlCEcHpTJ7tHmZN59x2VNkyWQ1Tv41tcJwQWfDtUYWC6e5ferQs763yOOH7uQArjY3n5kCMuHffwAi7NRgdPbB/3/+ZYPLWG6qKodBFgPs0ZUYDB/08MLaUdHkTneSiRr5AC64AlwCHZHhTbQ1F0QVN8kZYb5T2+roY+hRT9Z/BOxfK1Gkd/gTuqW0BZB+Xg53uC760l3njsY/z5YnBVY9y8pfxFI8LqQpnEP5ijElZvs7GGJ4JOlZkq/PZCqSdb/aVFRfLozoUSgbfaeVVcwTo7U29+7kKDU6YnHCgjTjtGdd4yKtlPbQtCzpylFhgkZRuHnBVjgGTAkpTEdCSkNcuA4gpD5wrEeSp3uvVPpYZXRNa1Q4AOf9owKz8/Nb77XbARgdkSgJ3utFxJu76obHRX8mMWGxR7jPMCTF5Wv3HR3tRAGevarDxBiRPsMySPkWEozXcRPq6BWHzE+CCF+CgF/70qNmf2X7QCup6sJM4/ZBELEfhWDd670iu9k/IeIcQf6eJbtDNpaORgSsbhC2/TCrmqsqXI+xmKKsXTJHitgWu90TZDyAISsFKX1f0DsPfDTeyiyKfVxz/6fjeSMyjXzrcWEx8sBKIs8zSTF4/LlrIf+Z+zF0Pv3yezHnDAr16l8rji2uiFsxfigTU+j6+D5l6SsjnCwRDp/DUOW7NvjAW6o6FQ89lfet6DY4EldZg+AUyDwkc3FAOcKXChtLoB7sHPJ0PBS7dY oxb9FYrS PazTIG9l6ZFI7TBTIBoeh+kZ2y/M8W41pdOhzhoFBwKSToQLreFIvyE1RbIOt5OFqFkaqrTNTXgjD8WcsQYfCVXbscDe59GEARIZ6lqHx22wkIkU/bou77Yo82po8NDr7ucGbQEK/6juWE/Xk/aYjTRhiHLW8wKszaMW5CDKyf0byHCmvT3zhp3BfuBRIBnviW+R2x2ousajG1sCHquoG6EDHW7U4S9eOsvkJP65yKJbqP8cGG971XK3kPflhBuPoH+kqWu+9YYQ7ad3XANxKNB9SYg== 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: List-Subscribe: List-Unsubscribe: From: Darrick J. Wong Hoist the block size validation code to bdev_validate_blocksize so that we can call it from filesystems that don't care about the bdev pagecache manipulations of set_blocksize. Signed-off-by: "Darrick J. Wong" --- include/linux/blkdev.h | 1 + block/bdev.c | 33 +++++++++++++++++++++++++++------ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 294bbae415aa09..462e23a1e8b261 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -1618,6 +1618,7 @@ static inline void bio_end_io_acct(struct bio *bio, unsigned long start_time) return bio_end_io_acct_remapped(bio, start_time, bio->bi_bdev); } +int bdev_validate_blocksize(struct block_device *bdev, int block_size); int set_blocksize(struct file *file, int size); int lookup_bdev(const char *pathname, dev_t *dev); diff --git a/block/bdev.c b/block/bdev.c index 24984ec13e7cb2..1588f96e4f0a35 100644 --- a/block/bdev.c +++ b/block/bdev.c @@ -152,17 +152,38 @@ static void set_init_blocksize(struct block_device *bdev) get_order(bsize), get_order(bsize)); } +/** + * bdev_validate_blocksize - check that this block size is acceptable + * @bdev: blockdevice to check + * @block_size: block size to check + * + * For block device users that do not use buffer heads or the block device + * page cache, make sure that this block size can be used with the device. + * + * Return: On success zero is returned, negative error code on failure. + */ +int bdev_validate_blocksize(struct block_device *bdev, int block_size) +{ + if (blk_validate_block_size(block_size)) + return -EINVAL; + + /* Size cannot be smaller than the size supported by the device */ + if (block_size < bdev_logical_block_size(bdev)) + return -EINVAL; + + return 0; +} +EXPORT_SYMBOL_GPL(bdev_validate_blocksize); + int set_blocksize(struct file *file, int size) { struct inode *inode = file->f_mapping->host; struct block_device *bdev = I_BDEV(inode); + int ret; - if (blk_validate_block_size(size)) - return -EINVAL; - - /* Size cannot be smaller than the size supported by the device */ - if (size < bdev_logical_block_size(bdev)) - return -EINVAL; + ret = bdev_validate_blocksize(bdev, size); + if (ret) + return ret; if (!file->private_data) return -EINVAL;