From: Chao Yu <chao@kernel.org>
To: Xiuhong Wang <xiuhong.wang@unisoc.com>,
jaegeuk@kernel.org, linux-f2fs-devel@lists.sourceforge.net,
linux-kernel@vger.kernel.org
Cc: hongyu.jin.cn@gmail.com, niuzhiguo84@gmail.com,
ke.wang@unisoc.com, xiuhong.wang.cn@gmail.com
Subject: Re: [PATCH V2 2/2] f2fs: compress: fix reserve_cblocks counting error when out of space
Date: Wed, 6 Mar 2024 14:01:44 +0800 [thread overview]
Message-ID: <7cd469b2-ce64-4799-90db-c08df7ab6174@kernel.org> (raw)
In-Reply-To: <20240306034746.3722986-2-xiuhong.wang@unisoc.com>
On 2024/3/6 11:47, Xiuhong Wang wrote:
> When a file only needs one direct_node, performing the following
> operations will cause the file to be unrepairable:
>
> unisoc # ./f2fs_io compress test.apk
> unisoc #df -h | grep dm-48
> /dev/block/dm-48 112G 112G 1.2M 100% /data
>
> unisoc # ./f2fs_io release_cblocks test.apk
> 924
> unisoc # df -h | grep dm-48
> /dev/block/dm-48 112G 112G 4.8M 100% /data
>
> unisoc # dd if=/dev/random of=file4 bs=1M count=3
> 3145728 bytes (3.0 M) copied, 0.025 s, 120 M/s
> unisoc # df -h | grep dm-48
> /dev/block/dm-48 112G 112G 1.8M 100% /data
>
> unisoc # ./f2fs_io reserve_cblocks test.apk
> F2FS_IOC_RESERVE_COMPRESS_BLOCKS failed: No space left on device
>
> adb reboot
> unisoc # df -h | grep dm-48
> /dev/block/dm-48 112G 112G 11M 100% /data
> unisoc # ./f2fs_io reserve_cblocks test.apk
> 0
>
> This is because the file has only one direct_node. After returning
> to -ENOSPC, reserved_blocks += ret will not be executed. As a result,
> the reserved_blocks at this time is still 0, which is not the real
> number of reserved blocks. Therefore, fsck cannot be set to repair
> the file.
>
> After this patch, the fsck flag will be set to fix this problem.
>
> unisoc # df -h | grep dm-48
> /dev/block/dm-48 112G 112G 1.8M 100% /data
> unisoc # ./f2fs_io reserve_cblocks test.apk
> F2FS_IOC_RESERVE_COMPRESS_BLOCKS failed: No space left on device
>
> adb reboot then fsck will be executed
> unisoc # df -h | grep dm-48
> /dev/block/dm-48 112G 112G 11M 100% /data
> unisoc # ./f2fs_io reserve_cblocks test.apk
> 924
>
> Fixes: c75488fb4d82 ("f2fs: introduce F2FS_IOC_RESERVE_COMPRESS_BLOCKS")
> Signed-off-by: Xiuhong Wang <xiuhong.wang@unisoc.com>
> Signed-off-by: Zhiguo Niu <zhiguo.niu@unisoc.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Thanks,
next prev parent reply other threads:[~2024-03-06 6:01 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-06 3:47 [PATCH V2 1/2] f2fs: compress: relocate some judgments in f2fs_reserve_compress_blocks Xiuhong Wang
2024-03-06 3:47 ` [PATCH V2 2/2] f2fs: compress: fix reserve_cblocks counting error when out of space Xiuhong Wang
2024-03-06 6:01 ` Chao Yu [this message]
2024-03-06 6:01 ` [PATCH V2 1/2] f2fs: compress: relocate some judgments in f2fs_reserve_compress_blocks Chao Yu
2024-03-13 1:30 ` [f2fs-dev] " patchwork-bot+f2fs
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7cd469b2-ce64-4799-90db-c08df7ab6174@kernel.org \
--to=chao@kernel.org \
--cc=hongyu.jin.cn@gmail.com \
--cc=jaegeuk@kernel.org \
--cc=ke.wang@unisoc.com \
--cc=linux-f2fs-devel@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
--cc=niuzhiguo84@gmail.com \
--cc=xiuhong.wang.cn@gmail.com \
--cc=xiuhong.wang@unisoc.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox