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 21838C83F04 for ; Wed, 2 Jul 2025 14:12:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A1AC26B00A2; Wed, 2 Jul 2025 10:12:38 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9F2C06B00E5; Wed, 2 Jul 2025 10:12:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 908A56B00E6; Wed, 2 Jul 2025 10:12:38 -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 80F376B00A2 for ; Wed, 2 Jul 2025 10:12:38 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 4727016051B for ; Wed, 2 Jul 2025 14:12:38 +0000 (UTC) X-FDA: 83619515196.04.F24A515 Received: from mail-pg1-f170.google.com (mail-pg1-f170.google.com [209.85.215.170]) by imf17.hostedemail.com (Postfix) with ESMTP id 71EF540003 for ; Wed, 2 Jul 2025 14:12:36 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=bnFvDxbI; spf=pass (imf17.hostedemail.com: domain of chentt325@gmail.com designates 209.85.215.170 as permitted sender) smtp.mailfrom=chentt325@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751465556; 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=3hi0b4Q2TMU9s9ow4O1FxnYpGW2LdSH037wzbnfcLAI=; b=6LXdEfJbRawm+lM8Tn0e6bK+/rENIOcuv1SpB9quPDnZVpqucYpLCBbz+1GtsexUA7teVg /akjKvWanDq3qBIrgbnX59gUn0UbsnYeSW6O5rVtYsqtqXa4aX7vdO9aNCCXYIc08A7KPK SfvENZKoM3THOhct1jN8TQYrYxSln74= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=bnFvDxbI; spf=pass (imf17.hostedemail.com: domain of chentt325@gmail.com designates 209.85.215.170 as permitted sender) smtp.mailfrom=chentt325@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751465556; a=rsa-sha256; cv=none; b=CHArb48vEl9JZRo0RqPAZn7slWKCcP1bVt1o9P6/UakK9fuOdZM+jWq5HQasbtUoYk/svh qW+GX38DK/4TJvJVrpV7qGTwzdUksjgO+3EAS3BBRa3DNnz/DgS9SDzkcbBZ58VBX2yDwG rpW0X6NJapCTot6Y75iGoUXe1rbMdEE= Received: by mail-pg1-f170.google.com with SMTP id 41be03b00d2f7-b31d489a76dso4134953a12.1 for ; Wed, 02 Jul 2025 07:12:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1751465555; x=1752070355; darn=kvack.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=3hi0b4Q2TMU9s9ow4O1FxnYpGW2LdSH037wzbnfcLAI=; b=bnFvDxbIbMIV2HPTQJERu5u9ul4oTiaMmh7kcP85KrMtoutGetSKuFub0hW4reJgOI 7zlHVqyqP3wnt957UTh0hDHxUyXvYckl2z7rBdv3T5VUTGTcXgm9ch3Oj4/2EgGaWkCk lg19qW9h0IUhK3Vb9MuPtEOTeCr7v0K+lUDH571M77cBnEW1jpdlsE8UV85A4cnY0v7j GjPaHxxqOqa9qFBsViQU6ecaiaHVpyg8njNbssBWLEyFQH1hYg96owsyvsXAO3qiSufT 6eU/9KfG04LNbqgTsc6Nr0PJz64PB8VXiD1bNJboJnuY9dVAJxt6if5JxHcbezwYYCZz Ix1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751465555; x=1752070355; h=content-transfer-encoding:in-reply-to:from:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=3hi0b4Q2TMU9s9ow4O1FxnYpGW2LdSH037wzbnfcLAI=; b=QnvyLZbXjYCBqMOAjvQJ2/fiIdWkRQm2F8ZHYzSh6S3M4NMsGcP3arBIgVDnYtRdIK N2QWgy394dJTHnnA8Z7yrJCrHvFaXQacKK9qboDwPf0OF6kG94PhIvk44m4N/+dplwmr UOucCnFskulOBiTe5+PPMMg78hBnY3QFGNE8CO5sg4Efeq7eOHULuG+EhPNbANuoOd65 OMxv20I0PjfN/ms4/I8nIe69+30qvMfuZfv842dPKpCvI62foeA2fG75IQAaEx88eEBQ Yq6R6M1xgJDxeNE+Pnc2PITYA3fHqvhbWapB7Ra/kbZWbeBN4pHm+AOAoJUTq5rRA2rE ZOSg== X-Forwarded-Encrypted: i=1; AJvYcCU9R0qEdh9HBKYYdq373E0bNsOI/fYYoaIGLndyRi0QBwgjE0PFAbSIs8JilqslqulJJw/r8G/TqA==@kvack.org X-Gm-Message-State: AOJu0YxUktSZF0WV6msDMJASHv397wknNPkVmWlSmTgTTfS2wU6EOEvl /nLLeJkUFRUMQRaFfSni0blE6ljszTLFcjSZZMalocqhOF3PEY+Q5tRo X-Gm-Gg: ASbGncu018ktFP900EVYNh9lQMaQDOTJMTGBWpwZ9dl0NkMpZQai3hnvKFu2RbPMWn8 wHJvzY4ob6F9j1s6UqsChX0DLApr+9s6VsYYM83TmFYi+nSBy7j7AhFBr8QghaefRNZYIxVTH+N rr4yZrFucCpDh0NC3vM3PQHmSfl0H6wneww0SCZX7Hx8s/U4XjfRB/4ift5mwBR0diER/Djqlph QeHe019CEsO25zdZukJidnvV81Ovkyjs0Keh0Zs0omIcsYo5jnpWiUDNVnuJPeBSK8E21OU2vUt JntbxD0PcQDyG+CGiq5gdIQ/hhZxDLTp5kpCij2UBecvDvS24QJF/VCZNvRGV5mJmNr9j8IIl/+ JRnrSPpw/iLWGftH3DuOpAJApEwjuwyP/fKuwgYc= X-Google-Smtp-Source: AGHT+IFKRDLioih13g48ycaXA5K8ysUyKk1vSQvjV96+wwiKTloc/oO2WVx/lFSAoNhOajXgeeSAFQ== X-Received: by 2002:a05:6a20:a126:b0:21d:fd1:9be with SMTP id adf61e73a8af0-222d7de1c90mr4563817637.12.1751465555071; Wed, 02 Jul 2025 07:12:35 -0700 (PDT) Received: from ?IPV6:240e:305:798e:6800:ad23:906d:e07c:8a1e? ([240e:305:798e:6800:ad23:906d:e07c:8a1e]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-74af56ce9f3sm14100034b3a.122.2025.07.02.07.12.25 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 02 Jul 2025 07:12:34 -0700 (PDT) Message-ID: <54a85ec6-992d-4685-9031-114ba634e0a3@gmail.com> Date: Wed, 2 Jul 2025 22:12:20 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 3/4] fs: change write_begin/write_end interface to take struct kiocb * To: Matthew Wilcox Cc: "tytso@mit.edu" , "hch@infradead.org" , "adilger.kernel@dilger.ca" , "brauner@kernel.org" , "jani.nikula@linux.intel.com" , "rodrigo.vivi@intel.com" , "tursulin@ursulin.net" , "airlied@gmail.com" , "linux-fsdevel@vger.kernel.org" , "linux-ext4@vger.kernel.org" , "linux-block@vger.kernel.org" , "intel-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" , "linux-mm@kvack.org" , "linux-doc@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "chentao325@qq.com" , "frank.li@vivo.com" References: <20250627110257.1870826-1-chentaotao@didiglobal.com> <20250627110257.1870826-4-chentaotao@didiglobal.com> From: Taotao Chen In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Stat-Signature: xux5a5fewdzwrwej31ak1nnuhwk1nn6h X-Rspamd-Queue-Id: 71EF540003 X-Rspamd-Server: rspam11 X-Rspam-User: X-HE-Tag: 1751465556-549860 X-HE-Meta: U2FsdGVkX1/kID/zPLrgeNzsYwp2RH9i1ikKyLT5ru4ffjZwH+7qs1BT+CICrxwHmFBcQ7izQ+g3uMBZvpy27xnqwBV7SNRDsh+TceUmtLDJPVE4uGe0CepcVDC+cTW6smbWuNiWnm1mHn6QTvlwCJ51RqEVrhncSHeE3LMvr1juU6U7fUkoD7ZRSiljnPPd4PfZBlxPFmO32Lg3D7Z7Q97cmFAZABlNnFOaCvEEkfdShvY5hdBOq5HaDHJpKIQ0MZQKvZxUmlx0swmnUB8JHb+AmAfFQCxJKCENfhjIUWfERJ8nGP1M+/9s1AT+MN2JVHDzSe3ZaDt+2UGEKXaI75GRD69Xqmj0YByNTMOjc85nH96pZUllVB00ydSGtEpa4uVAZ7x0ixFvTO43wOlAKVLMApoEZ4QgVWJYPQYV0mi+xPkKPZQ/HSq36S9AYffjsV1rWQuJjKk7BXQH7J6iYaMp2ngOVZmcgrSQx2ZoWt3/EHyytMJ4MUITgJ3Cxu0HgZb1X+L7TQAHMmKRrgs5Zt4boOPAksnIWaWXsmj4RhB0f4yM/PT89YDApXl1nuvQspcYOb9ycL5Kwmqh3IDV3qNE4gFnX2MDnv1lxVldBpwT6A6V78V4l37f/Viu008mP+Rjd18Zml4p5pdSmQfmFOWdPv0PaQ66KhNHVWUGdXe2OqwzY7L8Z/W8p60Q28mpQ+WzIQgdHgUK+wqj8GxuH/3TIS+GX27UBdjGznmIV2Q8gRO+yST08ThrkKuMvyuUg/rfD14b+du6s50R3CRQL5J2Cr6LlAQTKRkTx3aGK8EpZfDKJPNJysGPHSQqQqzl7ADBglqnBJi5Ah3fNzCJKFaxx41COa6tb904RpjAWPfQ0GpYY/QvzQ2PgsGustgDBVMvbdAzedInd570RGvIX//cqhYu6wdTcp//5FT9TqcQENjSUTzeRqueji9TwwaDow53ZlwExMWb0SmBLgw JsUkQokC n2Q07ijcX5zxdbNy7QuDt25x7dZoEB4M3oEeb9BdeLvCqiGMpGwoJWq3Dvivud3Fj/9AGkWSct3xwY4GNDx0uOY2jMD1YGw2LWJxvmb2jEM9E5zTlcD1mTQt5frTzuDIoefTS44NXJheVsOYnFuQqGgm/yDoOPQpgVj1WcOXN5xcKeabcPLqfhMb1ow== 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: 在 2025/6/27 23:45, Matthew Wilcox 写道: > On Fri, Jun 27, 2025 at 11:03:11AM +0000, 陈涛涛 Taotao Chen wrote: >> diff --git a/fs/exfat/file.c b/fs/exfat/file.c >> index 841a5b18e3df..fdc2fa1e5c41 100644 >> --- a/fs/exfat/file.c >> +++ b/fs/exfat/file.c >> @@ -532,10 +532,12 @@ int exfat_file_fsync(struct file *filp, loff_t start, loff_t end, int datasync) >> return blkdev_issue_flush(inode->i_sb->s_bdev); >> } >> >> -static int exfat_extend_valid_size(struct file *file, loff_t new_valid_size) >> +static int exfat_extend_valid_size(const struct kiocb *iocb, >> + loff_t new_valid_size) >> { >> int err; >> loff_t pos; >> + struct file *file = iocb->ki_filp; >> struct inode *inode = file_inode(file); >> struct exfat_inode_info *ei = EXFAT_I(inode); >> struct address_space *mapping = inode->i_mapping; >> @@ -551,14 +553,14 @@ static int exfat_extend_valid_size(struct file *file, loff_t new_valid_size) >> if (pos + len > new_valid_size) >> len = new_valid_size - pos; >> >> - err = ops->write_begin(file, mapping, pos, len, &folio, NULL); >> + err = ops->write_begin(iocb, mapping, pos, len, &folio, NULL); >> if (err) >> goto out; >> >> off = offset_in_folio(folio, pos); >> folio_zero_new_buffers(folio, off, off + len); >> >> - err = ops->write_end(file, mapping, pos, len, len, folio, NULL); >> + err = ops->write_end(iocb, mapping, pos, len, len, folio, NULL); >> if (err < 0) >> goto out; >> pos += len; >> @@ -604,7 +606,7 @@ static ssize_t exfat_file_write_iter(struct kiocb *iocb, struct iov_iter *iter) >> } >> >> if (pos > valid_size) { >> - ret = exfat_extend_valid_size(file, pos); >> + ret = exfat_extend_valid_size(iocb, pos); >> if (ret < 0 && ret != -ENOSPC) { >> exfat_err(inode->i_sb, >> "write: fail to zero from %llu to %llu(%zd)", >> @@ -655,8 +657,11 @@ static vm_fault_t exfat_page_mkwrite(struct vm_fault *vmf) >> struct file *file = vma->vm_file; >> struct inode *inode = file_inode(file); >> struct exfat_inode_info *ei = EXFAT_I(inode); >> + struct kiocb iocb; >> loff_t start, end; >> >> + init_sync_kiocb(&iocb, file); >> + >> if (!inode_trylock(inode)) >> return VM_FAULT_RETRY; >> >> @@ -665,7 +670,7 @@ static vm_fault_t exfat_page_mkwrite(struct vm_fault *vmf) >> start + vma->vm_end - vma->vm_start); >> >> if (ei->valid_size < end) { >> - err = exfat_extend_valid_size(file, end); >> + err = exfat_extend_valid_size(&iocb, end); >> if (err < 0) { >> inode_unlock(inode); >> return vmf_fs_error(err); > This is unnecessary work. The only ->write_begin/write_end that we'll > see here is exfat_write_begin() / exfat_write_end() which don't actually > need iocb (or file). Traditionally we pass NULL in these situations, > but the exfat people probably weren't aware of this convention. > > exfat_extend_valid_size() only uses the file it's passed to get the > inode, and both callers already have the inode. So I'd change > exfat_extend_valid_size() to take an inode instead of a file as its > first argument, then you can skip the creation of an iocb in > exfat_page_mkwrite(). My initial goal was to maintain consistency with the updated ->write_begin/ ->write_end interfaces. That meant passing the iocb to avoid special cases and keep the changes minimal and safe. But you're right, since exfat_write_begin() and exfat_write_end() don't use the iocb or file pointer, passing NULL is fine, and having exfat_extend_valid_size() directly take an inode makes the code simpler and clearer. In addition, inside the ntfs_extend_initialized_size() function, I also set the iocb parameter to NULL when calling ntfs_write_begin() and ntfs_write_end().