Re: [f2fs-dev] [PATCH v7] f2fs: support dynamic reserve/release for device aliasing

Christophe JAILLET via Linux-f2fs-devel <[email protected]>
Newsgroups net.sourceforge.lists.linux-f2fs-devel,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
Le 06/08/2026 à 03:48, Daeho Jeong a écrit :
> From: Daeho Jeong <[email protected]>
> 
> This patch adds a dynamic management feature to the existing device
> aliasing functionality. It allows users to dynamically reserve or
> release specific devices from the filesystem's free pool at runtime
> through new ioctls.
> 
> To support this, three new ioctls are introduced:
> - F2FS_IOC_RESERVE_DEV_ALIAS: This reclaims the space occupied by a
>    device aliasing file. It first performs a capacity check, resets GC
>    victim information for the target range, marks the segments as in-use
>    to prevent new allocations, and then triggers GC to migrate existing
>    valid data out of the range. Finally, it reserves these blocks in the
>    SIT to effectively exclude the device from the usable capacity.
> 
> - F2FS_IOC_RELEASE_DEV_ALIAS: This releases the reserved space of a
>    previously reserved device aliasing file. It truncates the blocks
>    associated with the file, which makes them available for general
>    filesystem allocation again.
> 
> - F2FS_IOC_GET_DEV_ALIAS_STATUS: This retrieves the current aliasing
>    status of a device aliasing file, returning whether the file is
>    released (inactive alias) or reserved (active alias, with blocks
>    fully allocated on the device).
> 
> Signed-off-by: Daeho Jeong <[email protected]>

Hi,

this patch has already reached -next, but 2 comments below, should they 
make any sense.

> diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c
> index cac03b8e91a1..8c3b57987f6c 100644
> --- a/fs/f2fs/namei.c
> +++ b/fs/f2fs/namei.c
> @@ -425,6 +425,9 @@ static int f2fs_link(struct dentry *old_dentry, struct inode *dir,
>   	if (!f2fs_is_checkpoint_ready(sbi))
>   		return -ENOSPC;
>   
> +	if (IS_DEVICE_ALIASING(inode))
> +		return -EPERM;
> +
>   	err = fscrypt_prepare_link(old_dentry, dir, dentry);
>   	if (err)
>   		return err;
> @@ -568,6 +571,9 @@ static int f2fs_unlink(struct inode *dir, struct dentry *dentry)
>   
>   	trace_f2fs_unlink_enter(dir, dentry);
>   
> +	if (IS_DEVICE_ALIASING(inode))
> +		return -EPERM;
> +

Based on surrounding goto, should this one be:
    err = -EPERM
    goto out;
?

>   	if (unlikely(f2fs_cp_error(sbi))) {
>   		err = -EIO;
>   		goto out;
> @@ -946,6 +952,9 @@ static int f2fs_rename(struct mnt_idmap *idmap, struct inode *old_dir,
>   	bool old_is_dir = S_ISDIR(old_inode->i_mode);
>   	int err;
>   
> +	if (IS_DEVICE_ALIASING(old_inode))
> +		return -EPERM;
> +
>   	if (unlikely(f2fs_cp_error(sbi)))
>   		return -EIO;
>   	if (!f2fs_is_checkpoint_ready(sbi))
> @@ -1016,6 +1025,8 @@ static int f2fs_rename(struct mnt_idmap *idmap, struct inode *old_dir,
>   	}
>   
>   	if (new_inode) {
> +		if (IS_DEVICE_ALIASING(new_inode))
> +			return -EPERM;

Based on surrounding goto, should this one be:
    err = -EPERM
    goto out_dir;
?

>   
>   		err = -ENOTEMPTY;
>   		if (old_is_dir && !f2fs_empty_dir(new_inode))
> @@ -1143,6 +1154,9 @@ static int f2fs_cross_rename(struct inode *old_dir, struct dentry *old_dentry,
>   	int old_nlink = 0, new_nlink = 0;
>   	int err;
>   
> +	if (IS_DEVICE_ALIASING(old_inode) || IS_DEVICE_ALIASING(new_inode))
> +		return -EPERM;
> +
>   	if (unlikely(f2fs_cp_error(sbi)))
>   		return -EIO;
>   	if (!f2fs_is_checkpoint_ready(sbi))
[...]

CJ


_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.