Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.1/patches/2227800/?format=api
{ "id": 2227800, "url": "http://patchwork.ozlabs.org/api/1.1/patches/2227800/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-ext4/patch/20260424092228.1396658-1-yi.zhang@huaweicloud.com/", "project": { "id": 8, "url": "http://patchwork.ozlabs.org/api/1.1/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 }, "msgid": "<20260424092228.1396658-1-yi.zhang@huaweicloud.com>", "date": "2026-04-24T09:22:28", "name": "[v2] generic/790: test post-EOF gap zeroing persistence", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "39d1b08eb0e20bc842f831ac202dc2511ea7eb57", "submitter": { "id": 85428, "url": "http://patchwork.ozlabs.org/api/1.1/people/85428/?format=api", "name": "Zhang Yi", "email": "yi.zhang@huaweicloud.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linux-ext4/patch/20260424092228.1396658-1-yi.zhang@huaweicloud.com/mbox/", "series": [ { "id": 501327, "url": "http://patchwork.ozlabs.org/api/1.1/series/501327/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-ext4/list/?series=501327", "date": "2026-04-24T09:22:28", "name": "[v2] generic/790: test post-EOF gap zeroing persistence", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/501327/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2227800/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2227800/checks/", "tags": {}, "headers": { "Return-Path": "\n <SRS0=ikZh=CX=vger.kernel.org=linux-ext4+bounces-16074-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=ikzh=cx=vger.kernel.org=linux-ext4+bounces-16074-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-16074-patchwork-incoming=ozlabs.org@vger.kernel.org;\n receiver=ozlabs.org)", "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=45.249.212.51", "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 4g27562kz8z1yDD\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 19:31:38 +1000 (AEST)", "from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3])\n\tby gandalf.ozlabs.org (Postfix) with ESMTP id 4g27554pk9z4wD3\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 19:31:37 +1000 (AEST)", "by gandalf.ozlabs.org (Postfix)\n\tid 4g27554j3Pz4wCm; Fri, 24 Apr 2026 19:31:37 +1000 (AEST)", "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 4g27520R5Rz4wD3\n\tfor <patchwork-incoming@ozlabs.org>; Fri, 24 Apr 2026 19:31:34 +1000 (AEST)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 09AB3300A639\n\tfor <patchwork-incoming@ozlabs.org>; Fri, 24 Apr 2026 09:29:02 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 5B67F38A736;\n\tFri, 24 Apr 2026 09:29:00 +0000 (UTC)", "from dggsgout11.his.huawei.com (dggsgout11.his.huawei.com\n [45.249.212.51])\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 BACA137F8A1;\n\tFri, 24 Apr 2026 09:28:56 +0000 (UTC)", "from mail.maildlp.com (unknown [172.19.163.170])\n\tby dggsgout11.his.huawei.com (SkyGuard) with ESMTPS id 4g270f0x2PzYQvCL;\n\tFri, 24 Apr 2026 17:27:46 +0800 (CST)", "from mail02.huawei.com (unknown [10.116.40.252])\n\tby mail.maildlp.com (Postfix) with ESMTP id 3CE0D4056E;\n\tFri, 24 Apr 2026 17:28:47 +0800 (CST)", "from huaweicloud.com (unknown [10.50.85.155])\n\tby APP3 (Coremail) with SMTP id _Ch0CgBXUbvJN+tpeLEoBg--.34465S4;\n\tFri, 24 Apr 2026 17:28:47 +0800 (CST)" ], "ARC-Seal": [ "i=2; a=rsa-sha256; d=ozlabs.org; s=201707; t=1777023097; cv=pass;\n\tb=BtrX41EZoJbXLGWbuvSmbv40DksaaodS4D1XE3118uNu1mzJ/QwDcxwJmPX5ATi+YTKtcdSw81YySvwtMLXu2vzHVH/Rrr5zUt1JwS9hKFSEYRKBcXLjUqhWFGRnCteR02YuHzEXGMfDcn11kDHsYjq/IrNqyRXKaj5z7Dt9oSpih40/klHfVxW14IPDekq5h7Zw2A3V115jqDhPoTFbOjWGGCPfvOOpx2KW0YsBod73iUMCWXTI6M07zh8JoosOHTd3OIwUG3MocZfogzbd4OHjdl+1Uxqr1cWcym8tqTv7CvW6z7RxNL2jo0CW1ab1hMCHQRZOOhDPdX/Oo3cQeg==", "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777022940; cv=none;\n b=kxpDFo88q58jCC8N6Sq853oAYOxQrFzdYBR/rMCh+mOtipML+VZ5dWnWC4uJeezDUJ2XYnv8TSCbN/mM6NuClqEWlQKSXNgcR/wb+GzLDCMnzCM+pyBQs7pBC2oSMUvc/vxca2bq7bW2s0SOKWR8UUAIUKkXyxnQRPGNY1zyt2A=" ], "ARC-Message-Signature": [ "i=2; a=rsa-sha256; d=ozlabs.org; s=201707;\n\tt=1777023097; c=relaxed/relaxed;\n\tbh=vjuA+Qa43Y/Z1eO7UGHcuUoACY5+8Uj5QGamTe6GOt8=;\n\th=From:To:Cc:Subject:Date:Message-ID:MIME-Version;\n b=idaIiDczUMYxe+XAch57/hsYVxHR7+fDxakPJhqSuVcE+VcOWMMgMAa99DFkedRb1DUL1sdszWIIX5VQqMXu2uZ3vSW8npKAgPRf+izY4+LsW7YT1xXWdNT+FSt2VVRaHX/6khbgiChHsg1To6dAzFgAPSk2G1ywwf/W8US6qasvuWwmGUBU1SEkugS4s4u5XW0pN542wgBloJklZH2h9BNOD98v8clTBKqm5BsugTQBvxxcqmEj7MsPu838kGe/nN6uLPmrXIPjO5fyX67rdJ5Kqw9STqm1Z287xKvjYUzsIbgzEkwaQcn3nc+F4y78cSggi5JzIZtY3NGBD50wVg==", "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777022940; c=relaxed/simple;\n\tbh=kffrKTTOt0JAF3eOIgKTHan29pKpfXX2W2tKg3uq9uc=;\n\th=From:To:Cc:Subject:Date:Message-ID:MIME-Version;\n b=bl9ypi24NdR3XlEceY0owJHBqQ/QU70kqr+0hnArLxs/Ql5sLwTyJWOV0+pVsw9vG0EkVnqsqbfZYn2fsiT5YD5HGD/3aZtKDgj5/8vKL0IC+GnUoC3UI/8BfGVUEvKmafviY95cuh5sXAXjNErO69STwQ/4kawxRt4Ypq+DJPQ=" ], "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-16074-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.51" ], "From": "Zhang Yi <yi.zhang@huaweicloud.com>", "To": "fstests@vger.kernel.org,\n\tzlang@kernel.org", "Cc": "linux-ext4@vger.kernel.org,\n\tlinux-fsdevel@vger.kernel.org,\n\tbfoster@redhat.com,\n\tjack@suse.cz,\n\tyi.zhang@huawei.com,\n\tyi.zhang@huaweicloud.com,\n\tyizhang089@gmail.com,\n\tyangerkun@huawei.com", "Subject": "[PATCH v2] generic/790: test post-EOF gap zeroing persistence", "Date": "Fri, 24 Apr 2026 17:22:28 +0800", "Message-ID": "<20260424092228.1396658-1-yi.zhang@huaweicloud.com>", "X-Mailer": "git-send-email 2.52.0", "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": "_Ch0CgBXUbvJN+tpeLEoBg--.34465S4", "X-Coremail-Antispam": "1UD129KBjvJXoW3Xw17Cr48CryDCryUCr17Wrg_yoW3AFWrpF\n\tZ5WF1Ykr1xKF47J3s7CF1qqryruws5Ar4Uu392grZ09ryUGr1xXa9Fqr12qay7Jrn3uw4S\n\tvw4kta4Igw17AFJanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2\n\t9KBjDU0xBIdaVrnRJUUU9014x267AKxVW8JVW5JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0\n\trVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02\n\t1l84ACjcxK6xIIjxv20xvE14v26w1j6s0DM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26r4U\n\tJVWxJr1l84ACjcxK6I8E87Iv67AKxVW0oVCq3wA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_Gc\n\tCE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E\n\t2Ix0cI8IcVAFwI0_JrI_JrylYx0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJV\n\tW8JwACjcxG0xvY0x0EwIxGrwACjI8F5VA0II8E6IAqYI8I648v4I1lFIxGxcIEc7CjxVA2\n\tY2ka0xkIwI1lc7CjxVAaw2AFwI0_Jw0_GFyl42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x\n\t0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2\n\tzVAF1VAY17CE14v26r1q6r43MIIYrxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF\n\t4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r1j6r4UMIIF0xvE42xK8VAvwI8IcIk0rVWUJVWU\n\tCwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E87Iv6xkF7I0E14v26r1j6r4UYxBIda\n\tVFxhVjvjDU0xZFpf9x0JUZYFZUUUUU=", "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\nTest that extending a file past a non-block-aligned EOF correctly\nzero-fills the gap [old_EOF, block_boundary), and that this zeroing\npersists through a filesystem shutdown+remount cycle.\n\nStale data beyond EOF can persist on disk when append write data blocks\nare flushed before the on-disk file size update, or when concurrent\nappend writeback and mmap writes persist non-zero data past EOF.\nSubsequent post-EOF operations (append write, fallocate, truncate up)\nmust zero-fill and persist the gap to prevent exposing stale data.\n\nThe test pollutes the file's last physical block (via FIEMAP + raw\ndevice write) with a sentinel pattern beyond i_size, then performs each\nextend operation and verifies the gap is zeroed both in memory and on\ndisk.\n\nSigned-off-by: Zhang Yi <yi.zhang@huawei.com>\n---\nv1->v2:\n - Add _require_no_realtime to prevent testing on XFS realtime devices,\n where file data may reside on $SCRATCH_RTDEV.\n - Add _exclude_fs btrfs since FIEMAP returns logical addresses, not\n physical device offsets, writing to these offsets on $SCRATCH_DEV\n would corrupt the filesystem in multi-device setups. Besides, since\n btrfs doesn't support shutdown right now, we can support it later.\n - Add -v flag to od in _check_gap_zero() to prevent line folding of\n identical consecutive lines.\n - Add expected_new_sz parameter to _test_eof_zeroing(), verify file\n size was not rolled back after shutdown+remount cycle, and also drop\n the unnecessary file size check before the shutdown as well.\n - Clarify the comment regarding when stale data beyond EOF can persist.\n\n tests/generic/790 | 164 ++++++++++++++++++++++++++++++++++++++++++\n tests/generic/790.out | 4 ++\n 2 files changed, 168 insertions(+)\n create mode 100755 tests/generic/790\n create mode 100644 tests/generic/790.out", "diff": "diff --git a/tests/generic/790 b/tests/generic/790\nnew file mode 100755\nindex 00000000..2adc06f8\n--- /dev/null\n+++ b/tests/generic/790\n@@ -0,0 +1,164 @@\n+#! /bin/bash\n+# SPDX-License-Identifier: GPL-2.0\n+# Copyright (c) 2026 Huawei. All Rights Reserved.\n+#\n+# FS QA Test No. 790\n+#\n+# Test that extending a file past a non-block-aligned EOF correctly zero-fills\n+# the gap [old_EOF, block_boundary), and that this zeroing persists through a\n+# filesystem shutdown+remount cycle.\n+#\n+# Stale data beyond EOF can persist on disk when:\n+# 1) append write data blocks are flushed before the on-disk file size update,\n+# and the system crashes in this window.\n+# 2) concurrent append writeback and mmap writes persist non-zero data past EOF.\n+#\n+# Subsequent post-EOF operations (append write, fallocate, truncate up) must\n+# zero-fill and persist the gap to prevent exposing stale data.\n+#\n+# The test pollutes the file's last physical block (via FIEMAP + raw device\n+# write) with a sentinel pattern beyond i_size, then performs each extend\n+# operation and verifies the gap is zeroed both in memory and on disk.\n+#\n+. ./common/preamble\n+_begin_fstest auto quick rw shutdown\n+\n+. ./common/filter\n+\n+_require_scratch\n+_require_block_device $SCRATCH_DEV\n+_require_no_realtime\n+_require_scratch_shutdown\n+_require_metadata_journaling $SCRATCH_DEV\n+\n+# FIEMAP on Btrfs returns logical addresses within the filesystem's address\n+# space, not physical device offsets. Writing to these offsets on $SCRATCH_DEV\n+# would corrupt the filesystem in multi-device setups.\n+_exclude_fs btrfs\n+\n+_require_xfs_io_command \"fiemap\"\n+_require_xfs_io_command \"falloc\"\n+_require_xfs_io_command \"pwrite\"\n+_require_xfs_io_command \"truncate\"\n+_require_xfs_io_command \"sync_range\"\n+\n+# Check that gap region [offset, offset+nbytes) is entirely zero\n+_check_gap_zero()\n+{\n+\tlocal file=\"$1\"\n+\tlocal offset=\"$2\"\n+\tlocal nbytes=\"$3\"\n+\tlocal label=\"$4\"\n+\tlocal data\n+\tlocal stripped\n+\n+\tdata=$(od -A n -t x1 -v -j $offset -N $nbytes \"$file\" 2>/dev/null)\n+\n+\t# Remove whitespace and check if any byte is non-zero\n+\tstripped=$(printf '%s' \"$data\" | tr -d ' \\n\\t')\n+\tif [ -n \"$stripped\" ] && ! echo \"$stripped\" | grep -qE \"^0+$\"; then\n+\t\techo \"FAIL: non-zero data in gap [$offset,$((offset + nbytes))) $label\"\n+\t\t_hexdump -N $((offset + nbytes)) \"$file\"\n+\t\treturn 1\n+\tfi\n+\treturn 0\n+}\n+\n+# Get the physical block offset (in bytes) of the file's first block on device\n+_get_phys_offset()\n+{\n+\tlocal file=\"$1\"\n+\tlocal fiemap_output\n+\tlocal phys_blk\n+\n+\tfiemap_output=$($XFS_IO_PROG -r -c \"fiemap -v\" \"$file\" 2>/dev/null)\n+\tphys_blk=$(echo \"$fiemap_output\" | _filter_xfs_io_fiemap | head -1 | awk '{print $3}')\n+\tif [ -z \"$phys_blk\" ]; then\n+\t\techo \"\"\n+\t\treturn\n+\tfi\n+\t# Convert 512-byte blocks to bytes\n+\techo $((phys_blk * 512))\n+}\n+\n+_test_eof_zeroing()\n+{\n+\tlocal test_name=\"$1\"\n+\tlocal extend_cmd=\"$2\"\n+\tlocal expected_new_sz=\"$3\"\n+\tlocal file=$SCRATCH_MNT/testfile_${test_name}\n+\n+\techo \"$test_name\" | tee -a $seqres.full\n+\n+\t# Compute non-block-aligned EOF offset\n+\tlocal gap_bytes=16\n+\tlocal eof_offset=$((blksz - gap_bytes))\n+\n+\t# Step 1: Write one full block to ensure the filesystem allocates a\n+\t# physical block for the file instead of using inline data.\n+\t$XFS_IO_PROG -f -c \"pwrite -S 0x5a 0 $blksz\" -c fsync \\\n+\t\t\"$file\" >> $seqres.full 2>&1\n+\n+\t# Step 2: Get physical block offset on device via FIEMAP\n+\tlocal phys_offset\n+\tphys_offset=$(_get_phys_offset \"$file\")\n+\tif [ -z \"$phys_offset\" ]; then\n+\t\t_fail \"$test_name: failed to get physical block offset via fiemap\"\n+\tfi\n+\n+\t# Step 3: Truncate file to non-block-aligned size and fsync.\n+\t# The on-disk region [eof_offset, blksz) may or may not be\n+\t# zeroed by the filesystem at this point.\n+\t$XFS_IO_PROG -c \"truncate $eof_offset\" -c fsync \\\n+\t\t\"$file\" >> $seqres.full 2>&1\n+\n+\t# Step 4: Unmount and restore the physical block to all-0x5a on disk.\n+\t# This bypasses the kernel's pagecache EOF-zeroing to ensure\n+\t# the stale pattern is present on disk. Then remount.\n+\t_scratch_unmount\n+\t$XFS_IO_PROG -d -c \"pwrite -S 0x5a $phys_offset $blksz\" \\\n+\t\t$SCRATCH_DEV >> $seqres.full 2>&1\n+\t_scratch_mount >> $seqres.full 2>&1\n+\n+\t# Step 5: Execute the extend operation.\n+\t$XFS_IO_PROG -c \"$extend_cmd\" \"$file\" >> $seqres.full 2>&1\n+\n+\t# Step 6: Verify gap [eof_offset, blksz) is zeroed BEFORE shutdown\n+\t_check_gap_zero \"$file\" $eof_offset $gap_bytes \"before shutdown\" || return 1\n+\n+\t# Step 7: Sync the extended range and shutdown the filesystem with\n+\t# journal flush. This persists the file size extending, and\n+\t# the filesystem should persist the zeroed data in the gap\n+\t# range as well.\n+\tif [ \"$extend_cmd\" != \"${extend_cmd#pwrite}\" ]; then\n+\t\t$XFS_IO_PROG -c \"sync_range -w $blksz $blksz\" \\\n+\t\t\t\"$file\" >> $seqres.full 2>&1\n+\tfi\n+\t_scratch_shutdown -f\n+\n+\t# Step 8: Remount and verify gap is still zeroed\n+\t_scratch_cycle_mount\n+\n+\t# Verify file size was not rolled back after shutdown+remount\n+\tlocal sz\n+\tsz=$(stat -c %s \"$file\")\n+\tif [ \"$sz\" -ne \"$expected_new_sz\" ]; then\n+\t\t_fail \"$test_name: file size rolled back after shutdown+remount: $sz != $expected_new_sz\"\n+\tfi\n+\n+\t_check_gap_zero \"$file\" $eof_offset $gap_bytes \"after shutdown+remount\" || return 1\n+}\n+\n+_scratch_mkfs >> $seqres.full 2>&1\n+_scratch_mount\n+\n+blksz=$(_get_block_size $SCRATCH_MNT)\n+\n+# Test three variants of EOF-extending operations\n+_test_eof_zeroing \"append_write\" \"pwrite -S 0x42 $blksz $blksz\" $((blksz * 2))\n+_test_eof_zeroing \"truncate_up\" \"truncate $((blksz * 2))\" $((blksz * 2))\n+_test_eof_zeroing \"fallocate\" \"falloc $blksz $blksz\" $((blksz * 2))\n+\n+# success, all done\n+status=0\n+exit\ndiff --git a/tests/generic/790.out b/tests/generic/790.out\nnew file mode 100644\nindex 00000000..e5e2cc09\n--- /dev/null\n+++ b/tests/generic/790.out\n@@ -0,0 +1,4 @@\n+QA output created by 790\n+append_write\n+truncate_up\n+fallocate\n", "prefixes": [ "v2" ] }