Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.1/patches/2225999/?format=api
{ "id": 2225999, "url": "http://patchwork.ozlabs.org/api/1.1/patches/2225999/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-ext4/patch/20260422015246.4132376-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": "<20260422015246.4132376-1-yi.zhang@huaweicloud.com>", "date": "2026-04-22T01:52:46", "name": "generic/790: test post-EOF gap zeroing persistence", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "984a294982289937ad663cf8e92f9b01bf4c50c3", "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/20260422015246.4132376-1-yi.zhang@huaweicloud.com/mbox/", "series": [ { "id": 500910, "url": "http://patchwork.ozlabs.org/api/1.1/series/500910/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-ext4/list/?series=500910", "date": "2026-04-22T01:52:46", "name": "generic/790: test post-EOF gap zeroing persistence", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/500910/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2225999/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2225999/checks/", "tags": {}, "headers": { "Return-Path": "\n <SRS0=4eez=CV=vger.kernel.org=linux-ext4+bounces-15964-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=4eez=cv=vger.kernel.org=linux-ext4+bounces-15964-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", "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=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-ext4+bounces-15964-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 4g0jBY39C5z1y2d\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 12:01:25 +1000 (AEST)", "from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3])\n\tby gandalf.ozlabs.org (Postfix) with ESMTP id 4g0jBY2thFz4wJh\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 12:01:25 +1000 (AEST)", "by gandalf.ozlabs.org (Postfix)\n\tid 4g0jBY2ggFz4wHx; Wed, 22 Apr 2026 12:01:25 +1000 (AEST)", "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 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n\t(No client certificate requested)\n\tby gandalf.ozlabs.org (Postfix) with ESMTPS id 4g0jBS30v4z4wJh\n\tfor <patchwork-incoming@ozlabs.org>; Wed, 22 Apr 2026 12:01:20 +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 0CF663013A63\n\tfor <patchwork-incoming@ozlabs.org>; Wed, 22 Apr 2026 01:59:14 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id A4075309DAF;\n\tWed, 22 Apr 2026 01:59:12 +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 453834A23;\n\tWed, 22 Apr 2026 01:59:08 +0000 (UTC)", "from mail.maildlp.com (unknown [172.19.163.170])\n\tby dggsgout12.his.huawei.com (SkyGuard) with ESMTPS id 4g0j7T0YzVzKHLt9;\n\tWed, 22 Apr 2026 09:58:45 +0800 (CST)", "from mail02.huawei.com (unknown [10.116.40.252])\n\tby mail.maildlp.com (Postfix) with ESMTP id 1B1A1405D2;\n\tWed, 22 Apr 2026 09:59:05 +0800 (CST)", "from huaweicloud.com (unknown [10.50.85.155])\n\tby APP3 (Coremail) with SMTP id _Ch0CgC3ZL5bK+hpYcQSBQ--.2895S4;\n\tWed, 22 Apr 2026 09:59:02 +0800 (CST)" ], "ARC-Seal": [ "i=2; a=rsa-sha256; d=ozlabs.org; s=201707; t=1776823285; cv=pass;\n\tb=ofC0XQjOdUv3zb4vBwaJDZHCIyowIMLCFp/NJYBwEMop8Ln02dRDu+bzPT4zJfzWuX/4l2Y3Vh9SaSTzFobkU3ISa1/3WAH4ePT6yyIornRcJV1w1saYB4zjw+a6Iu+fUHqSyoAU8+VYqotvf7sKSZODyy/3AC6f6QV4+LVF4ROwOY1XvzL4bixBjh/N28wBw9WrGhOYMoYuy3zFT1iPH2ETapXVY+VVxjondDgxx4J3Ti6YUJmcESpoe9nKNFYZqht7oROS3l7ZvJM7TrwHg3W7EWgC1+Buxoo5dxUO74yZEYworoCkcHoyQtBlaemR84NmyLALkNjCpJaD+Kf/Tg==", "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1776823152; cv=none;\n b=h7Xm6IolN3FGqE5ZpRlgFwcFwpUy2c3OOKBzBgWohgh8TwvuBxblvWSGFb2dZfnK37xi/mO5FAriEJq7Im2uyU6lLMVX9I94exsykgLlLiIbOF4OZlUNTeazX3Uh3QRQO6J6NtvxRkPmRr12W7ZTXcPVwBrS2aI5+AijZehit6w=" ], "ARC-Message-Signature": [ "i=2; a=rsa-sha256; d=ozlabs.org; s=201707;\n\tt=1776823285; c=relaxed/relaxed;\n\tbh=iW2ssmkjkP5dw65pDSS8uHTW/Z0AuoNyxQmSrs/vfF8=;\n\th=From:To:Cc:Subject:Date:Message-ID:MIME-Version;\n b=UKp7N2F7H3Xcoc7a0ttRHHdkhoEc0PHULHO/FqAkOSX2Uo8uy7fjMg3rWsqd0/yRLct6KssT8MGG0kmPGWE6h2vDL3QKMwvjt/iG4BHRjGv+nXkVdFwGX6s203NDnXxFbQGpMFuhBnOuZJGso1bZ4sWAffeNRJ6wGvAVdwJ0FxsK+/IbsJjFHoILpGUmwrt4AooXrIRTYngmqwMrNWatUqCp12lKES9GW/pIgW90h3e+k+urx6XXtXCZ1pi3/Am4yDG1mTIpabLQTjcxo4DyW5Ad+ARywtSxLE7lqeBWwu5D2rWFhhTcBNLBUYIsW/EjMqnP/SS2troAEgYg3kZPMQ==", "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1776823152; c=relaxed/simple;\n\tbh=/dYcp8HiUqYhyRhwQpJDUJJRfiSSBDRerwnbELrnQ44=;\n\th=From:To:Cc:Subject:Date:Message-ID:MIME-Version;\n b=uzNcSwZ99FRupt7nX48yqrGGUs5RuRIZxkrTus6fgC8iIZxd57wetkJaRo168gC/bxZkT9waHqEwgWtt/J4TGtIyvaZHErcRTTCzLORRAPVrL5ppaLwe4mFSLe0zIoXEzsYezN9vuo7O5dCAeRzHHvGs+Hkb4WAtYrXtH4W22zQ=" ], "ARC-Authentication-Results": [ "i=2; gandalf.ozlabs.org;\n dmarc=none (p=none dis=none) header.from=huaweicloud.com;\n spf=pass (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-ext4+bounces-15964-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" ], "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\tjack@suse.cz,\n\tyi.zhang@huawei.com,\n\tyi.zhang@huaweicloud.com,\n\tyizhang089@gmail.com,\n\tyangerkun@huawei.com", "Subject": "[PATCH] generic/790: test post-EOF gap zeroing persistence", "Date": "Wed, 22 Apr 2026 09:52:46 +0800", "Message-ID": "<20260422015246.4132376-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": "_Ch0CgC3ZL5bK+hpYcQSBQ--.2895S4", "X-Coremail-Antispam": "1UD129KBjvJXoW3Xw17Cr48CryDCryUtry3twb_yoWxuFy3pF\n\tZYgF1Ykr1xKa17X397GF1qqr1ruwn5Zr4j9392grZ0vry8GF1xXa9Fgr1jq3y7Jr1fuw4F\n\tva1kKa4xWw17AFJanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2\n\t9KBjDU0xBIdaVrnRJUUUkG14x267AKxVW8JVW5JwAFc2x0x2IEx4CE42xK8VAvwI8IcIk0\n\trVWrJVCq3wAFIxvE14AKwVWUJVWUGwA2ocxC64kIII0Yj41l84x0c7CEw4AK67xGY2AK02\n\t1l84ACjcxK6xIIjxv20xvE14v26F1j6w1UM28EF7xvwVC0I7IYx2IY6xkF7I0E14v26r4U\n\tJVWxJr1l84ACjcxK6I8E87Iv67AKxVW0oVCq3wA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_Gc\n\tCE3s1le2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xvF2IEw4CE5I8CrVC2j2WlYx0E\n\t2Ix0cI8IcVAFwI0_JrI_JrylYx0Ex4A2jsIE14v26r1j6r4UMcvjeVCFs4IE7xkEbVWUJV\n\tW8JwACjcxG0xvY0x0EwIxGrwACjI8F5VA0II8E6IAqYI8I648v4I1lc7CjxVAaw2AFwI0_\n\tJw0_GFyl42xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67\n\tAKxVWUJVWUGwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r1q6r43MIIY\n\trxkI7VAKI48JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14\n\tv26r1j6r4UMIIF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJVW8\n\tJwCI42IY6I8E87Iv6xkF7I0E14v26r1j6r4UYxBIdaVFxhVjvjDU0xZFpf9x0JUZYFZUUU\n\tUU=", "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 i_size metadata update, or when concurrent append\nwriteback and mmap writes persist non-zero data past EOF. Subsequent\npost-EOF operations (append write, fallocate, truncate up) must\nzero-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---\nThis is the case Jan Kara pointed out during my work on the ext4\nbuffered I/O to iomap conversion. This case is similar to generic/363,\nbut generic/363 doesn't provide persistent testing. For details:\n\n https://lore.kernel.org/linux-ext4/jgotl7vzzuzm6dvz5zfgk6haodxvunb4hq556pzh4hqqwvnhxq@lr3jiedhqh7c/\n\n tests/generic/790 | 155 ++++++++++++++++++++++++++++++++++++++++++\n tests/generic/790.out | 4 ++\n 2 files changed, 159 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..5d8f61f9\n--- /dev/null\n+++ b/tests/generic/790\n@@ -0,0 +1,155 @@\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 i_size metadata 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_scratch_shutdown\n+_require_metadata_journaling $SCRATCH_DEV\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 -j $offset -N $nbytes \"$file\" 2>/dev/null)\n+\n+\t# Remove whitespace and check if any byte is non-zero\n+\tstripped=$(echo \"$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 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# Verify file size is still eof_offset after remount\n+\tlocal sz\n+\tsz=$(stat -c %s \"$file\")\n+\tif [ \"$sz\" -ne \"$eof_offset\" ]; then\n+\t\t_fail \"$test_name: file size wrong after remount: $sz != $eof_offset\"\n+\tfi\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+\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\"\n+_test_eof_zeroing \"truncate_up\" \"truncate $((blksz * 2))\"\n+_test_eof_zeroing \"fallocate\" \"falloc $blksz $blksz\"\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": [] }