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 273DAC83F18 for ; Thu, 10 Jul 2025 07:51:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BE3B26B009A; Thu, 10 Jul 2025 03:51:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BBB5B6B009D; Thu, 10 Jul 2025 03:51:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AD0B66B00A0; Thu, 10 Jul 2025 03:51:48 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 9E3ED6B009A for ; Thu, 10 Jul 2025 03:51:48 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 4813959157 for ; Thu, 10 Jul 2025 07:51:48 +0000 (UTC) X-FDA: 83647585896.23.9D67422 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf09.hostedemail.com (Postfix) with ESMTP id A2DE614000A for ; Thu, 10 Jul 2025 07:51:46 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=2hcSlqLx ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752133906; 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=nDZPu0ZiFruAreTK2Fx1Etdv0ZbXac8nfj9wZN830O4=; b=suLMyjbhzjbX8zVGZyNhjX9u2vBqSQUpgMiS8+841y1XNdnGDOMByts2q3+3sGvVaRtv49 Q3d7NScJNtC67QQkwCYWpTxHlVascOilJZRbtEn9i9RzCMTBJj0njB/FP2+TvG5HicNFrh 4bFtuutxPaSz7y29kpkLaXTOW/89SEs= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=infradead.org header.s=bombadil.20210309 header.b=2hcSlqLx; spf=none (imf09.hostedemail.com: domain of BATV+2e715cd67e78fc9cab88+7991+infradead.org+hch@bombadil.srs.infradead.org has no SPF policy when checking 198.137.202.133) smtp.mailfrom=BATV+2e715cd67e78fc9cab88+7991+infradead.org+hch@bombadil.srs.infradead.org; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752133906; a=rsa-sha256; cv=none; b=7M0fP5HkwlbK6CIJzucPkVVpQfyPnpdrxbTRymGOYGjESUo8Rt6byEX5ZHtUy89U2kViBp /3Xs43ajgFjXMb895w//p8LfesyV4JxH1onF+o6EUcd98vuKA5Qj4fajGR/iD5IOnwwNkN f5evQp4HYYKvpvNLu6ldbtn59etQ76I= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=In-Reply-To:Content-Type:MIME-Version :References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=nDZPu0ZiFruAreTK2Fx1Etdv0ZbXac8nfj9wZN830O4=; b=2hcSlqLxeGAWo4IyCR5jfJFHND +Xim09ub+Q7T3x7B7Ap9fsNF6NVg8Nvbs7V/0gr7/3ngZVrpLXnrMdalEhKYIkBFscgFEXHvESU6M jp0/vP8gOdIqLEDJMew8aZ9gfWWIzgyP5hq8JnasGI0PwVGwGFIX62FV4a5pMOfpZSXlpOSWhRekP i5jqsmyaScKEttN9/0WeLIbzW2G2Ne643OLBdbbxSt2mIPBF2nvhVx2tGKnR48LCK45AM/7oi+ANw 7ho1J1Jeziac9JcnWezClL3uo3y2hvScggUVmbt7+JdovmwbgFxI4hUNti7ISeTJdCCCZ38zitQIR AdKS5G3w==; Received: from hch by bombadil.infradead.org with local (Exim 4.98.2 #2 (Red Hat Linux)) id 1uZm4E-0000000B4jk-3TOc; Thu, 10 Jul 2025 07:51:42 +0000 Date: Thu, 10 Jul 2025 00:51:42 -0700 From: Christoph Hellwig To: Mike Snitzer Cc: Chuck Lever , Jeff Layton , NeilBrown , Olga Kornievskaia , Dai Ngo , Tom Talpey , Trond Myklebust , Anna Schumaker , linux-nfs@vger.kernel.org, linus-fsdevel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [RFC PATCH v2 8/8] NFSD: issue READs using O_DIRECT even if IO is misaligned Message-ID: References: <20250708160619.64800-1-snitzer@kernel.org> <20250708160619.64800-9-snitzer@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250708160619.64800-9-snitzer@kernel.org> X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html X-Rspamd-Queue-Id: A2DE614000A X-Stat-Signature: qkc3n1ehhj4n84bfjeyd5ei9t1njbc49 X-Rspam-User: X-Rspamd-Server: rspam07 X-HE-Tag: 1752133906-11442 X-HE-Meta: U2FsdGVkX1+nfwzMpO9avo38V7uEUtBO2GvdVxknCFlXnJ/SdqkWqnyCa6OMWYTHn66c7yaehOljdEYxyObmZEb8HHsP0bkjpdg+pC0GsvpUWGsI0Lehj+447cs3cwnFviNKNNtNZsXmD2GfoCq2Gzr7LNRRqDNpDUKhpH4W/IsXaG0bSS836KT48pNshErkDdv0DD+CunjNtSH3cEltZzG5coKCkN5GqkXYOL++LjhZbsTGG/zRvkQrhYx9O/UWwG+aHjh9NFqxlfrt5Y0R0bcq1xgIfI1GMOo3Vb3Qx4ixJLgcIyZOPUbgrmA83wFKYjooUNuspzKknIgXFVtyX2gElTRauYHC3SsZdGDhzqvr5Hk1DuE+U3StXCd/nozGlBkMC7MFfY1J57HwY8C75TknIho8xaV++kQuPOgRLFydeBJEk3FS+RtcRj5XQxNfRXm8UFlULGcc4J721EX+GMYuuQdThh2ww5A0THAYIiE0uu3KiYt49LgVLHr2RtX1MY4TbgVgLebpHFxhIK7PfRHbKWYzvREOgdV1Q4aOakuwEY0PKwPU+1K4gmdIeyiNE/fMLTREGMLLBAQtKO4xdEAu1svn9pFvDDC+7H2w0jFhs+l4PV24TCXU4g0TMX9v5hbmYlGN4O+NcmcN25R8Z0yC8LWJRfLjqopELyNfaly82twenVS0Nvs1bTsUv9u3F86F0f/bJDiPXxw8q/Xdp6iBxk4+4njoFaDtRz9jK3U4FzNdFiOcRHy9acxnnJP+nLZ3oE0tsSRFl3/pk5UV8i/7ixsa3GMAQBCiT57IxJyXRdhTCM9x4GNdeQKch/+QVokZ0lbiF7ZnfPf5XP8O7n6C65oWPyIBynubwNkcXEEUI2WQSMTZq7pl69io3U/h+7Wr56kGkISIQZGVafoi4xu35UC463EtvXTSwLTEItQcmX431PVCp/GQeFb/yj/Jxk847vhTRtSHhGrxai+ WQTVOvfX z0h04eWyf6MVh771FhBbt2VOxJwJiQjsgyDhzGUC3YiLMjJlNZzdnIFPdOAUe3Hgt2Ug4QWBhQH/uGDN7luXkgpyFbnxI1Y1bg7T7Xk8Tdep5NrHmpwHI/xAokNO2IyxslfmOcgKTU2hBOJXu31V1Io7S83kDvcVmKXV8lwDgmYYb0KoeztfZ8uB8xUoc2zG7yYtGEOLnQ7wWnvvWMefruhIlwn5JyOpW1zgMgY3ObS73O7o8Y5xz7hITPw8ED8zqumn8fYdCOqE4ELcrz5nBsuvLCc3ovlOw7lLJkFxvNJiEsEABML6qBNwFFXdllfKeOmZqmLDZfvrNxvL3DFxqrstb4dvpuoSaHMjPi49pKgy+auLmmQb4c0nzcq6wabE/NkKqMxX4d30y5lk0LGZR3fH9lcD3a1MeLb79uOtuxUrj7BGQ4DH0tDfrjTDqfz3m+VccZ0gumC4ZOrXtm2ruCmkyXtcxw9O/sE7b 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: On Tue, Jul 08, 2025 at 12:06:19PM -0400, Mike Snitzer wrote: > +static bool nfsd_analyze_read_dio(struct svc_rqst *rqstp, struct svc_fh *fhp, > + loff_t offset, __u32 len, > + const u32 dio_blocksize, > + loff_t *start, loff_t *end, > + loff_t *start_extra, loff_t *end_extra) With this amount of arguments, especially out arguments that return values the better choice is usually to have a struct. If not using two-tab ndents at least make it a lot more readable.. > +{ > + ssize_t host_err = bytes_read; > + loff_t v; > + > + /* Must remove first start_extra_page from rqstp->rq_bvec */ > + if (start_extra_page) { > + __free_page(start_extra_page); I can't really follow the logic here. Why must it be removed (and freed)? Can you write a more detailed comment here as the logic isn't very obvious. > + *rq_bvec_numpages -= 1; > + v = *rq_bvec_numpages; > + for (int i = 0; i < v; i++) { > + struct bio_vec *bv = &rqstp->rq_bvec[i+1]; > + bvec_set_page(&rqstp->rq_bvec[i], bv->bv_page, > + bv->bv_offset, bv->bv_len); > + } This is basically shifting down the bvecs, right? Why not simply use memmove?