From nobody Sun Feb 8 17:04:20 2026 Received: from mx10.didiglobal.com (mx10.didiglobal.com [111.202.70.125]) by smtp.subspace.kernel.org (Postfix) with SMTP id 2BDC325FA24; Mon, 21 Apr 2025 10:51:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=111.202.70.125 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745232665; cv=none; b=Gfah5qB+W8I5XvM1krngFG7a/LtbkJhZ8Y5oJ1EkS1MdbD11ywcuJ0Mr1ioEzqfJL5EVc7LZ2i2XvXteNw8Cr9VhXDqVJ+PayWhcjdJMv4dfnuh6TRIVfSVGfRGhzxUAA4SMTPQO7s0Xk7H2I5zVWxdwsPeG46XHr1850QhEDAY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745232665; c=relaxed/simple; bh=isUkKjuOetSgNBjU8SvHHjmefzbAw+3LH02RLvwAink=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:Content-Type: MIME-Version; b=slLLSI4s0QyBny6/Yt4FH0l6Rzfi233nFib5DMkzaqS+s9MqZ34zBzH2ROQ9ETQ2xwSoJNsXR2aX2QJ8eyv+9F3428JoSHhQH9SZV6EpmAF+BCqUrP8aK+CDczYMSTx6yWqd3zdbk+M0c/FhVvLbjVuSQ/mF4z1eQ/58C4BvRYs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=didiglobal.com; spf=pass smtp.mailfrom=didiglobal.com; dkim=pass (1024-bit key) header.d=didiglobal.com header.i=@didiglobal.com header.b=euyvweeH; arc=none smtp.client-ip=111.202.70.125 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=didiglobal.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=didiglobal.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=didiglobal.com header.i=@didiglobal.com header.b="euyvweeH" Received: from mail.didiglobal.com (unknown [10.79.64.21]) by mx10.didiglobal.com (MailData Gateway V2.8.8) with ESMTPS id A5C82192BB6580; Mon, 21 Apr 2025 18:49:57 +0800 (CST) Received: from BJ02-ACTMBX-09.didichuxing.com (10.79.65.18) by BJ01-ACTMBX-02.didichuxing.com (10.79.64.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.10; Mon, 21 Apr 2025 18:50:30 +0800 Received: from BJ03-ACTMBX-07.didichuxing.com (10.79.71.34) by BJ02-ACTMBX-09.didichuxing.com (10.79.65.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.10; Mon, 21 Apr 2025 18:50:30 +0800 Received: from BJ03-ACTMBX-07.didichuxing.com ([fe80::b00b:de35:2067:9787]) by BJ03-ACTMBX-07.didichuxing.com ([fe80::b00b:de35:2067:9787%7]) with mapi id 15.02.1748.010; Mon, 21 Apr 2025 18:50:30 +0800 X-MD-Sfrom: chentaotao@didiglobal.com X-MD-SrcIP: 10.79.64.21 From: =?gb2312?B?s8LMzszOIFRhb3RhbyBDaGVu?= To: "tytso@mit.edu" , "adilger.kernel@dilger.ca" , "akpm@linux-foundation.org" , "willy@infradead.org" CC: "linux-ext4@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-fsdevel@vger.kernel.org" , "linux-mm@kvack.org" , =?gb2312?B?s8LMzszOIFRhb3RhbyBDaGVu?= Subject: [PATCH 1/3] mm/filemap: initialize fsdata with iocb->ki_flags Thread-Topic: [PATCH 1/3] mm/filemap: initialize fsdata with iocb->ki_flags Thread-Index: AQHbsqsyd5FrrvlD8E+DF/FkAUZ8QA== Date: Mon, 21 Apr 2025 10:50:30 +0000 Message-ID: <20250421105026.19577-2-chentaotao@didiglobal.com> In-Reply-To: <20250421105026.19577-1-chentaotao@didiglobal.com> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: Content-Transfer-Encoding: quoted-printable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=didiglobal.com; s=2025; t=1745232621; bh=isUkKjuOetSgNBjU8SvHHjmefzbAw+3LH02RLvwAink=; h=From:To:CC:Subject:Date:Message-ID:Content-Type; b=euyvweeH+54Ovq55HqloJTd+oAulTzSJogLds7Yk+cNBKH96Z1JU1w3HiDgeHAVz7 e2BlBzS1OD4NQLw6s9icgGeucKjzhUeN7dVJxYLWP1MntG9V6oIPyXVOUPbR3GcISj sWVUOdVHX9jyIFEnWC5mbxOep24arDbv4qCN+uaY= Content-Type: text/plain; charset="utf-8" From: Taotao Chen Initialize fsdata with &iocb->ki_flags to allow filesystems to check iocb flags like IOCB_DONTCACHE during ->write_begin(). Signed-off-by: Taotao Chen --- mm/filemap.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mm/filemap.c b/mm/filemap.c index 7b90cbeb4a1a..9174b6310f0b 100644 --- a/mm/filemap.c +++ b/mm/filemap.c @@ -4087,7 +4087,11 @@ ssize_t generic_perform_write(struct kiocb *iocb, st= ruct iov_iter *i) size_t offset; /* Offset into folio */ size_t bytes; /* Bytes to write to folio */ size_t copied; /* Bytes copied from user */ - void *fsdata =3D NULL; + /* + * Initialize fsdata with iocb flags pointer so that filesystems + * can check ki_flags (like IOCB_DONTCACHE) in write operations. + */ + void *fsdata =3D &iocb->ki_flags; =20 bytes =3D iov_iter_count(i); retry: --=20 2.34.1 From nobody Sun Feb 8 17:04:20 2026 Received: from mx9.didiglobal.com (mx9.didiglobal.com [111.202.70.124]) by smtp.subspace.kernel.org (Postfix) with SMTP id 643BA3D81; Mon, 21 Apr 2025 10:51:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=111.202.70.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745232666; cv=none; b=pF352+Bot2Pq+LKdOVJX6Z+NvqsJ3pFWO6NUgIHlDujhrkW5A5CAV9xDeWStvKAr+9kNllwPdxr78XJhlUEmjtzsuD3KVUnlI/2ToiAbgg2i2n6fH6J/fa25SkTdUZviDMPKimTGtAOGiXqj/vjAdPO1V6F9CFsuGAmrHZsypvM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745232666; c=relaxed/simple; bh=McnoqsM7OwZZHTfj0aes88UGnFIMmmjWOMz06TcW13Y=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:Content-Type: MIME-Version; b=M4mSZxGN53Q/ZXXPbWOBa9Jk94PeQFL1jKG4y4vdybh5qaQcFX+KP9P5phRN57JBwfj/EJr+vX/XnmTrQAjZL2+WcbSgaQVSAOe7ssEDXUkTV380S62d1On0QLM0TCiCApkHPkwNOLl/pNPqs/392k3agkCC9wco4xRdyqUdWpc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=didiglobal.com; spf=pass smtp.mailfrom=didiglobal.com; dkim=pass (1024-bit key) header.d=didiglobal.com header.i=@didiglobal.com header.b=hP+gH1aW; arc=none smtp.client-ip=111.202.70.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=didiglobal.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=didiglobal.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=didiglobal.com header.i=@didiglobal.com header.b="hP+gH1aW" Received: from mail.didiglobal.com (unknown [10.79.71.37]) by mx9.didiglobal.com (MailData Gateway V2.8.8) with ESMTPS id 4D9EA18B81F549; Mon, 21 Apr 2025 18:50:06 +0800 (CST) Received: from BJ03-ACTMBX-09.didichuxing.com (10.79.71.36) by BJ03-ACTMBX-01.didichuxing.com (10.79.71.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.10; Mon, 21 Apr 2025 18:50:31 +0800 Received: from BJ03-ACTMBX-07.didichuxing.com (10.79.71.34) by BJ03-ACTMBX-09.didichuxing.com (10.79.71.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.10; Mon, 21 Apr 2025 18:50:30 +0800 Received: from BJ03-ACTMBX-07.didichuxing.com ([fe80::b00b:de35:2067:9787]) by BJ03-ACTMBX-07.didichuxing.com ([fe80::b00b:de35:2067:9787%7]) with mapi id 15.02.1748.010; Mon, 21 Apr 2025 18:50:30 +0800 X-MD-Sfrom: chentaotao@didiglobal.com X-MD-SrcIP: 10.79.71.37 From: =?gb2312?B?s8LMzszOIFRhb3RhbyBDaGVu?= To: "tytso@mit.edu" , "adilger.kernel@dilger.ca" , "akpm@linux-foundation.org" , "willy@infradead.org" CC: "linux-ext4@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-fsdevel@vger.kernel.org" , "linux-mm@kvack.org" , =?gb2312?B?s8LMzszOIFRhb3RhbyBDaGVu?= Subject: [PATCH 2/3] ext4: implement IOCB_DONTCACHE handling in write operations Thread-Topic: [PATCH 2/3] ext4: implement IOCB_DONTCACHE handling in write operations Thread-Index: AQHbsqsziv0lExfK60SVnrHOwWRNng== Date: Mon, 21 Apr 2025 10:50:30 +0000 Message-ID: <20250421105026.19577-3-chentaotao@didiglobal.com> In-Reply-To: <20250421105026.19577-1-chentaotao@didiglobal.com> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: Content-Transfer-Encoding: quoted-printable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=didiglobal.com; s=2025; t=1745232628; bh=McnoqsM7OwZZHTfj0aes88UGnFIMmmjWOMz06TcW13Y=; h=From:To:CC:Subject:Date:Message-ID:Content-Type; b=hP+gH1aWxLE1wVWUYHWLzI4LnWSwZmg6wsn4feGMWV44Vlz4mS2UZBQUJrWnFJUlb N0wINT8uMIhVDMbhWKrohD9tj/aug9Il29N5MHpFFmT0kUehl7pASjGVgHNuNFzRGs vGdxQCIDwGhhf/JSXQwzw6XX6Gngac3+XBQ47bM8= Content-Type: text/plain; charset="utf-8" From: Taotao Chen Implement IOCB_DONTCACHE flag handling in ext4 write paths: 1. Check IOCB_DONTCACHE flag passed via fsdata 2. Propagate FGP_DONTCACHE to page cache operations Existing write behavior remains unchanged when IOCB_DONTCACHE is not set. Signed-off-by: Taotao Chen --- fs/ext4/inode.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 94c7d2d828a6..787dd152a47e 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -1147,16 +1147,22 @@ static int ext4_write_begin(struct file *file, stru= ct address_space *mapping, { struct inode *inode =3D mapping->host; int ret, needed_blocks; + int iocb_flag; handle_t *handle; int retries =3D 0; struct folio *folio; pgoff_t index; + fgf_t fgp =3D FGP_WRITEBEGIN; unsigned from, to; =20 ret =3D ext4_emergency_state(inode->i_sb); if (unlikely(ret)) return ret; =20 + iocb_flag =3D (int)(uintptr_t)(*fsdata); + if (iocb_flag & IOCB_DONTCACHE) + fgp |=3D FGP_DONTCACHE; + trace_ext4_write_begin(inode, pos, len); /* * Reserve one block more for addition to orphan list in case @@ -1184,7 +1190,7 @@ static int ext4_write_begin(struct file *file, struct= address_space *mapping, * the folio (if needed) without using GFP_NOFS. */ retry_grab: - folio =3D __filemap_get_folio(mapping, index, FGP_WRITEBEGIN, + folio =3D __filemap_get_folio(mapping, index, fgp, mapping_gfp_mask(mapping)); if (IS_ERR(folio)) return PTR_ERR(folio); @@ -2917,6 +2923,8 @@ static int ext4_da_write_begin(struct file *file, str= uct address_space *mapping, struct folio **foliop, void **fsdata) { int ret, retries =3D 0; + int iocb_flag; + fgf_t fgp =3D FGP_WRITEBEGIN; struct folio *folio; pgoff_t index; struct inode *inode =3D mapping->host; @@ -2928,10 +2936,15 @@ static int ext4_da_write_begin(struct file *file, s= truct address_space *mapping, index =3D pos >> PAGE_SHIFT; =20 if (ext4_nonda_switch(inode->i_sb) || ext4_verity_in_progress(inode)) { + ret =3D ext4_write_begin(file, mapping, pos, len, foliop, fsdata); *fsdata =3D (void *)FALL_BACK_TO_NONDELALLOC; - return ext4_write_begin(file, mapping, pos, - len, foliop, fsdata); + return ret; } + + iocb_flag =3D (int)(uintptr_t)(*fsdata); + if (iocb_flag & IOCB_DONTCACHE) + fgp |=3D FGP_DONTCACHE; + *fsdata =3D (void *)0; trace_ext4_da_write_begin(inode, pos, len); =20 @@ -2945,7 +2958,7 @@ static int ext4_da_write_begin(struct file *file, str= uct address_space *mapping, } =20 retry: - folio =3D __filemap_get_folio(mapping, index, FGP_WRITEBEGIN, + folio =3D __filemap_get_folio(mapping, index, fgp, mapping_gfp_mask(mapping)); if (IS_ERR(folio)) return PTR_ERR(folio); --=20 2.34.1 From nobody Sun Feb 8 17:04:20 2026 Received: from mx10.didiglobal.com (mx10.didiglobal.com [111.202.70.125]) by smtp.subspace.kernel.org (Postfix) with SMTP id 0F1B325FA12; Mon, 21 Apr 2025 10:51:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=111.202.70.125 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745232666; cv=none; b=neVQ4rb+sSgKMrjlUn144AAvBczaBvunVF2d5kqncJgiIc5NZ3LPveJAp2XminKn8Ncaup/VWzcLR26vTk02HwrUON+AlfgulJRiofoTnglnYfrAxc+g8Atohki8KYw+1y2m8n5QqkLGkZwl5nFx2NAw/vSl83pXQYGLL+DD9/U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745232666; c=relaxed/simple; bh=hFz97Lo2xaVpF4pAJScKj+lhnnOUupxcb9PG6LD3Pl0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:Content-Type: MIME-Version; b=C3Zy8Xbl9S1m7Ep0XQzdUa4217//tba6tx+0fyAuLBuP2OaBFXV2NO0BkoNeRXU6M3tSGkWSuZcFtxckh71mRvzPU+BBPnv2G+Dnzk4N2scOZWH6/8Rgtg5PNsNl8ELUgS22xvpGRD2ixRd0IAIy4vk3ewyDSZyuIb1JYBbOt70= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=didiglobal.com; spf=pass smtp.mailfrom=didiglobal.com; dkim=pass (1024-bit key) header.d=didiglobal.com header.i=@didiglobal.com header.b=liixehVr; arc=none smtp.client-ip=111.202.70.125 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=didiglobal.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=didiglobal.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=didiglobal.com header.i=@didiglobal.com header.b="liixehVr" Received: from mail.didiglobal.com (unknown [10.79.65.20]) by mx10.didiglobal.com (MailData Gateway V2.8.8) with ESMTPS id CB857192BB6581; Mon, 21 Apr 2025 18:49:58 +0800 (CST) Received: from BJ03-ACTMBX-08.didichuxing.com (10.79.71.35) by BJ02-ACTMBX-02.didichuxing.com (10.79.65.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.10; Mon, 21 Apr 2025 18:50:32 +0800 Received: from BJ03-ACTMBX-07.didichuxing.com (10.79.71.34) by BJ03-ACTMBX-08.didichuxing.com (10.79.71.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.10; Mon, 21 Apr 2025 18:50:31 +0800 Received: from BJ03-ACTMBX-07.didichuxing.com ([fe80::b00b:de35:2067:9787]) by BJ03-ACTMBX-07.didichuxing.com ([fe80::b00b:de35:2067:9787%7]) with mapi id 15.02.1748.010; Mon, 21 Apr 2025 18:50:31 +0800 X-MD-Sfrom: chentaotao@didiglobal.com X-MD-SrcIP: 10.79.65.20 From: =?gb2312?B?s8LMzszOIFRhb3RhbyBDaGVu?= To: "tytso@mit.edu" , "adilger.kernel@dilger.ca" , "akpm@linux-foundation.org" , "willy@infradead.org" CC: "linux-ext4@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-fsdevel@vger.kernel.org" , "linux-mm@kvack.org" , =?gb2312?B?s8LMzszOIFRhb3RhbyBDaGVu?= Subject: [PATCH 3/3] ext4: support FOP_DONTCACHE flag Thread-Topic: [PATCH 3/3] ext4: support FOP_DONTCACHE flag Thread-Index: AQHbsqszui5Ecff3LEGshtT9cUjseg== Date: Mon, 21 Apr 2025 10:50:31 +0000 Message-ID: <20250421105026.19577-4-chentaotao@didiglobal.com> In-Reply-To: <20250421105026.19577-1-chentaotao@didiglobal.com> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: Content-Transfer-Encoding: quoted-printable Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=didiglobal.com; s=2025; t=1745232621; bh=hFz97Lo2xaVpF4pAJScKj+lhnnOUupxcb9PG6LD3Pl0=; h=From:To:CC:Subject:Date:Message-ID:Content-Type; b=liixehVrPYGClqy9waNISrhPdzL4qwDzk290xUSvvD/Yi2Rsr2MwkxZNSNTd6fu3A uloOFN+PYNzfHJ1+ht9LCCRSySPulhYksJwRdGDgLZH1tmfHsc8PrlAbWBVP9p3MRE /+Fkh4AfuuugpM+gh+y09VRmax+2lRFSkuLYORrY= Content-Type: text/plain; charset="utf-8" From: Taotao Chen After the core logic for handling IOCB_DONTCACHE was implemented in the previous patch, we now formally enable the feature by adding FOP_DONTCACHE to ext4's file operations flags. Signed-off-by: Taotao Chen --- fs/ext4/file.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/ext4/file.c b/fs/ext4/file.c index beb078ee4811..c514903d85c7 100644 --- a/fs/ext4/file.c +++ b/fs/ext4/file.c @@ -977,7 +977,7 @@ const struct file_operations ext4_file_operations =3D { .splice_write =3D iter_file_splice_write, .fallocate =3D ext4_fallocate, .fop_flags =3D FOP_MMAP_SYNC | FOP_BUFFER_RASYNC | - FOP_DIO_PARALLEL_WRITE, + FOP_DIO_PARALLEL_WRITE | FOP_DONTCACHE, }; =20 const struct inode_operations ext4_file_inode_operations =3D { --=20 2.34.1