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 66D2CC8303C for ; Tue, 8 Jul 2025 16:06:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A6F4B6B0096; Tue, 8 Jul 2025 12:06:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A20C26B0098; Tue, 8 Jul 2025 12:06:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 90E6C6B0099; Tue, 8 Jul 2025 12:06:42 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 7CF486B0096 for ; Tue, 8 Jul 2025 12:06:42 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 256A114059D for ; Tue, 8 Jul 2025 16:06:42 +0000 (UTC) X-FDA: 83641575444.29.3B015C9 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf10.hostedemail.com (Postfix) with ESMTP id 68F0CC0006 for ; Tue, 8 Jul 2025 16:06:39 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=saFJkSVN; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf10.hostedemail.com: domain of snitzer@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=snitzer@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751990799; a=rsa-sha256; cv=none; b=JvBt+AkMC+wbJu4qvWH+T5Jg6W4wOV22KNtkQonmggh6Qh4q5xf7mny+8B4Ijjt9mfbR7n yz+80kSA5wJ2KSvPhGxF1EFwAgkEYDajN0RrPA7k+Q092kjnqaVSgt1qgsiWpU+Xru/Zss Lav/a0rGKVtcnyhWL89FyV9B6++ZnHc= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=saFJkSVN; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf10.hostedemail.com: domain of snitzer@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=snitzer@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751990799; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ox9hhNKYAsK0Yf1mAHk/IZ68Q+uyYen8ItgtNPYdNcg=; b=uLBvOmtCEUa1ElXPjX07XBOXHGZWU7/OoKAnZGZ9Hz/O/gYuyKvPr4N6Blpf4T4Xsxgl5W 7xq52asn4fh5ARxFrlFm4Q7tdNZfkS6waQkLUp0axzGkK2Ojq+Cxis9rE5s3tr7Y8WtudX oW24J1E/gVb5c32ZjngoKomsPhgkw2E= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 495FC5C5E7C; Tue, 8 Jul 2025 16:06:38 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id BA8F9C4CEED; Tue, 8 Jul 2025 16:06:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1751990798; bh=z6IE/iV/Qey3mNmw+1HVgy4SEo8XOTOVWa3lXjNRe70=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=saFJkSVNGfWcxoeGGceODlw+CX/0sUce7WQ1KXlHSXx6CDH6pU80OscooUQMSqlYo 2KHuoum61BzF3yhZtaE+joS30gX5GuAyQYBF5trhNvLHezPOJ7lBRkYPHKlQVcP0Gw 0IYnhSD+9A4OlyItpA6vOMl1/DLcjyGVDH92hb4ZDHA2Ap/r0dsRFyhrUfq6ZVouGy AauFAwrOOjtKDCehDyqbjIr6hDpKaH3rUvnE9jRgKS8fCbxcqKqt/iMBFjx4eFZT/i kWaYM463/AcsedMS5/6aAmwkju762wap6DaZR2ggfF05qPhGg6uzrVGHzE4R2yx70Y wIsVaknc99jJg== From: Mike Snitzer To: Chuck Lever , Jeff Layton , NeilBrown , Olga Kornievskaia , Dai Ngo , Tom Talpey , Trond Myklebust , Anna Schumaker Cc: linux-nfs@vger.kernel.org, linus-fsdevel@vger.kernel.org, linux-mm@kvack.org, snitzer@kernel.org Subject: [RFC PATCH v2 1/8] NFSD: Relocate the fh_want_write() and fh_drop_write() helpers Date: Tue, 8 Jul 2025 12:06:12 -0400 Message-ID: <20250708160619.64800-2-snitzer@kernel.org> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20250708160619.64800-1-snitzer@kernel.org> References: <20250708160619.64800-1-snitzer@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 68F0CC0006 X-Stat-Signature: n1ha9ganpsdct7mcgueqba4fgbs7dpda X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1751990799-984603 X-HE-Meta: U2FsdGVkX1+EELR48hNcdw5EAVsqJEASxNp2aSJuz60qnjFrHUKgM4VzWdYb31AkZ3fpmdXaU5iO0knM/WuQ9DwkycA1KbGAWlNWD6aqXKZCXj1UEWSoZCMCIA84hcoMSjbvapo9kSQKb+sKHqz0ZTNKI681Vkk3SGJnfAibuB0DfA3drvcdTNsr0I2gtFlygeqIc2RVvxqPrIGCcAnjPAx7BSvVSahhA3kkjCt7me2P2N5prpvM9t0suoaG2IqXB9Dm5KUrlFeiwWXsVwm0cQfh61BY9e01tyKoyt4oB7z0f0TJl5rUMlM53SsKvzeebsOTSefB+hz26kQ+0rmUzJRJac/Pjjh18FD5JSW0DxM+wxzrg4dey6/Sp23HBom+KgtmrQQlkTXP3jsbF//+C8ZDH+uvgCo5a/ljJ64tUYl9We+Nbv5av6mt8mhDm86OSQcVT5K2DHOA2bemi0y/WiCabJrk7YV/foSMD8ae3N87HgICmqdB1+w1W6qRQzCWkCOMsX5WD1pJxKzTcU586VkoYFA0H1ud/ILasMQX/Lvmd1pkLY8JjaLLW9vhxZjCsZKJw+T8D3I9+jMK6bRSynI0H6thTogExTdNYb5XQEt/qfMczL3Yk4tgIQiL0aS1ST/3JLxAwAjKd6U/5R7KeBqakugusYhX/lMjIoxTfqsQYasD10ugsyh79Jqxb5anEXbSvLxQj8hN3M9uExdCO1kQ0AWE3pBeEelACmIwKulnB3jKdgkIR4+LFrkkCxlaNwvjb99p3lFzFdmzV6PzaNokd8WVMQPFARXLxhaim+LHfdQtjtZxUhYxGjez/CA4+/wsv8+GJ9Slgf8d8xyYlnuVshJuGDZFx7URJ56xy8QzUUR4msh3whERXXsvulYjrDcfbUzYUyHxJmBfaVkM7ill2PKJXkAovM9cDcIZtWUQntGeS5o8Bjub01bIAa5F/KBjlF9AnryoStwaf8Z ZXaV+M48 YSFMk1NhFpPhUlh1jXjoQMde4eyRmpLXwHkmsMYYUMHChmQoA8r+iEJKBYDDuiIktDGVcp78OAoKCtM/q5my6g9wHvjEj1Q1nHSrG/1dN7Mz6uRjhPX7svmgRsJj/UYKvn7Exe0f61iSkw2diqVBbcyRIdxdQeiP5z1jBJYMxOxjHz47P6TBUWc+k3w1MJfP5obD2qWEn+fHcfwr/bnojDJFWt8ZuBReV3ebhIVwUYE9KdnTxaf+G9auxwKbrSqmVQyvRSdmZMp+JcMeqxIJX+PpmDvLShscvP9HGKCYK31volmH6Kk4V+s0DGA== 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: Chuck Lever Clean up: These helpers are part of the NFSD file handle API. Relocate them to fs/nfsd/nfsfh.h. Signed-off-by: Chuck Lever Signed-off-by: Mike Snitzer --- fs/nfsd/nfsfh.h | 37 +++++++++++++++++++++++++++++++++++++ fs/nfsd/vfs.h | 20 -------------------- 2 files changed, 37 insertions(+), 20 deletions(-) diff --git a/fs/nfsd/nfsfh.h b/fs/nfsd/nfsfh.h index 1cf979722521..6f5255d1c190 100644 --- a/fs/nfsd/nfsfh.h +++ b/fs/nfsd/nfsfh.h @@ -14,6 +14,8 @@ #include #include +#include "export.h" + /* * The file handle starts with a sequence of four-byte words. * The first word contains a version number (1) and three descriptor bytes @@ -271,6 +273,41 @@ static inline bool fh_fsid_match(const struct knfsd_fh *fh1, return true; } +/** + * fh_want_write - Get write access to an export + * @fhp: File handle of file to be written + * + * Caller must invoke fh_drop_write() when its write operation + * is complete. + * + * Returns 0 if the file handle's export can be written to. Otherwise + * the export is not prepared for updates, and the returned negative + * errno value reflects the reason for the failure. + */ +static inline int fh_want_write(struct svc_fh *fhp) +{ + int ret; + + if (fhp->fh_want_write) + return 0; + ret = mnt_want_write(fhp->fh_export->ex_path.mnt); + if (!ret) + fhp->fh_want_write = true; + return ret; +} + +/** + * fh_drop_write - Release write access on an export + * @fhp: File handle of file on which fh_want_write() was previously called + */ +static inline void fh_drop_write(struct svc_fh *fhp) +{ + if (fhp->fh_want_write) { + fhp->fh_want_write = false; + mnt_drop_write(fhp->fh_export->ex_path.mnt); + } +} + /** * knfsd_fh_hash - calculate the crc32 hash for the filehandle * @fh - pointer to filehandle diff --git a/fs/nfsd/vfs.h b/fs/nfsd/vfs.h index eff04959606f..4007dcbbbfef 100644 --- a/fs/nfsd/vfs.h +++ b/fs/nfsd/vfs.h @@ -160,26 +160,6 @@ __be32 nfsd_permission(struct svc_cred *cred, struct svc_export *exp, void nfsd_filp_close(struct file *fp); -static inline int fh_want_write(struct svc_fh *fh) -{ - int ret; - - if (fh->fh_want_write) - return 0; - ret = mnt_want_write(fh->fh_export->ex_path.mnt); - if (!ret) - fh->fh_want_write = true; - return ret; -} - -static inline void fh_drop_write(struct svc_fh *fh) -{ - if (fh->fh_want_write) { - fh->fh_want_write = false; - mnt_drop_write(fh->fh_export->ex_path.mnt); - } -} - static inline __be32 fh_getattr(const struct svc_fh *fh, struct kstat *stat) { u32 request_mask = STATX_BASIC_STATS; -- 2.44.0