[{"id":3669564,"web_url":"http://patchwork.ozlabs.org/comment/3669564/","msgid":"<4cb874b7-f5e3-4612-a2cd-c5e707c72985@huaweicloud.com>","list_archive_url":null,"date":"2026-03-26T08:53:03","subject":"Re: [PATCH v2 00/10] ext4: refactor partial block zero-out for iomap\n conversion","submitter":{"id":85428,"url":"http://patchwork.ozlabs.org/api/people/85428/","name":"Zhang Yi","email":"yi.zhang@huaweicloud.com"},"content":"On 3/25/2026 3:28 PM, Zhang Yi wrote:\n> From: Zhang Yi <yi.zhang@huawei.com>\n\nSashiko found some real issues in patch 09 and 10, I will send v3 to fix them.\n\nhttps://sashiko.dev/#/patchset/20260325072850.3997161-1-yi.zhang%40huaweicloud.com\n\nBest Regards,\nYi.\n\n> \n> Changes since v1:\n>  - In patch 04, rename ext4_block_get_zero_range() to\n>    ext4_load_tail_bh() and drop the unused 'length' parameter as Jan\n>    suggested.\n>  - In patch 06, modify the commit message, add another reason to drop\n>    data=ordered mode when zeroing partial blocks in ext4_punch_hole()\n>    and ext4_punch_hole() as Jan pointed out.\n>  - In patch 10, modify the commit message, explain the race condition\n>    between the buffered write and mmap write that pointed out by Jan.\n>  - Collect reviewed tags from Jan.\n> \n> v1: https://lore.kernel.org/linux-ext4/20260310014101.4140698-1-yi.zhang@huaweicloud.com/\n> \n> Original cover letter:\n> \n> This patch series extracted from my iomap conversion v2 series[1]. It\n> refactors the ext4 zero partial block code path in preparation for\n> converting buffered I/O to the iomap infrastructure. The main changes\n> are:\n> \n> [1] https://lore.kernel.org/linux-ext4/20260203062523.3869120-1-yi.zhang@huawei.com/\n> \n> 1. Introduce ext4_block_zero_eof(): Extend and rename\n>    ext4_block_truncate_page() to handle post-EOF partial block zeroing\n>    for both append writes and truncate operations.\n> 2. Separate ordered data handling: Move data=ordered mode handling from\n>    __ext4_block_zero_page_range to ext4_block_zero_eof(). Only truncate\n>    and post-EOF append write/fallocate paths need ordered data mode,\n>    hole punching and zero range paths don't need ordered data handling.\n> 3. Split journal mode handling: Extract\n>    ext4_block_journalled_zero_range() from\n>    __ext4_block_zero_page_range() for data=journal mode, leaving\n>    ext4_block_do_zero_range() for data=ordered/writeback modes.\n> 4. Refactor ext4_alloc_file_blocks(): Change parameters to loff_t byte\n>    granularity to simplify callers and prepares removing the zero call\n>    from the allocation loop for unaligned append writes.\n> 5. Remove handle parameters: Stop passing handle_t * to zero functions.\n>    Make ext4_block_journalled_zero_range() start its own handle, and\n>    move zero operations outside active handles. This is required because\n>    iomap uses \"folio lock -> transaction start\" lock ordering, opposite\n>    to the current lock ordering.\n> 6. Centralize zeroing in ext4_write_checks(): Move all post-EOF partial\n>    block zeroing to ext4_write_checks() so it applies to both regular\n>    buffered writes and the upcoming iomap path.\n> \n> Thanks\n> Yi.\n> \n> Zhang Yi (10):\n>   ext4: add did_zero output parameter to ext4_block_zero_page_range()\n>   ext4: ext4_block_truncate_page() returns zeroed length on success\n>   ext4: rename and extend ext4_block_truncate_page()\n>   ext4: factor out journalled block zeroing range\n>   ext4: rename ext4_block_zero_page_range() to ext4_block_zero_range()\n>   ext4: move ordered data handling out of ext4_block_do_zero_range()\n>   ext4: remove handle parameters from zero partial block functions\n>   ext4: pass allocate range as loff_t to ext4_alloc_file_blocks()\n>   ext4: move zero partial block range functions out of active handle\n>   ext4: zero post-EOF partial block before appending write\n> \n>  fs/ext4/ext4.h    |   5 +-\n>  fs/ext4/extents.c |  83 +++++++--------\n>  fs/ext4/file.c    |  14 +++\n>  fs/ext4/inode.c   | 255 ++++++++++++++++++++++++++++------------------\n>  4 files changed, 207 insertions(+), 150 deletions(-)\n>","headers":{"Return-Path":"\n <SRS0=5l/3=B2=vger.kernel.org=linux-ext4+bounces-15392-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=5l/3=b2=vger.kernel.org=linux-ext4+bounces-15392-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-15392-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=none 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 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 4fhJHl6V49z1y1x\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 26 Mar 2026 20:24:03 +1100 (AEDT)","from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3])\n\tby gandalf.ozlabs.org (Postfix) with ESMTP id 4fhJHl6FT6z4wHX\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 26 Mar 2026 20:24:03 +1100 (AEDT)","by gandalf.ozlabs.org (Postfix)\n\tid 4fhJHl61tyz4w9T; Thu, 26 Mar 2026 20:24:03 +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 4fhJHg42v6z4wHX\n\tfor <patchwork-incoming@ozlabs.org>; Thu, 26 Mar 2026 20:23:59 +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 14A61312B9B9\n\tfor <patchwork-incoming@ozlabs.org>; Thu, 26 Mar 2026 09:09:25 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id B784039023C;\n\tThu, 26 Mar 2026 09:09:23 +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 941F9221D89;\n\tThu, 26 Mar 2026 09:09:20 +0000 (UTC)","from mail.maildlp.com (unknown [172.19.163.198])\n\tby dggsgout12.his.huawei.com (SkyGuard) with ESMTPS id 4fhHbH2s6tzKHMhW;\n\tThu, 26 Mar 2026 16:52:27 +0800 (CST)","from mail02.huawei.com (unknown [10.116.40.112])\n\tby mail.maildlp.com (Postfix) with ESMTP id 61AEA40573;\n\tThu, 26 Mar 2026 16:53:07 +0800 (CST)","from [10.174.178.253] (unknown [10.174.178.253])\n\tby APP1 (Coremail) with SMTP id cCh0CgBHStrv88RpqlIbCQ--.6951S3;\n\tThu, 26 Mar 2026 16:53:05 +0800 (CST)"],"ARC-Seal":["i=2; a=rsa-sha256; d=ozlabs.org; s=201707; t=1774517043; cv=pass;\n\tb=hfuYF4lj3oAkxCNAudsqtWLyZF4qImrNp/2ScsRiUpCc0yKrC7W3cEWxEulcxVNehw4Hy4Jp9plv/RQeubFooC7t/7TJvnNhxfjxzOlWhGmTwWT6y4op0Kv2gh1Mp3tzJRshI3/H0MOvnMsCeF77a7bZiqJcgd3KdM67KhERzTOcqGOX1U+7hie4gtPxWDcTGRhd1+TAxr4hCm/A56EePrepsI6/Lqxwxok8DbhT3MYBkuaOKAyOUJYBVDNWeH8+pfuhyPrZrkEQLYb+VVtw3roCWC8r88J/hiHIZN6CdqTT3/tn43OVJ5bV6VpXhbG4xGkArAvVURYAWdRiSPuZMw==","i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1774516163; cv=none;\n b=Es9kQmxB+Ul+FzDV80cd+JUR7vloBK9RsgH2rXSvx/3o26qwD8Mu7x2HkgBewLPe5wwX07JKZDTIcR7M86zJ77g0v5VZPY78qofEEdLVMYLtAyj7RmbZP8Yu9ScXjIhGwqnsVG/lJqI9jlvCwouHQyhxq9JbXB6hs6NGtGmufxw="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=ozlabs.org; s=201707;\n\tt=1774517043; c=relaxed/relaxed;\n\tbh=vTOowuAmJq1Y6FT8RZlIMkQbfifGSrFyiJ9bALGDak8=;\n\th=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:\n\t In-Reply-To:Content-Type;\n b=KRbn2NGASuCp5THojkY3SLkbkLj09QjJdfQstlZ5rHx79UoUP6OfjlcQd6Ac8qI3svp99E8rZtS9YqTopoiX5Hl7j99wOZaUWSCu1FFy1q6zG9j+NnzCY4egGkPyZ0UcJKyVKx8O3HjneKeulHP1kL5+dhoe0dsRyNcetozm7xVOSu7TiDKVHlF6ajX2kyjDxTJeQIwqPLFpfA2+L+totRQaCNTt02e0Yng4mZuWtPse44FB3TWDcs/UbRbeGZy+BX6tTrxMoKf+rcAnsaIuZrUPjSMn9Occ8s/kIe3Y75Vhh9Ur2m6VZZ8wQ4JxbH/p24faZgyd3gIQtie7GRwyqA==","i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1774516163; c=relaxed/simple;\n\tbh=tLY0ePJlKmZKLqmOL9WiC9ORTlmc/Y/m+2xJ8tQZ3xQ=;\n\th=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:\n\t In-Reply-To:Content-Type;\n b=t9ZcH6GMa2sRrqTU3GrREz7AaRPTyaHOAup7lSliO8M6D0qh8jblJ8gInIxqRpi/0WqFsBFVd+aJDlgJwe8TxLtx/oDcmKZ3WNUlBtwJTsxup5QOZdryROjMvMqAfHrbT2TbHozgSGgi++0J/riAgArfiioAt8xqBNgLzKbjnFI="],"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-15392-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=none smtp.mailfrom=huaweicloud.com; arc=none smtp.client-ip=45.249.212.56"],"Message-ID":"<4cb874b7-f5e3-4612-a2cd-c5e707c72985@huaweicloud.com>","Date":"Thu, 26 Mar 2026 16:53:03 +0800","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","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH v2 00/10] ext4: refactor partial block zero-out for iomap\n conversion","To":"linux-ext4@vger.kernel.org","Cc":"linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,\n tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz,\n ojaswin@linux.ibm.com, ritesh.list@gmail.com, libaokun@linux.alibaba.com,\n yi.zhang@huawei.com, yizhang089@gmail.com, yangerkun@huawei.com,\n yukuai@fnnas.com","References":"<20260325072850.3997161-1-yi.zhang@huaweicloud.com>","Content-Language":"en-US","From":"Zhang Yi <yi.zhang@huaweicloud.com>","In-Reply-To":"<20260325072850.3997161-1-yi.zhang@huaweicloud.com>","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"7bit","X-CM-TRANSID":"cCh0CgBHStrv88RpqlIbCQ--.6951S3","X-Coremail-Antispam":"1UD129KBjvJXoWxZw47Jr4UAF1rZFyfGrWDCFg_yoW5Kw4DpF\n\tya9w1Y9r4xG39F9an7CF48XF1a9wn3Gr4rGry3G34kZ3y5ZF1IkFs3Ka1F9FWj9rW3Ga40\n\tqF4UAa4UWFn8Aa7anT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2\n\t9KBjDU0xBIdaVrnRJUUUv0b4IE77IF4wAFF20E14v26r4j6ryUM7CY07I20VC2zVCF04k2\n\t6cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4\n\tvEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_tr0E3s1l84ACjcxK6xIIjxv20xvEc7Cj\n\txVAFwI0_Gr1j6F4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwVC2z280aVCY1x\n\t0267AKxVW0oVCq3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG\n\t6I80ewAv7VC0I7IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Jr0_Gr1lOx8S6xCaFV\n\tCjc4AY6r1j6r4UM4x0Y48IcVAKI48JM4IIrI8v6xkF7I0E8cxan2IY04v7MxkF7I0En4kS\n\t14v26r1q6r43MxAIw28IcxkI7VAKI48JMxC20s026xCaFVCjc4AY6r1j6r4UMI8I3I0E5I\n\t8CrVAFwI0_Jr0_Jr4lx2IqxVCjr7xvwVAFwI0_JrI_JrWlx4CE17CEb7AF67AKxVWUtVW8\n\tZwCIc40Y0x0EwIxGrwCI42IY6xIIjxv20xvE14v26r1j6r1xMIIF0xvE2Ix0cI8IcVCY1x\n\t0267AKxVW8JVWxJwCI42IY6xAIw20EY4v20xvaj40_Jr0_JF4lIxAIcVC2z280aVAFwI0_\n\tJr0_Gr1lIxAIcVC2z280aVCY1x0267AKxVW8JVW8JrUvcSsGvfC2KfnxnUUI43ZEXa7IU1\n\t7KsUUUUUU==","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"}}]