mirror of
https://github.com/torvalds/linux.git
synced 2024-09-21 15:33:19 +00:00
f2fs: compress: allow write compress released file after truncate to zero
For compressed file, after release compress blocks, don't allow write direct, but we should allow write direct after truncate to zero. Reviewed-by: Chao Yu <chao@kernel.org> Signed-off-by: Fengnan Chang <changfengnan@vivo.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
parent
1927ccdb79
commit
4a4fc043f5
|
@ -865,8 +865,11 @@ Compression implementation
|
|||
directly in order to guarantee potential data updates later to the space.
|
||||
Instead, the main goal is to reduce data writes to flash disk as much as
|
||||
possible, resulting in extending disk life time as well as relaxing IO
|
||||
congestion. Alternatively, we've added ioctl interface to reclaim compressed
|
||||
space and show it to user after putting the immutable bit.
|
||||
congestion. Alternatively, we've added ioctl(F2FS_IOC_RELEASE_COMPRESS_BLOCKS)
|
||||
interface to reclaim compressed space and show it to user after putting the
|
||||
immutable bit. Immutable bit, after release, it doesn't allow writing/mmaping
|
||||
on the file, until reserving compressed space via
|
||||
ioctl(F2FS_IOC_RESERVE_COMPRESS_BLOCKS) or truncating filesize to zero.
|
||||
|
||||
Compress metadata layout::
|
||||
|
||||
|
|
|
@ -753,6 +753,14 @@ int f2fs_truncate_blocks(struct inode *inode, u64 from, bool lock)
|
|||
return err;
|
||||
|
||||
#ifdef CONFIG_F2FS_FS_COMPRESSION
|
||||
/*
|
||||
* For compressed file, after release compress blocks, don't allow write
|
||||
* direct, but we should allow write direct after truncate to zero.
|
||||
*/
|
||||
if (f2fs_compressed_file(inode) && !free_from
|
||||
&& is_inode_flag_set(inode, FI_COMPRESS_RELEASED))
|
||||
clear_inode_flag(inode, FI_COMPRESS_RELEASED);
|
||||
|
||||
if (from != free_from) {
|
||||
err = f2fs_truncate_partial_cluster(inode, from, lock);
|
||||
if (err)
|
||||
|
|
Loading…
Reference in New Issue
Block a user