Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2216393/?format=api
{ "id": 2216393, "url": "http://patchwork.ozlabs.org/api/patches/2216393/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-ext4/patch/20260326111054.907252-11-yi.zhang@huaweicloud.com/", "project": { "id": 8, "url": "http://patchwork.ozlabs.org/api/projects/8/?format=api", "name": "Linux ext4 filesystem development", "link_name": "linux-ext4", "list_id": "linux-ext4.vger.kernel.org", "list_email": "linux-ext4@vger.kernel.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260326111054.907252-11-yi.zhang@huaweicloud.com>", "list_archive_url": null, "date": "2026-03-26T11:10:53", "name": "[v3,10/11] ext4: move pagecache_isize_extended() out of active handle", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": false, "hash": "40403c41ce39d9ad98d2c285316345360b3440c7", "submitter": { "id": 85428, "url": "http://patchwork.ozlabs.org/api/people/85428/?format=api", "name": "Zhang Yi", "email": "yi.zhang@huaweicloud.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linux-ext4/patch/20260326111054.907252-11-yi.zhang@huaweicloud.com/mbox/", "series": [ { "id": 497571, "url": "http://patchwork.ozlabs.org/api/series/497571/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-ext4/list/?series=497571", "date": "2026-03-26T11:10:46", "name": "ext4: refactor partial block zero-out for iomap conversion", "version": 3, "mbox": "http://patchwork.ozlabs.org/series/497571/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2216393/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2216393/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <SRS0=Py5Z=B2=vger.kernel.org=linux-ext4+bounces-15444-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 spf=pass (sender SPF authorized) smtp.mailfrom=ozlabs.org\n (client-ip=2404:9400:2221:ea00::3; helo=mail.ozlabs.org;\n envelope-from=srs0=py5z=b2=vger.kernel.org=linux-ext4+bounces-15444-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=huaweicloud.com", "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-15444-patchwork-incoming=ozlabs.org@vger.kernel.org;\n receiver=ozlabs.org)", "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=45.249.212.56", "smtp.subspace.kernel.org;\n dmarc=none (p=none dis=none) header.from=huaweicloud.com", "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=huaweicloud.com" ], "Received": [ "from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3])\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 legolas.ozlabs.org (Postfix) with ESMTPS id 4fhLzJ3R95z1y1x\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 26 Mar 2026 22:25:00 +1100 (AEDT)", "from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3])\n\tby gandalf.ozlabs.org (Postfix) with ESMTP id 4fhLzJ2yrYz4wM0\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 26 Mar 2026 22:25:00 +1100 (AEDT)", "by gandalf.ozlabs.org (Postfix)\n\tid 4fhLzJ2pf5z4wSK; Thu, 26 Mar 2026 22:25:00 +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 4fhLzD4Vdyz4wM0\n\tfor <patchwork-incoming@ozlabs.org>; Thu, 26 Mar 2026 22:24:56 +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 C4FF030AFA30\n\tfor <patchwork-incoming@ozlabs.org>; Thu, 26 Mar 2026 11:16:26 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 519F13C8716;\n\tThu, 26 Mar 2026 11:15:56 +0000 (UTC)", "from dggsgout12.his.huawei.com (dggsgout12.his.huawei.com\n [45.249.212.56])\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 235113859EC;\n\tThu, 26 Mar 2026 11:15:52 +0000 (UTC)", "from mail.maildlp.com (unknown [172.19.163.177])\n\tby dggsgout12.his.huawei.com (SkyGuard) with ESMTPS id 4fhLly1lBhzKHMm3;\n\tThu, 26 Mar 2026 19:15:10 +0800 (CST)", "from mail02.huawei.com (unknown [10.116.40.112])\n\tby mail.maildlp.com (Postfix) with ESMTP id 6444740592;\n\tThu, 26 Mar 2026 19:15:50 +0800 (CST)", "from huaweicloud.com (unknown [10.50.85.155])\n\tby APP1 (Coremail) with SMTP id cCh0CgD3+NhWFcVprDInCQ--.2580S14;\n\tThu, 26 Mar 2026 19:15:50 +0800 (CST)" ], "ARC-Seal": [ "i=2; a=rsa-sha256; d=ozlabs.org; s=201707; t=1774524300; cv=pass;\n\tb=IIklRghjYCCGNMlaBvGGofAP6/kOzlzyjVKOtKJsQKg/Rx4a47RpTGdbw7Nk9h5SwFbf0dqWN5kz89jGzAQTY9YrsNfJIn4Hne+7epiE4M24hpzoEay6LAnBl9MrW3bI87tHBMZg6wVFdin9y7pqwq3s3r15OzUDGQmNuCxPqvnrRTLQITNaDP39vbqB5InAsFvfnOXYWs+FwrpcBixfGxZO5tfp9W68p9uvgADqL3RBpB88q/K5WN9Jsy/DW67o6SV+2xiRP085UaeZNGPuJY834vUG6gfVFCaEzy8eVJZhhyz0tNfT/KhdTpCb76VdRN1POzGYMmeTcIvBrjLuFQ==", "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1774523756; cv=none;\n b=Lsz5v2Fc2dYStt6047KoS5EgK/8799oWxIAzShIaMWYmCF+X4FwZ+gSXGpZF4JFtofQ64TmmNC295t5yhLGmRwGfqLspHc52s7VsIteQIvjndQ4+nrSdsQtr0A+44MvWLCSJmv96QxrdfdfDfF4QQnMbu3pqJgLRlzIiGffBfVw=" ], "ARC-Message-Signature": [ "i=2; a=rsa-sha256; d=ozlabs.org; s=201707;\n\tt=1774524300; c=relaxed/relaxed;\n\tbh=GvUFx0dv3HZOODZVtK9lHtpjDoNAiwOWl+7VkF6GqFI=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version;\n b=rZN5FQ3xwrUVak2YFpIyecWsCle1ndSe7hLOsR3JfRrtIZ+zRmJWIGfv0cHD2jMu/12npW4hIcHCO7c5S6i6zRyqFO6UkJunaqZuTBPsFSfGNDyKPBqke0FQ4AHpk5NtJcxX/wGSSxn82Y8RPIJfpn6c4zoi0wXNSR9NpwwkG2QISBuiP8Xr6e5nKH7d/chIv1UjsD1IHQ9QLcy5ud3yeuQqutLrlMuZQ9CSbe/dthJXljSFHo1lL3XXV9rKPUh3i8SvcQ+mM9XVdsL65gzsgbYuhH+4SuDam8qHhIZVO/WC1r7/XHcCSitAg+iXXUVlov/FJoBPvL9/8tCavnzhxg==", "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1774523756; c=relaxed/simple;\n\tbh=O3/imx8V6zIXOmaZ3jq7idWbuIt/Pkm26283YKmlLb4=;\n\th=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:\n\t MIME-Version;\n b=Cn5fcCpYNa1J6LSkEjTW+TXONRD9zQYwGvrpd98XZnAXwS2X07bfOjRNmWxu9FiTVfIG63ERR8Qmy9ySrkRQ44hShUYUlFUIcR+nfEZzlj7Ncj1ckrlRxdFSsirUOQIrhkR0xAh7v26Tno8OaqNyaxaj7LdVX7rGwxlWfq3nnMM=" ], "ARC-Authentication-Results": [ "i=2; gandalf.ozlabs.org;\n dmarc=none (p=none dis=none) header.from=huaweicloud.com;\n spf=pass (client-ip=172.234.253.10; helo=sea.lore.kernel.org;\n envelope-from=linux-ext4+bounces-15444-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=huaweicloud.com;\n spf=pass smtp.mailfrom=huaweicloud.com; arc=none smtp.client-ip=45.249.212.56" ], "From": "Zhang Yi <yi.zhang@huaweicloud.com>", "To": "linux-ext4@vger.kernel.org", "Cc": "linux-fsdevel@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org,\n\ttytso@mit.edu,\n\tadilger.kernel@dilger.ca,\n\tjack@suse.cz,\n\tojaswin@linux.ibm.com,\n\tritesh.list@gmail.com,\n\tlibaokun@linux.alibaba.com,\n\tyi.zhang@huawei.com,\n\tyi.zhang@huaweicloud.com,\n\tyizhang089@gmail.com,\n\tyangerkun@huawei.com,\n\tyukuai@fnnas.com", "Subject": "[PATCH v3 10/11] ext4: move pagecache_isize_extended() out of active\n handle", "Date": "Thu, 26 Mar 2026 19:10:53 +0800", "Message-ID": "<20260326111054.907252-11-yi.zhang@huaweicloud.com>", "X-Mailer": "git-send-email 2.52.0", "In-Reply-To": "<20260326111054.907252-1-yi.zhang@huaweicloud.com>", "References": "<20260326111054.907252-1-yi.zhang@huaweicloud.com>", "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-Transfer-Encoding": "8bit", "X-CM-TRANSID": "cCh0CgD3+NhWFcVprDInCQ--.2580S14", "X-Coremail-Antispam": "1UD129KBjvJXoWxJFy3Xr1fKr1rCr1UXrykGrg_yoW5try3pr\n\tW3CF1rtF1FgFyq9r4ftr4DZr4Yga48KrWUZr93Wr9Yv3ZxXr1rKr1YyFyFvFW5trW8XF4Y\n\tqrs0yw15G3WUZ3DanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2\n\t9KBjDU0xBIdaVrnRJUUUmS14x267AKxVWrJVCq3wAFc2x0x2IEx4CE42xK8VAvwI8IcIk0\n\trVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2048vs2IY020E87I2jVAFwI0_JF0E3s1l82xGYI\n\tkIc2x26xkF7I0E14v26ryj6s0DM28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8wA2\n\tz4x0Y4vE2Ix0cI8IcVAFwI0_tr0E3s1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Gr1j6F\n\t4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x0267AKxVW0oVCq\n\t3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0I7\n\tIYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Jr0_Gr1lOx8S6xCaFVCjc4AY6r1j6r4U\n\tM4x0Y48IcxkI7VAKI48JM4x0x7Aq67IIx4CEVc8vx2IErcIFxwACI402YVCY1x02628vn2\n\tkIc2xKxwCY1x0262kKe7AKxVWUtVW8ZwCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkE\n\tbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67\n\tAF67kF1VAFwI0_Jw0_GFylIxkGc2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVW8JVW5JwCI\n\t42IY6xIIjxv20xvEc7CjxVAFwI0_Gr1j6F4UJwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF\n\t4lIxAIcVC2z280aVAFwI0_Gr0_Cr1lIxAIcVC2z280aVCY1x0267AKxVW8Jr0_Cr1UYxBI\n\tdaVFxhVjvjDU0xZFpf9x0JUQFxUUUUUU=", "X-CM-SenderInfo": "d1lo6xhdqjqx5xdzvxpfor3voofrz/", "X-Spam-Status": "No, score=-1.1 required=5.0 tests=ARC_SIGNED,ARC_VALID,\n\tDMARC_MISSING,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,\n\tSPF_HELO_NONE,SPF_PASS autolearn=disabled version=4.0.1", "X-Spam-Checker-Version": "SpamAssassin 4.0.1 (2024-03-25) on gandalf.ozlabs.org" }, "content": "From: Zhang Yi <yi.zhang@huawei.com>\n\nIn ext4_alloc_file_blocks(), pagecache_isize_extended() is called under\nan active handle and may also hold folio lock if the block size is\nsmaller than the folio size. This also breaks the \"folio lock ->\ntransaction start\" lock ordering for the upcoming iomap buffered I/O\npath.\n\nTherefore, move pagecache_isize_extended() outside of an active handle.\nAdditionally, it is unnecessary to update the file length during each\niteration of the allocation loop. Instead, update the file length only\nto the position where the allocation is successful. Postpone updating\nthe inode size until after the allocation loop completes or is\ninterrupted due to an error.\n\nSigned-off-by: Zhang Yi <yi.zhang@huawei.com>\n---\n fs/ext4/extents.c | 69 +++++++++++++++++++++++++++++------------------\n 1 file changed, 43 insertions(+), 26 deletions(-)", "diff": "diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c\nindex 4155a2e37070..19fc1ef7b2c3 100644\n--- a/fs/ext4/extents.c\n+++ b/fs/ext4/extents.c\n@@ -4618,44 +4618,61 @@ static int ext4_alloc_file_blocks(struct file *file, loff_t offset, loff_t len,\n \t\t\text4_journal_stop(handle);\n \t\t\tbreak;\n \t\t}\n+\t\text4_update_inode_fsync_trans(handle, inode, 1);\n+\t\tret = ext4_journal_stop(handle);\n+\t\tif (unlikely(ret))\n+\t\t\tbreak;\n+\n \t\t/*\n \t\t * allow a full retry cycle for any remaining allocations\n \t\t */\n \t\tretries = 0;\n-\t\tepos = EXT4_LBLK_TO_B(inode, map.m_lblk + ret);\n-\t\tif (new_size) {\n-\t\t\tif (epos > new_size)\n-\t\t\t\tepos = new_size;\n-\t\t\text4_update_inode_size(inode, epos);\n-\t\t\tif (epos > old_size)\n-\t\t\t\tpagecache_isize_extended(inode, old_size, epos);\n+\n+\t\tif (alloc_zero &&\n+\t\t (map.m_flags & (EXT4_MAP_MAPPED | EXT4_MAP_UNWRITTEN))) {\n+\t\t\tret = ext4_issue_zeroout(inode, map.m_lblk, map.m_pblk,\n+\t\t\t\t\t\t map.m_len);\n+\t\t\tif (likely(!ret))\n+\t\t\t\tret = ext4_convert_unwritten_extents(NULL,\n+\t\t\t\t\tinode, (loff_t)map.m_lblk << blkbits,\n+\t\t\t\t\t(loff_t)map.m_len << blkbits);\n+\t\t\tif (ret)\n+\t\t\t\tbreak;\n \t\t}\n+\n+\t\tmap.m_lblk += map.m_len;\n+\t\tmap.m_len = len_lblk = len_lblk - map.m_len;\n+\t}\n+\n+\tif (ret == -ENOSPC && ext4_should_retry_alloc(inode->i_sb, &retries))\n+\t\tgoto retry;\n+\n+\tif (!new_size)\n+\t\treturn ret;\n+\n+\t/*\n+\t * Update the file size to match the size of the already successfully\n+\t * allocated blocks.\n+\t */\n+\tepos = EXT4_LBLK_TO_B(inode, map.m_lblk);\n+\tif (epos > new_size)\n+\t\tepos = new_size;\n+\tif (epos > old_size) {\n+\t\thandle = ext4_journal_start(inode, EXT4_HT_MISC, 1);\n+\t\tif (IS_ERR(handle))\n+\t\t\treturn PTR_ERR(handle);\n+\n+\t\text4_update_inode_size(inode, epos);\n+\n \t\tret2 = ext4_mark_inode_dirty(handle, inode);\n \t\text4_update_inode_fsync_trans(handle, inode, 1);\n \t\tret3 = ext4_journal_stop(handle);\n \t\tret2 = ret3 ? ret3 : ret2;\n-\t\tif (unlikely(ret2))\n-\t\t\tbreak;\n \n-\t\tif (alloc_zero &&\n-\t\t (map.m_flags & (EXT4_MAP_MAPPED | EXT4_MAP_UNWRITTEN))) {\n-\t\t\tret2 = ext4_issue_zeroout(inode, map.m_lblk, map.m_pblk,\n-\t\t\t\t\t\t map.m_len);\n-\t\t\tif (likely(!ret2))\n-\t\t\t\tret2 = ext4_convert_unwritten_extents(NULL,\n-\t\t\t\t\tinode, (loff_t)map.m_lblk << blkbits,\n-\t\t\t\t\t(loff_t)map.m_len << blkbits);\n-\t\t\tif (ret2)\n-\t\t\t\tbreak;\n-\t\t}\n-\n-\t\tmap.m_lblk += ret;\n-\t\tmap.m_len = len_lblk = len_lblk - ret;\n+\t\tpagecache_isize_extended(inode, old_size, epos);\n \t}\n-\tif (ret == -ENOSPC && ext4_should_retry_alloc(inode->i_sb, &retries))\n-\t\tgoto retry;\n \n-\treturn ret > 0 ? ret2 : ret;\n+\treturn ret ? ret : ret2;\n }\n \n static int ext4_collapse_range(struct file *file, loff_t offset, loff_t len);\n", "prefixes": [ "v3", "10/11" ] }