[{"id":3652230,"web_url":"http://patchwork.ozlabs.org/comment/3652230/","msgid":"<63C86D0D-9EF6-4D33-95B2-8D0F5B305B0B@dilger.ca>","list_archive_url":null,"date":"2026-02-19T21:00:13","subject":"Re: [PATCH v2 1/3] jbd2: store jinode dirty range in PAGE_SIZE units","submitter":{"id":4514,"url":"http://patchwork.ozlabs.org/api/people/4514/","name":"Andreas Dilger","email":"adilger@dilger.ca"},"content":"On Feb 19, 2026, at 04:46, Li Chen <me@linux.beauty> wrote:\n> \n> jbd2_inode fields are updated under journal->j_list_lock, but some paths\n> read them without holding the lock (e.g. fast commit helpers and ordered\n> truncate helpers).\n> \n> READ_ONCE() alone is not sufficient for i_dirty_start/end as they are\n> loff_t and 32-bit platforms can observe torn loads. Store the dirty range\n> in PAGE_SIZE units as pgoff_t so lockless readers can take non-torn\n> snapshots.\n\nWhen making semantic changes like this, it is best to change the variable\nnames as well, so that breaks compilation if bisection happens to land\nbetween these patches.  Otherwise, that could cause some random behavior\nif jbd2 is treating these as pages, but ext4/ocfs2 are treating them as\nbytes or vice versa.\n\nSomething like i_dirty_{start,end} -> i_dirty_{start,end}_page would make\nthis very clear what the units are.\n\nTo avoid breakage between the patches (which is desirable to avoid problems\nwith automated bisection) you should make an initial patch with wrappers to\naccess these values and convert ext4/ocfs2 to use them:\n\nstatic inline loff_t jbd2_jinode_dirty_start(struct jbd2_inode *jinode)\n{\n\treturn jinode->i_dirty_start;\n}\n\nstatic inline loff_t jbd2_jinode_dirty_end(struct jbd2_inode *jinode)\n{\n\treturn jinode->i_dirty_end;\n}\n\nthen change this in the jbd2 patch at the end, which would then be self-contained:\n\nstatic inline loff_t jbd2_jinode_dirty_start(struct jbd2_inode *jinode)\n{\n\treturn (loff_t)jinode->i_dirty_start_page << PAGE_SHIFT;\n}\n\nstatic inline loff_t jbd2_jinode_dirty_end(struct jbd2_inode *jinode)\n{\n\treturn ((loff_t)jinode->i_dirty_end_page << PAGE_SHIFT) + ~PAGE_MASK;\n}\n\n\nCheers, Andreas\n\n> Use READ_ONCE() on the read side and WRITE_ONCE() on the write side for\n> the dirty range and i_flags to match the existing lockless access pattern.\n> \n> Suggested-by: Jan Kara <jack@suse.cz>\n> Reviewed-by: Jan Kara <jack@suse.cz>\n> Signed-off-by: Li Chen <me@linux.beauty>\n> ---\n>","headers":{"Return-Path":"\n <SRS0=2w8B=AX=vger.kernel.org=linux-ext4+bounces-13752-patchwork-incoming=ozlabs.org@ozlabs.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-ext4@vger.kernel.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","patchwork-incoming@ozlabs.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=dilger-ca.20230601.gappssmtp.com\n header.i=@dilger-ca.20230601.gappssmtp.com header.a=rsa-sha256\n header.s=20230601 header.b=mDYFazp/;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=ozlabs.org\n (client-ip=150.107.74.76; helo=mail.ozlabs.org;\n envelope-from=srs0=2w8b=ax=vger.kernel.org=linux-ext4+bounces-13752-patchwork-incoming=ozlabs.org@ozlabs.org;\n receiver=patchwork.ozlabs.org)","gandalf.ozlabs.org;\n arc=pass smtp.remote-ip=\"2600:3c15:e001:75::12fc:5321\"\n arc.chain=subspace.kernel.org","gandalf.ozlabs.org;\n dmarc=none (p=none dis=none) header.from=dilger.ca","gandalf.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=dilger-ca.20230601.gappssmtp.com\n header.i=@dilger-ca.20230601.gappssmtp.com header.a=rsa-sha256\n header.s=20230601 header.b=mDYFazp/;\n\tdkim-atps=neutral","gandalf.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c15:e001:75::12fc:5321; helo=sin.lore.kernel.org;\n envelope-from=linux-ext4+bounces-13752-patchwork-incoming=ozlabs.org@vger.kernel.org;\n receiver=ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=dilger-ca.20230601.gappssmtp.com\n header.i=@dilger-ca.20230601.gappssmtp.com header.b=\"mDYFazp/\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=209.85.214.182","smtp.subspace.kernel.org;\n dmarc=none (p=none dis=none) header.from=dilger.ca","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=dilger.ca"],"Received":["from mail.ozlabs.org (gandalf.ozlabs.org [150.107.74.76])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1 raw public key)\n server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fH5Pf4pxXz1xvS\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 20 Feb 2026 08:00:37 +1100 (AEDT)","from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3])\n\tby gandalf.ozlabs.org (Postfix) with ESMTP id 4fH5Pc4Jg3z4w2R\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 20 Feb 2026 08:00:36 +1100 (AEDT)","by gandalf.ozlabs.org (Postfix)\n\tid 4fH5Pc3vsQz4w91; Fri, 20 Feb 2026 08:00:36 +1100 (AEDT)","from sin.lore.kernel.org (sin.lore.kernel.org\n [IPv6:2600:3c15:e001:75::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby gandalf.ozlabs.org (Postfix) with ESMTPS id 4fH5PX23Gzz4w2R\n\tfor <patchwork-incoming@ozlabs.org>; Fri, 20 Feb 2026 08:00:32 +1100 (AEDT)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sin.lore.kernel.org (Postfix) with ESMTP id F1533300844B\n\tfor <patchwork-incoming@ozlabs.org>; Thu, 19 Feb 2026 21:00:30 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 820CE24DCE5;\n\tThu, 19 Feb 2026 21:00:28 +0000 (UTC)","from mail-pl1-f182.google.com (mail-pl1-f182.google.com\n [209.85.214.182])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id DD6F1285071\n\tfor <linux-ext4@vger.kernel.org>; Thu, 19 Feb 2026 21:00:26 +0000 (UTC)","by mail-pl1-f182.google.com with SMTP id\n d9443c01a7336-2a9296b3926so9695705ad.1\n        for <linux-ext4@vger.kernel.org>;\n Thu, 19 Feb 2026 13:00:26 -0800 (PST)","from smtpclient.apple (S01068c763f81ca4b.cg.shawcable.net.\n [70.77.200.158])\n        by smtp.gmail.com with ESMTPSA id\n d9443c01a7336-2ad1a6fa260sm169579405ad.5.2026.02.19.13.00.24\n        (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);\n        Thu, 19 Feb 2026 13:00:25 -0800 (PST)"],"ARC-Seal":["i=2; a=rsa-sha256; d=ozlabs.org; s=201707; t=1771534836; cv=pass;\n\tb=o0TP2uLf5O7kG2jIVPnjwZ+IMFro0dRHU5TklgTIgnrSb8Nwy53pCTM7tmwz09wz4oncAaU4S3B8nttW7NMeMhnZmagVXYW4/MyUTir8LFqVC0WbIhEVq4LrpsZ2XQrYslgqz3hxLoW4JZJMQOWjAt89bWlR9mDUas1ksR1T7sAtwDgAmNmSHIWbKipCM5Fvd/4HIa8VXey6/NJWBnPAGQQ9PwXrmcrCeN0Rjp18TkUV3Hul0uyFRTzfHfLxiD9PbrKH9u8v7v2tZIuSmOcaz7CKcuS4zjCywy9sQcrorvqwQ0TpmuIe2JpuxbZNG8Hp2kVdA5i7xsbWJxAWiN4zAQ==","i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1771534828; cv=none;\n b=SXAlJbQaEiNRLpzCe+NzZg94lxwL/PSexMud8bo4kzilKgeDSgjT30jX20yeVw+kUqiCPsFHKXmTFxDarywX2WLlwVaawMt9asE5MPcJxLl/y/nUf7c6LRbUFfl4tk0fQ9z9tQ8pq7TDwLQheRLFKMFHnErARwhCOsApvDcSgOY="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=ozlabs.org; s=201707;\n\tt=1771534836; c=relaxed/relaxed;\n\tbh=0gN2p81ub7C7asTTClWhi8yTk7OGAaWSTbhCB/Ej6QE=;\n\th=Content-Type:Mime-Version:Subject:From:In-Reply-To:Date:Cc:\n\t Message-Id:References:To;\n b=fIOQYEL8QXInDF+yPwop8k/uMhFuKI3t4E+fBUIv3Jcu30O5uLvtruAi5VYS2dyZKeeVJoOpoJyROP6zqSzp7WgprtEdad0dvTBFHtnLhiSn5AOWdEl3oDerngbILZdgTJPHmJLGG8at9qIe/BXaUqD+9rKWBCYh7turT8gP9ueYbVEylhgbSKNG+e4JFYne1pFAoOsmP8hreYhlCR++axR7PJ/Cw2GPtSFaqpHhh9/S9n9mFhka8jpqg8rtQ18/4DF7czoGi2Qg6FX7Qm8X8hz52S8ZmN9qJH/9g+a1WrBro6rR6XifYiOj+nNau1wHNTTBN7AuRoFGNTW+jYSWHQ==","i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1771534828; c=relaxed/simple;\n\tbh=1m+LHmJ2ii2fMCL5Yw8BNOu1FGvmwApnkiD4zM/oDwo=;\n\th=Content-Type:Mime-Version:Subject:From:In-Reply-To:Date:Cc:\n\t Message-Id:References:To;\n b=CZ/9+rLD7gX2PVXaC2koIqDu9FYWxo0SSOVFbMDVfELERKmYKsoCaY4Vw09dbP81w0h+dEzNUo2MwxENyuuBblEoAeqOysgij8dQ2X4fNtwKV0xD6qzAfnspVXk1mO4oBDf2F19qbPcKBcDGSmKZbfIiFPVXZ4TUHGLFDf4Op9w="],"ARC-Authentication-Results":["i=2; gandalf.ozlabs.org;\n dmarc=none (p=none dis=none) header.from=dilger.ca; dkim=pass (2048-bit key;\n unprotected) header.d=dilger-ca.20230601.gappssmtp.com\n header.i=@dilger-ca.20230601.gappssmtp.com header.a=rsa-sha256\n header.s=20230601 header.b=mDYFazp/; dkim-atps=neutral;\n spf=pass (client-ip=2600:3c15:e001:75::12fc:5321; helo=sin.lore.kernel.org;\n envelope-from=linux-ext4+bounces-13752-patchwork-incoming=ozlabs.org@vger.kernel.org;\n receiver=ozlabs.org) smtp.mailfrom=vger.kernel.org","i=1; smtp.subspace.kernel.org;\n dmarc=none (p=none dis=none) header.from=dilger.ca;\n spf=pass smtp.mailfrom=dilger.ca;\n dkim=pass (2048-bit key) header.d=dilger-ca.20230601.gappssmtp.com\n header.i=@dilger-ca.20230601.gappssmtp.com header.b=mDYFazp/;\n arc=none smtp.client-ip=209.85.214.182"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=dilger-ca.20230601.gappssmtp.com; s=20230601; t=1771534826;\n x=1772139626; darn=vger.kernel.org;\n        h=to:references:message-id:content-transfer-encoding:cc:date\n         :in-reply-to:from:subject:mime-version:from:to:cc:subject:date\n         :message-id:reply-to;\n        bh=0gN2p81ub7C7asTTClWhi8yTk7OGAaWSTbhCB/Ej6QE=;\n        b=mDYFazp/q5dHkr00wdDLrO07hA78wAMf5POC4ZuILXDtq+3T/yBR7jkSoiSlHccWSE\n         VFRQqvsOv7VKlUEtfOikZjPZ2VTu19Ns7u6OpJoDmbUFJXzxrYI9ELCdeG+Lql/7SD+0\n         7HAW6IxqRb38KNc1SxDSP4pKJG7Ccn2e8ZHSt0/5rs142bLsiM9T0JQG6MlqoxUsR4pT\n         IeOQjNi9ewzCfrGQQa6kcTQgSlRIqnFqeXNMZkvudYTDcTXJ2dGm5TBGlEbxNcxymn6j\n         k8+Ohc3TGAAPYLLF+q2YvDF8xXrZ8Qy2/KW1piR+RT29FC8cp6HVFKTrpU27XViHYEtK\n         quJg==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20230601; t=1771534826; x=1772139626;\n        h=to:references:message-id:content-transfer-encoding:cc:date\n         :in-reply-to:from:subject:mime-version:x-gm-gg:x-gm-message-state\n         :from:to:cc:subject:date:message-id:reply-to;\n        bh=0gN2p81ub7C7asTTClWhi8yTk7OGAaWSTbhCB/Ej6QE=;\n        b=iJ+wST3z1PElYxryW+vJDWMjHQMtiC0L8Yxwm0uEvmotU5CAFR56tVCbVOxrgMrlSX\n         BJpgD4BaMN/XS24RgOjmk6FEWUy67FLXi+ttGILCoxv4iteVuk1tsWoINSkjaQGqaHkD\n         qo1QTl/orp+Hd58lLdZpzDEqp+cyiYGqO52Y5ZK0D2uk5DoiJoHCrA9Hx3D2YoAE5gdv\n         rpzpgnccr7Z2odN+UY4MN6nu2i3g6eH8rsQVqrXYQCSCZGco+mhKjSjNoHmj7a5UTZLj\n         YLiSLkdFtIdCx7XQnMTvGfrBqVKUmmIqDmgIa4xA/Dzzf0occOkn2NVBM47uGbs4bZkL\n         E8+Q==","X-Forwarded-Encrypted":"i=1;\n AJvYcCXt2QFHBlM/FiLJRuVw1M21APkhTRP5KSqoVMEO49tHZh90P1YuMsYeLlZuDfZGMrHIsL/EP3BSQxYB@vger.kernel.org","X-Gm-Message-State":"AOJu0YwTK9lYmQC4zsp10W2hwzWOlPkmps9gHkNnYty0h6SHYprl8QGY\n\tbfCTHhdh61U78D4jlcpNnTyHPNPTqlvjZx3eoflSH+QaU+B0vWYd3npBEopIEspY94I=","X-Gm-Gg":"AZuq6aKR4cDRWhhzC1m1qWcctWsQ/wgBnSjEr7kvxHkfuV8MNYBUK5TpzzeAVSJawrg\n\tfGgqc8NGcY4rp0XvNHCmcvWoMa9I2DO0WsHOCaPHQecfec0AnHcr/S+DYy1tcwqMm5+ntWXGG0k\n\tbIVdKI+lBVlFdDzpiSPykDDiPsz+YdW7oQ6JjMD2IxzaEH8OYsSPKHevRkXKlm5J77GnLRHv9c+\n\tkSMFamY4rYyp8irGP2Lnaqw0EreQTGb9V6jt1f7vnw5cuQY5efJzLvJ3wWJ+jyz0k2Q6FUo3HyZ\n\t1OzGEjt2QsxodWr/nBikbeF3GEgi5hC1eAQ5RO0ikeZ3IuT+IHDzqdXZH8rhGMyXDEbMpAgwvR8\n\t25sW9Fg/w2vwfll4sf9Nt7+CFnNh5ZfRflzVnB7QdZXC1c97Fmd1+c322jE++YKFmdravfSRPQ+\n\tpSnQx67cj8ZfZ0dgHYj07fPujKAYqJlJ6nlL5c7fYUfLBmV8AbDHfaKLJo+jFs86wjyOfhuZPZA\n\tRHcwwmAO+mKbuaY","X-Received":"by 2002:a17:902:db02:b0:2aa:d671:fdf9 with SMTP id\n d9443c01a7336-2ad50ecf977mr59971045ad.26.1771534825843;\n        Thu, 19 Feb 2026 13:00:25 -0800 (PST)","Content-Type":"text/plain;\n\tcharset=us-ascii","Precedence":"bulk","X-Mailing-List":"linux-ext4@vger.kernel.org","List-Id":"<linux-ext4.vger.kernel.org>","List-Subscribe":"<mailto:linux-ext4+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-ext4+unsubscribe@vger.kernel.org>","Mime-Version":"1.0 (Mac OS X Mail 16.0 \\(3864.100.1.1.5\\))","Subject":"Re: [PATCH v2 1/3] jbd2: store jinode dirty range in PAGE_SIZE units","From":"Andreas Dilger <adilger@dilger.ca>","In-Reply-To":"<20260219114645.778338-2-me@linux.beauty>","Date":"Thu, 19 Feb 2026 14:00:13 -0700","Cc":"Theodore Ts'o <tytso@mit.edu>,\n Jan Kara <jack@suse.cz>,\n Mark Fasheh <mark@fasheh.com>,\n linux-ext4@vger.kernel.org,\n ocfs2-devel@lists.linux.dev,\n Matthew Wilcox <willy@infradead.org>,\n Jan Kara <jack@suse.com>,\n linux-kernel@vger.kernel.org","Content-Transfer-Encoding":"quoted-printable","Message-Id":"<63C86D0D-9EF6-4D33-95B2-8D0F5B305B0B@dilger.ca>","References":"<20260219114645.778338-1-me@linux.beauty>\n <20260219114645.778338-2-me@linux.beauty>","To":"Li Chen <me@linux.beauty>","X-Mailer":"Apple Mail (2.3864.100.1.1.5)","X-Spam-Status":"No, score=-1.1 required=5.0 tests=ARC_SIGNED,ARC_VALID,\n\tDKIM_SIGNED,DKIM_VALID,DMARC_MISSING,HEADER_FROM_DIFFERENT_DOMAINS,\n\tMAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=disabled\n\tversion=4.0.1","X-Spam-Checker-Version":"SpamAssassin 4.0.1 (2024-03-25) on gandalf.ozlabs.org"}},{"id":3652423,"web_url":"http://patchwork.ozlabs.org/comment/3652423/","msgid":"<19c79ca43a6.6b379cc81360187.4397285579129640737@linux.beauty>","list_archive_url":null,"date":"2026-02-20T06:43:44","subject":"Re: [PATCH v2 1/3] jbd2: store jinode dirty range in PAGE_SIZE\n units","submitter":{"id":84264,"url":"http://patchwork.ozlabs.org/api/people/84264/","name":"Li Chen","email":"me@linux.beauty"},"content":"Hi Andreas,\n\nThanks a lot for your review!\n\n ---- On Fri, 20 Feb 2026 05:00:13 +0800  Andreas Dilger <adilger@dilger.ca> wrote --- \n > On Feb 19, 2026, at 04:46, Li Chen <me@linux.beauty> wrote:\n > > \n > > jbd2_inode fields are updated under journal->j_list_lock, but some paths\n > > read them without holding the lock (e.g. fast commit helpers and ordered\n > > truncate helpers).\n > > \n > > READ_ONCE() alone is not sufficient for i_dirty_start/end as they are\n > > loff_t and 32-bit platforms can observe torn loads. Store the dirty range\n > > in PAGE_SIZE units as pgoff_t so lockless readers can take non-torn\n > > snapshots.\n > \n > When making semantic changes like this, it is best to change the variable\n > names as well, so that breaks compilation if bisection happens to land\n > between these patches.  Otherwise, that could cause some random behavior\n > if jbd2 is treating these as pages, but ext4/ocfs2 are treating them as\n > bytes or vice versa.\n > \n > Something like i_dirty_{start,end} -> i_dirty_{start,end}_page would make\n > this very clear what the units are.\n\nAgreed. I’ll make the units explicit in the field names (e.g. *_page).\n\n > To avoid breakage between the patches (which is desirable to avoid problems\n > with automated bisection) you should make an initial patch with wrappers to\n > access these values and convert ext4/ocfs2 to use them:\n > \n > static inline loff_t jbd2_jinode_dirty_start(struct jbd2_inode *jinode)\n > {\n >     return jinode->i_dirty_start;\n > }\n > \n > static inline loff_t jbd2_jinode_dirty_end(struct jbd2_inode *jinode)\n > {\n >     return jinode->i_dirty_end;\n > }\n > \n > then change this in the jbd2 patch at the end, which would then be self-contained:\n > \n > static inline loff_t jbd2_jinode_dirty_start(struct jbd2_inode *jinode)\n > {\n >     return (loff_t)jinode->i_dirty_start_page << PAGE_SHIFT;\n > }\n > \n > static inline loff_t jbd2_jinode_dirty_end(struct jbd2_inode *jinode)\n > {\n >     return ((loff_t)jinode->i_dirty_end_page << PAGE_SHIFT) + ~PAGE_MASK;\n > }\n\n\nAgreed as well. I’ll add an accessor and switch ext4/ocfs2 over to it first,\nThen do the internal representation change later.\n\nI plan to use a single helper that returns the (start,end) pair in\nbytes:\n\nstatic inline bool jbd2_jinode_get_dirty_range(const struct jbd2_inode *jinode,\nloff_t *start, loff_t *end)\n{\n    pgoff_t start_page = READ_ONCE(jinode->i_dirty_start_page);\n    pgoff_t end_page = READ_ONCE(jinode->i_dirty_end_page);\n\n    if (end_page == JBD2_INODE_DIRTY_RANGE_NONE)\n      return false;\n\n    *start = (loff_t)start_page << PAGE_SHIFT;\n    *end = ((loff_t)end_page << PAGE_SHIFT) + PAGE_SIZE - 1;\n    return true;\n\n}\n\nI think this is a bit easier to use correctly than separate start/end helpers\n(keeps start/end together, and the end-of-page conversion lives in one place).\n\nDoes that sound OK, or would you rather see separate\njbd2_jinode_dirty_start()/jbd2_jinode_dirty_end() helpers?\n\nRegards,\nLi​","headers":{"Return-Path":"\n <SRS0=sJox=AY=vger.kernel.org=linux-ext4+bounces-13753-patchwork-incoming=ozlabs.org@ozlabs.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-ext4@vger.kernel.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","patchwork-incoming@ozlabs.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=linux.beauty header.i=me@linux.beauty\n header.a=rsa-sha256 header.s=zmail header.b=L9Ay0Tdg;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=ozlabs.org\n (client-ip=150.107.74.76; helo=mail.ozlabs.org;\n envelope-from=srs0=sjox=ay=vger.kernel.org=linux-ext4+bounces-13753-patchwork-incoming=ozlabs.org@ozlabs.org;\n receiver=patchwork.ozlabs.org)","gandalf.ozlabs.org;\n arc=pass smtp.remote-ip=\"2600:3c0a:e001:db::12fc:5321\"\n arc.chain=\"subspace.kernel.org:zohomail.com\"","gandalf.ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=linux.beauty","gandalf.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=linux.beauty header.i=me@linux.beauty\n header.a=rsa-sha256 header.s=zmail header.b=L9Ay0Tdg;\n\tdkim-atps=neutral","gandalf.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-ext4+bounces-13753-patchwork-incoming=ozlabs.org@vger.kernel.org;\n receiver=ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (1024-bit key) header.d=linux.beauty header.i=me@linux.beauty\n header.b=\"L9Ay0Tdg\"","smtp.subspace.kernel.org;\n arc=pass smtp.client-ip=136.143.188.15","smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=linux.beauty","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=linux.beauty"],"Received":["from mail.ozlabs.org (gandalf.ozlabs.org [150.107.74.76])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1 raw public key)\n server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fHLM24Vy3z1xpY\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 20 Feb 2026 17:44:14 +1100 (AEDT)","from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3])\n\tby gandalf.ozlabs.org (Postfix) with ESMTP id 4fHLM23f0lz4w0p\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 20 Feb 2026 17:44:14 +1100 (AEDT)","by gandalf.ozlabs.org (Postfix)\n\tid 4fHLM23V3wz4w1g; Fri, 20 Feb 2026 17:44:14 +1100 (AEDT)","from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby gandalf.ozlabs.org (Postfix) with ESMTPS id 4fHLLy4yFqz4w0p\n\tfor <patchwork-incoming@ozlabs.org>; Fri, 20 Feb 2026 17:44:10 +1100 (AEDT)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 1920D301FA41\n\tfor <patchwork-incoming@ozlabs.org>; Fri, 20 Feb 2026 06:44:09 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id F06F132D7C7;\n\tFri, 20 Feb 2026 06:44:07 +0000 (UTC)","from sender4-op-o15.zoho.com (sender4-op-o15.zoho.com\n [136.143.188.15])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 88DE41862A;\n\tFri, 20 Feb 2026 06:44:06 +0000 (UTC)","from mail.zoho.com by mx.zohomail.com\n\twith SMTP id 1771569824809302.1211205076038;\n Thu, 19 Feb 2026 22:43:44 -0800 (PST)"],"ARC-Seal":["i=3; a=rsa-sha256; d=ozlabs.org; s=201707; t=1771569854; cv=pass;\n\tb=ryrobpOzYVpU2RbK7B8x9BzqzyID/T2P2FG7jej6oKm3qkTp+1Y7B6TIsk9Cmbn4lfEOLKa8TeWJZquF8Z/Vd61VzpXwNsE2hO4v7djyea5FfHyyLaH5+GUwnJZqXfhKgG10kx1Zrmxc2fQ49tVV4iwVLa/qIqE16BEH0UTr5KSXCnvbNOjwrLSHp8b3pPqNXkypQ/x8ElOBMYV7q+LYyQZypHLWxKfxE/ulY9GrF7D77x6L+jEsfS2gEDnulx2pa27wnAlJrpkFof1QEnp3mrMf2wG3rFej/UCCjfF9vB3qKHFu6XHPFRjuw2zwlzHKyYmAJJ9KVLbetNlmt4J6qg==","i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1771569847; cv=pass;\n b=Cm5yLN8DALUOwaeUV2I9SW6UGljRyX5ynJHGX7nXU/jwP+AUKGWJ6ISUEKe+zcU2jrASf2Kqa821N2AE+xHCp9x357Q/BidMwKdFotN9d8bDdH3YyA8uyrZQyF77cXlQVC8Z/uSdTdkAsb9rpbDEM5JGA63IX2YnghO5LHjvK8U=","i=1; a=rsa-sha256; t=1771569826; cv=none;\n\td=zohomail.com; s=zohoarc;\n\tb=Le0VkAL20hqQDkX6S0FziJY8DUaGgqZhBDg8LOtWF5l95FWV2S0Jd+Le+yjDqYKqAV4+gqSrBm+Br2Ss/rwbCwp4BbfHUIAXuOiNmq+FLnUZfXo7HsWQoTrO7eetfdrbFa0vgUVYY0ZexRXQ5y3iUb7iHC+dSQLw+rN/3jCD6Qs="],"ARC-Message-Signature":["i=3; a=rsa-sha256; d=ozlabs.org; s=201707;\n\tt=1771569854; c=relaxed/relaxed;\n\tbh=zFnXr7Gv21y89XW/CUX7uI1ixjIhrwQ+bzwEz833C/o=;\n\th=Date:From:To:Cc:Message-ID:In-Reply-To:References:Subject:\n\t MIME-Version:Content-Type;\n b=bnZjcRtKteswo21jAsaJ9MIOfHsH+ag3rTHfFHkJq9SsQMsoOiHwTGFdv/McwdiPkao4XbSISm/cH/3KTDm6eANe4T3o8FQ/SRMXmgY/d13ElsvIKnbvYsyOodE+6TssVlO+zJXf/1FsNrHu6OkbERIjkz4KQTyGvC3Zktc/Ru6ZmqbfkjlH7RtBjyUSeiU+/c+YgbMsPOs/npOocp5CB9W9r9JXPg9HJtJhQC0gdiyZIdKH+PVoXnXbSRUXOkYD5Nk4UVo/iSdLu+Wq32LX6ERNKQiO22sDIJKTI8Pxq10wygdgqFk5NbHMET29h4kUSjmpD0wX4CBWwkD+/9qkhg==","i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1771569847; c=relaxed/simple;\n\tbh=xiLdXXTT77hKWwTz2ZB3HFYX7+Yw674RvCpL9vzzw/Y=;\n\th=Date:From:To:Cc:Message-ID:In-Reply-To:References:Subject:\n\t MIME-Version:Content-Type;\n b=TfGZFrA+2+a8lOQuzXz5pNwtxNz3W0yWK2ujrrfT1WUb8P0s7cJMc67shJu5UgycHjjsoq4qxcdQGy74XhvjMEvwCwVlDdPnKSvQ/WbRryLbgKAW4ZA/TVL5g82XXReAyQv25ERo59Ml+LPmQmGQhygNh7wm/4+Jy2VxXlMBRDc=","i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;\n s=zohoarc;\n\tt=1771569826;\n h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To;\n\tbh=zFnXr7Gv21y89XW/CUX7uI1ixjIhrwQ+bzwEz833C/o=;\n\tb=J8+CS2XAG2TCgRhXJe0xMAtUEPfZUph33826T4oAHtprr+iOlAT0eqqZoDWrKpQ0tSEhC97FE3ZmeSLgYXbyGgmm94S+8KUvpsatiiwoQOJ7lzGX1o6uC9h1jTwgELviXAug6ub6BMnyLkSN08BrsBn4vRVBzx3TVBz3Id4uKBU="],"ARC-Authentication-Results":["i=3; gandalf.ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=linux.beauty;\n dkim=pass (1024-bit key;\n unprotected) header.d=linux.beauty header.i=me@linux.beauty\n header.a=rsa-sha256 header.s=zmail header.b=L9Ay0Tdg; dkim-atps=neutral;\n spf=pass (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-ext4+bounces-13753-patchwork-incoming=ozlabs.org@vger.kernel.org;\n receiver=ozlabs.org) smtp.mailfrom=vger.kernel.org","i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=linux.beauty;\n spf=pass smtp.mailfrom=linux.beauty;\n dkim=pass (1024-bit key) header.d=linux.beauty header.i=me@linux.beauty\n header.b=L9Ay0Tdg; arc=pass smtp.client-ip=136.143.188.15","i=1; mx.zohomail.com;\n\tdkim=pass  header.i=linux.beauty;\n\tspf=pass  smtp.mailfrom=me@linux.beauty;\n\tdmarc=pass header.from=<me@linux.beauty>"],"DKIM-Signature":"v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1771569826;\n\ts=zmail; d=linux.beauty; i=me@linux.beauty;\n\th=Date:Date:From:From:To:To:Cc:Cc:Message-ID:In-Reply-To:References:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To;\n\tbh=zFnXr7Gv21y89XW/CUX7uI1ixjIhrwQ+bzwEz833C/o=;\n\tb=L9Ay0Tdg8pzsnhGSmjCJPhYvbZ1OUWGrCOyfiPhY4jbmdp1nHXBSXuwZ6j5GzZK1\n\tOSX3aE88xqsBCYxBGsqmE3qklutOAJCnuMDioHoNJ2N+ECvFDiIiy5xMtjDTux9xWnw\n\t0v7/scWqRUc12Tidk4f5XUsjlmydvMEotD4Bpe/w=","Date":"Fri, 20 Feb 2026 14:43:44 +0800","From":"Li Chen <me@linux.beauty>","To":"\"Andreas Dilger\" <adilger@dilger.ca>","Cc":"\"Theodore Ts'o\" <tytso@mit.edu>, \"Jan Kara\" <jack@suse.cz>,\n\t\"Mark Fasheh\" <mark@fasheh.com>,\n\t\"linux-ext4\" <linux-ext4@vger.kernel.org>,\n\t\"ocfs2-devel\" <ocfs2-devel@lists.linux.dev>,\n\t\"Matthew Wilcox\" <willy@infradead.org>, \"Jan Kara\" <jack@suse.com>,\n\t\"linux-kernel\" <linux-kernel@vger.kernel.org>","Message-ID":"<19c79ca43a6.6b379cc81360187.4397285579129640737@linux.beauty>","In-Reply-To":"<63C86D0D-9EF6-4D33-95B2-8D0F5B305B0B@dilger.ca>","References":"<20260219114645.778338-1-me@linux.beauty>\n <20260219114645.778338-2-me@linux.beauty>\n <63C86D0D-9EF6-4D33-95B2-8D0F5B305B0B@dilger.ca>","Subject":"Re: [PATCH v2 1/3] jbd2: store jinode dirty range in PAGE_SIZE\n units","Precedence":"bulk","X-Mailing-List":"linux-ext4@vger.kernel.org","List-Id":"<linux-ext4.vger.kernel.org>","List-Subscribe":"<mailto:linux-ext4+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-ext4+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","Importance":"Medium","User-Agent":"Zoho Mail","X-Mailer":"Zoho Mail","X-Spam-Status":"No, score=-1.2 required=5.0 tests=ARC_SIGNED,ARC_VALID,\n\tDKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DMARC_PASS,\n\tHEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,\n\tSPF_PASS autolearn=disabled version=4.0.1","X-Spam-Checker-Version":"SpamAssassin 4.0.1 (2024-03-25) on gandalf.ozlabs.org"}},{"id":3652934,"web_url":"http://patchwork.ozlabs.org/comment/3652934/","msgid":"<890EF4B9-1907-4122-8272-680845C2058E@dilger.ca>","list_archive_url":null,"date":"2026-02-23T01:11:02","subject":"Re: [PATCH v2 1/3] jbd2: store jinode dirty range in PAGE_SIZE units","submitter":{"id":4514,"url":"http://patchwork.ozlabs.org/api/people/4514/","name":"Andreas Dilger","email":"adilger@dilger.ca"},"content":"On Feb 19, 2026, at 23:43, Li Chen <me@linux.beauty> wrote:\n> \n> Hi Andreas,\n> \n> Thanks a lot for your review!\n> \n> ---- On Fri, 20 Feb 2026 05:00:13 +0800  Andreas Dilger <adilger@dilger.ca> wrote ---\n>> On Feb 19, 2026, at 04:46, Li Chen <me@linux.beauty> wrote:\n>>> \n>>> jbd2_inode fields are updated under journal->j_list_lock, but some paths\n>>> read them without holding the lock (e.g. fast commit helpers and ordered\n>>> truncate helpers).\n>>> \n>>> READ_ONCE() alone is not sufficient for i_dirty_start/end as they are\n>>> loff_t and 32-bit platforms can observe torn loads. Store the dirty range\n>>> in PAGE_SIZE units as pgoff_t so lockless readers can take non-torn\n>>> snapshots.\n>> \n>> When making semantic changes like this, it is best to change the variable\n>> names as well, so that breaks compilation if bisection happens to land\n>> between these patches.  Otherwise, that could cause some random behavior\n>> if jbd2 is treating these as pages, but ext4/ocfs2 are treating them as\n>> bytes or vice versa.\n>> \n>> Something like i_dirty_{start,end} -> i_dirty_{start,end}_page would make\n>> this very clear what the units are.\n> \n> Agreed. I’ll make the units explicit in the field names (e.g. *_page).\n> \n>> To avoid breakage between the patches (which is desirable to avoid problems\n>> with automated bisection) you should make an initial patch with wrappers to\n>> access these values and convert ext4/ocfs2 to use them:\n>> \n>> static inline loff_t jbd2_jinode_dirty_start(struct jbd2_inode *jinode)\n>> {\n>>    return jinode->i_dirty_start;\n>> }\n>> \n>> static inline loff_t jbd2_jinode_dirty_end(struct jbd2_inode *jinode)\n>> {\n>>    return jinode->i_dirty_end;\n>> }\n>> \n>> then change this in the jbd2 patch at the end, which would then be self-contained:\n>> \n>> static inline loff_t jbd2_jinode_dirty_start(struct jbd2_inode *jinode)\n>> {\n>>    return (loff_t)jinode->i_dirty_start_page << PAGE_SHIFT;\n>> }\n>> \n>> static inline loff_t jbd2_jinode_dirty_end(struct jbd2_inode *jinode)\n>> {\n>>    return ((loff_t)jinode->i_dirty_end_page << PAGE_SHIFT) + ~PAGE_MASK;\n>> }\n> \n> \n> Agreed as well. I’ll add an accessor and switch ext4/ocfs2 over to it first,\n> Then do the internal representation change later.\n> \n> I plan to use a single helper that returns the (start,end) pair in\n> bytes:\n> \n> static inline bool jbd2_jinode_get_dirty_range(const struct jbd2_inode *jinode,\n> loff_t *start, loff_t *end)\n> {\n>    pgoff_t start_page = READ_ONCE(jinode->i_dirty_start_page);\n>    pgoff_t end_page = READ_ONCE(jinode->i_dirty_end_page);\n> \n>    if (end_page == JBD2_INODE_DIRTY_RANGE_NONE)\n>      return false;\n> \n>    *start = (loff_t)start_page << PAGE_SHIFT;\n>    *end = ((loff_t)end_page << PAGE_SHIFT) + PAGE_SIZE - 1;\n>    return true;\n> \n> }\n> \n> I think this is a bit easier to use correctly than separate start/end helpers\n> (keeps start/end together, and the end-of-page conversion lives in one place).\n> \n> Does that sound OK, or would you rather see separate\n> jbd2_jinode_dirty_start()/jbd2_jinode_dirty_end() helpers?\n\nThis is fine with me.  I had only proposed the other option as a \"typical\"\ninterface for such fields.  If start/end are always used together then it\nis fine that there is only one function to get these fields, and one to\nset them.\n\nCheers, Andreas","headers":{"Return-Path":"\n <SRS0=uBIP=A3=vger.kernel.org=linux-ext4+bounces-13773-patchwork-incoming=ozlabs.org@ozlabs.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-ext4@vger.kernel.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","patchwork-incoming@ozlabs.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=dilger-ca.20230601.gappssmtp.com\n header.i=@dilger-ca.20230601.gappssmtp.com header.a=rsa-sha256\n header.s=20230601 header.b=TjQPHEqc;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=ozlabs.org\n (client-ip=150.107.74.76; helo=mail.ozlabs.org;\n envelope-from=srs0=ubip=a3=vger.kernel.org=linux-ext4+bounces-13773-patchwork-incoming=ozlabs.org@ozlabs.org;\n receiver=patchwork.ozlabs.org)","gandalf.ozlabs.org;\n arc=pass smtp.remote-ip=172.234.253.10 arc.chain=subspace.kernel.org","gandalf.ozlabs.org;\n dmarc=none (p=none dis=none) header.from=dilger.ca","gandalf.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=dilger-ca.20230601.gappssmtp.com\n header.i=@dilger-ca.20230601.gappssmtp.com header.a=rsa-sha256\n header.s=20230601 header.b=TjQPHEqc;\n\tdkim-atps=neutral","gandalf.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.234.253.10; helo=sea.lore.kernel.org;\n envelope-from=linux-ext4+bounces-13773-patchwork-incoming=ozlabs.org@vger.kernel.org;\n receiver=ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=dilger-ca.20230601.gappssmtp.com\n header.i=@dilger-ca.20230601.gappssmtp.com header.b=\"TjQPHEqc\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=209.85.216.48","smtp.subspace.kernel.org;\n dmarc=none (p=none dis=none) header.from=dilger.ca","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=dilger.ca"],"Received":["from mail.ozlabs.org (gandalf.ozlabs.org [150.107.74.76])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1 raw public key)\n server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fK2qm6FtMz1xv2\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 23 Feb 2026 12:11:31 +1100 (AEDT)","from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3])\n\tby gandalf.ozlabs.org (Postfix) with ESMTP id 4fK2ql2f0Sz4wBF\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 23 Feb 2026 12:11:31 +1100 (AEDT)","by gandalf.ozlabs.org (Postfix)\n\tid 4fK2qf2D3Rz4wBJ; Mon, 23 Feb 2026 12:11:26 +1100 (AEDT)","from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby gandalf.ozlabs.org (Postfix) with ESMTPS id 4fK2qY3whqz4w1v\n\tfor <patchwork-incoming@ozlabs.org>; Mon, 23 Feb 2026 12:11:21 +1100 (AEDT)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 2D7BB3019913\n\tfor <patchwork-incoming@ozlabs.org>; Mon, 23 Feb 2026 01:11:18 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id F40CA21ABBB;\n\tMon, 23 Feb 2026 01:11:16 +0000 (UTC)","from mail-pj1-f48.google.com (mail-pj1-f48.google.com\n [209.85.216.48])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 47D79199E89\n\tfor <linux-ext4@vger.kernel.org>; Mon, 23 Feb 2026 01:11:15 +0000 (UTC)","by mail-pj1-f48.google.com with SMTP id\n 98e67ed59e1d1-35480b0827bso2288079a91.0\n        for <linux-ext4@vger.kernel.org>;\n Sun, 22 Feb 2026 17:11:15 -0800 (PST)","from smtpclient.apple (S01068c763f81ca4b.cg.shawcable.net.\n [70.77.200.158])\n        by smtp.gmail.com with ESMTPSA id\n 98e67ed59e1d1-358a1a2cb62sm6227722a91.0.2026.02.22.17.11.13\n        (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);\n        Sun, 22 Feb 2026 17:11:13 -0800 (PST)"],"ARC-Seal":["i=2; a=rsa-sha256; d=ozlabs.org; s=201707; t=1771809086; cv=pass;\n\tb=AOW0hcKSttwG/xPIQ+RxDjCZ7kySkrETp7dq5P6Co0YfjSZNvAPosMj5QEQZ+5oBdXBbVcnsWV327DlRktuQgysO6W+i4sUQ85tpj9QfiU8XG8M+sivGFvHIyQAyR1oV5tIQ1wMINnSvGWgQKjjcGrw3xipv1KA/6UHMZF237kUAsYx5yy0506hGidcTxdGpX++YCi8cUTt1Ncxa8atQaZIAxfkx2RWnrB/QHdG3qkrhV97rlpGAvI2kgCH3d4mqcnDAWcjXp089JhRIhqO/hFL7VTvt1wLBntCknLwGFXIJkRGNm4KAuKT2Jwamj4y2XNwOa2whJAL9hWQD+uSUlg==","i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1771809076; cv=none;\n b=Axf0Lg+b76ozvX/9wsLbIcIzVR4/lKo3lAofltBZzEIhv7BnRn1oGJV54DHsXHBQ2DjHe7dbEd5EjbQGcuT+y5FEVwTCIemjReTO3gnEn6Jb1nBKPlZipquK5ITmLv54tPRvJ3RFrH/6RDT8U4u20kXLbv3GsZwd/2HrYTNGw6w="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=ozlabs.org; s=201707;\n\tt=1771809086; c=relaxed/relaxed;\n\tbh=RvESBW1qrUuw3Rqh3QinWReW7kdD3jhBUVJZUasGnN0=;\n\th=Content-Type:Mime-Version:Subject:From:In-Reply-To:Date:Cc:\n\t Message-Id:References:To;\n b=R8WDgzNJxavJwpYYMytPc6/BvQPFTW6QKQCxR3gSsI9yo0R2/EO6WW+3YHs6ud6srLRrL9KuEdvbIyOjrOYcGIYRKAiiLakMEMofVvg582ixwhRffYBxnmRZpWQnayaxK8r0WADxOnT4Jo5mYjStSjYrSb36g6wkZEge2L64qJ72kwZ9nVyQUgdi9YrbgIM6zyjZH7z2vPq9YYDXvXLJ2rzq2R+S/MjSKaTDUlxjzW5iiD9TlDqV7vtjvB3xIETYLGt8IkGBrXwgpBikSL3Ngaej15RKPjzk75yK87FqtYJJabVBZN8ZPfcXYY3H9HHQ20TNJryUbctf1vGox6Ammg==","i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1771809076; c=relaxed/simple;\n\tbh=L24fpwGeD7px2wf3dFOvRPZK8x7DN7NZLZ/Tn53Csu8=;\n\th=Content-Type:Mime-Version:Subject:From:In-Reply-To:Date:Cc:\n\t Message-Id:References:To;\n b=GpuVHHa7Q0Z6Qe/tXLMqQ44W0nIp9T1kDcDqPRSxV1kCF7hiRuGNA6OxHffE7piYXfX9dI80AwXE3yjanJAH1Y9p996N9WJ9pgK0MvZacJyVUEEw34CAZcpMhj4goyh0PFC4OJACyM3Dq+WS4xPOmgp+nPllwAH5ctt0DbShZUw="],"ARC-Authentication-Results":["i=2; gandalf.ozlabs.org;\n dmarc=none (p=none dis=none) header.from=dilger.ca; dkim=pass (2048-bit key;\n unprotected) header.d=dilger-ca.20230601.gappssmtp.com\n header.i=@dilger-ca.20230601.gappssmtp.com header.a=rsa-sha256\n header.s=20230601 header.b=TjQPHEqc; dkim-atps=neutral;\n spf=pass (client-ip=172.234.253.10; helo=sea.lore.kernel.org;\n envelope-from=linux-ext4+bounces-13773-patchwork-incoming=ozlabs.org@vger.kernel.org;\n receiver=ozlabs.org) smtp.mailfrom=vger.kernel.org","i=1; smtp.subspace.kernel.org;\n dmarc=none (p=none dis=none) header.from=dilger.ca;\n spf=pass smtp.mailfrom=dilger.ca;\n dkim=pass (2048-bit key) header.d=dilger-ca.20230601.gappssmtp.com\n header.i=@dilger-ca.20230601.gappssmtp.com header.b=TjQPHEqc;\n arc=none smtp.client-ip=209.85.216.48"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=dilger-ca.20230601.gappssmtp.com; s=20230601; t=1771809074;\n x=1772413874; darn=vger.kernel.org;\n        h=to:references:message-id:content-transfer-encoding:cc:date\n         :in-reply-to:from:subject:mime-version:from:to:cc:subject:date\n         :message-id:reply-to;\n        bh=RvESBW1qrUuw3Rqh3QinWReW7kdD3jhBUVJZUasGnN0=;\n        b=TjQPHEqcC2VmBXSBFJNSRf1X8+AvN6E4IZrkqtvZ7RdNIDDFNKiThCezwk1+xrN0av\n         lW7vrjcYbcZMJ69s+Vxva82wCnu3TFG9kx9BYPvP/cSAx+cePdg0JbojcAUS9kS0IoDC\n         3l/KgnscW47agDAaErZSZdgBh7+ZGKqCKKYl+BOJoElptl/NkXkdZ1NN3mXvaCzpnDmM\n         uj8wuQy/KmoaggJl6fcL5Wu4nhgALQb5M4zVmWaVxXyhtkHX8hWQnMIMBiehFEdfLsj5\n         rFt4xIUbYCTF3sdDWhST2hLpHoX24TVzv5fVlhyERdzl8gAk7nIbSV95TRi30n6OvJmO\n         CfEA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20230601; t=1771809074; x=1772413874;\n        h=to:references:message-id:content-transfer-encoding:cc:date\n         :in-reply-to:from:subject:mime-version:x-gm-gg:x-gm-message-state\n         :from:to:cc:subject:date:message-id:reply-to;\n        bh=RvESBW1qrUuw3Rqh3QinWReW7kdD3jhBUVJZUasGnN0=;\n        b=ljymHDcqcXRpdYrvjkz5W/Cqrvm8vZP8Sp6aByCOWnunOvyqfxxfJKm4cvkdY+jkMj\n         ACHsCzpTYa2O51rM7fawoCHzsOhJ+GJ/n1Tya7Zj4lAISySJ/BJyKiKupUbf/rPC5cdk\n         nXJWr+/RiBAa/jQ30IbZ/EeUpTozd3tGCNadD2jeJvO4NdyVF+0O7xtHly24gAF8CMCz\n         wr+O/xuSix26naapWXlREjy1IP5OiiEx6gCbQ93NrudXwf564yvizFbCz/U/b914/n9V\n         2ug7j+t+nuMll9cxsaUUroDVjGaCcilS/W/UhUzEF6snHntQplNMKYzIrXhh80DxvVV7\n         eIXg==","X-Forwarded-Encrypted":"i=1;\n AJvYcCVfoJNSI4tA4sMiNsWpnQXMYU9fmTlGv1p/JGnhmY5K8zz7ZLAHTkA83TO5jtkYauSjzutEZHb1KMe4@vger.kernel.org","X-Gm-Message-State":"AOJu0Yy4XZitjXPOROHEeEVI9CRFRulYLljy7DmCJZDr0+yVDKYnNqW7\n\tXZeTfsf1mzdcWzWSIIrP4cbHXDdFBnOyPS9qRaHpTVH58dG60+vheN6a6yF2prI1IjLC+25LTNz\n\t0ZIqBvy8=","X-Gm-Gg":"AZuq6aLQwn+hj3ECdPIWvJKWe1EBU8kg+BI6NJBAXinI7bn2BDmamWELvtNpPJSd09j\n\tAJa6sPq2cyJlSGIK/WLtRg9Xf400p9TBzXFC8jwVXRDivpPmCO1u8sCGkHtNqh66Np5IdKvWIM0\n\tJB5NQnAB0zHroZBMxePz8CHY6RjOPJXyzh4GVpkTPcyaD7ObLyNKEJjWky3FcABZe0RCelJVIQZ\n\t2w4LFir3muCPKPwTomCPrZ4LW0FeJisCEp9VLyv71uH9Gx7dzxsbZPsZlWDgpIUcOGbXfej7PbI\n\tvOgGy1NiGJcblo6Pr+c20cpnR6EQD3JkA+cP/E81wJDt+kumgKxxXBL5FqGEtlI+TlGpQyaP9v7\n\tKI8Dd2S7DHoD9wgjSPBK9nNtmAIFYAVjvzieVTNy3CrEUvxTFXFGN04r/Wcvuy/23rbkDGswd1s\n\tEQOh2baOsHnWpz+YYfWQOyip432LkF8sMPNdFi/rm1U3lMaUVOjwY4tNdk2o1z/a5znKt2YiQyP\n\tQ6lA5CZmqLtiDvx","X-Received":"by 2002:a17:90b:2cc7:b0:34c:ab9b:837c with SMTP id\n 98e67ed59e1d1-358983a8b41mr10989438a91.0.1771809074558;\n        Sun, 22 Feb 2026 17:11:14 -0800 (PST)","Content-Type":"text/plain;\n\tcharset=utf-8","Precedence":"bulk","X-Mailing-List":"linux-ext4@vger.kernel.org","List-Id":"<linux-ext4.vger.kernel.org>","List-Subscribe":"<mailto:linux-ext4+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-ext4+unsubscribe@vger.kernel.org>","Mime-Version":"1.0 (Mac OS X Mail 16.0 \\(3864.100.1.1.5\\))","Subject":"Re: [PATCH v2 1/3] jbd2: store jinode dirty range in PAGE_SIZE units","From":"Andreas Dilger <adilger@dilger.ca>","In-Reply-To":"<19c79ca43a6.6b379cc81360187.4397285579129640737@linux.beauty>","Date":"Sun, 22 Feb 2026 18:11:02 -0700","Cc":"Theodore Ts'o <tytso@mit.edu>,\n Jan Kara <jack@suse.cz>,\n Mark Fasheh <mark@fasheh.com>,\n linux-ext4 <linux-ext4@vger.kernel.org>,\n ocfs2-devel <ocfs2-devel@lists.linux.dev>,\n Matthew Wilcox <willy@infradead.org>,\n Jan Kara <jack@suse.com>,\n linux-kernel <linux-kernel@vger.kernel.org>","Content-Transfer-Encoding":"quoted-printable","Message-Id":"<890EF4B9-1907-4122-8272-680845C2058E@dilger.ca>","References":"<20260219114645.778338-1-me@linux.beauty>\n <20260219114645.778338-2-me@linux.beauty>\n <63C86D0D-9EF6-4D33-95B2-8D0F5B305B0B@dilger.ca>\n <19c79ca43a6.6b379cc81360187.4397285579129640737@linux.beauty>","To":"Li Chen <me@linux.beauty>","X-Mailer":"Apple Mail (2.3864.100.1.1.5)","X-Spam-Status":"No, score=-1.1 required=5.0 tests=ARC_SIGNED,ARC_VALID,\n\tDKIM_SIGNED,DKIM_VALID,DMARC_MISSING,HEADER_FROM_DIFFERENT_DOMAINS,\n\tMAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=disabled\n\tversion=4.0.1","X-Spam-Checker-Version":"SpamAssassin 4.0.1 (2024-03-25) on gandalf.ozlabs.org"}}]