Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 23339e5

Browse files
Daeho JeongJaegeuk Kim
authored andcommitted
f2fs: revive F2FS_IOC_ABORT_VOLATILE_WRITE
F2FS_IOC_ABORT_VOLATILE_WRITE was used to abort a atomic write before. However it was removed accidentally. So revive it by changing the name, since volatile write had gone. Signed-off-by: Daeho Jeong <[email protected]> Fiexes: 7bc155f("f2fs: kill volatile write support") Reviewed-by: Chao Yu <[email protected]> Signed-off-by: Jaegeuk Kim <[email protected]>
1 parent 09beadf commit 23339e5

File tree

2 files changed

+29
-3
lines changed

2 files changed

+29
-3
lines changed

fs/f2fs/file.c

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2109,6 +2109,31 @@ static int f2fs_ioc_commit_atomic_write(struct file *filp)
21092109
return ret;
21102110
}
21112111

2112+
static int f2fs_ioc_abort_atomic_write(struct file *filp)
2113+
{
2114+
struct inode *inode = file_inode(filp);
2115+
struct user_namespace *mnt_userns = file_mnt_user_ns(filp);
2116+
int ret;
2117+
2118+
if (!inode_owner_or_capable(mnt_userns, inode))
2119+
return -EACCES;
2120+
2121+
ret = mnt_want_write_file(filp);
2122+
if (ret)
2123+
return ret;
2124+
2125+
inode_lock(inode);
2126+
2127+
if (f2fs_is_atomic_file(inode))
2128+
f2fs_abort_atomic_write(inode, true);
2129+
2130+
inode_unlock(inode);
2131+
2132+
mnt_drop_write_file(filp);
2133+
f2fs_update_time(F2FS_I_SB(inode), REQ_TIME);
2134+
return ret;
2135+
}
2136+
21122137
static int f2fs_ioc_shutdown(struct file *filp, unsigned long arg)
21132138
{
21142139
struct inode *inode = file_inode(filp);
@@ -4054,9 +4079,10 @@ static long __f2fs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
40544079
return f2fs_ioc_start_atomic_write(filp);
40554080
case F2FS_IOC_COMMIT_ATOMIC_WRITE:
40564081
return f2fs_ioc_commit_atomic_write(filp);
4082+
case F2FS_IOC_ABORT_ATOMIC_WRITE:
4083+
return f2fs_ioc_abort_atomic_write(filp);
40574084
case F2FS_IOC_START_VOLATILE_WRITE:
40584085
case F2FS_IOC_RELEASE_VOLATILE_WRITE:
4059-
case F2FS_IOC_ABORT_VOLATILE_WRITE:
40604086
return -EOPNOTSUPP;
40614087
case F2FS_IOC_SHUTDOWN:
40624088
return f2fs_ioc_shutdown(filp, arg);
@@ -4725,7 +4751,7 @@ long f2fs_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
47254751
case F2FS_IOC_COMMIT_ATOMIC_WRITE:
47264752
case F2FS_IOC_START_VOLATILE_WRITE:
47274753
case F2FS_IOC_RELEASE_VOLATILE_WRITE:
4728-
case F2FS_IOC_ABORT_VOLATILE_WRITE:
4754+
case F2FS_IOC_ABORT_ATOMIC_WRITE:
47294755
case F2FS_IOC_SHUTDOWN:
47304756
case FITRIM:
47314757
case FS_IOC_SET_ENCRYPTION_POLICY:

include/uapi/linux/f2fs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
#define F2FS_IOC_COMMIT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 2)
1414
#define F2FS_IOC_START_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 3)
1515
#define F2FS_IOC_RELEASE_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 4)
16-
#define F2FS_IOC_ABORT_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 5)
16+
#define F2FS_IOC_ABORT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 5)
1717
#define F2FS_IOC_GARBAGE_COLLECT _IOW(F2FS_IOCTL_MAGIC, 6, __u32)
1818
#define F2FS_IOC_WRITE_CHECKPOINT _IO(F2FS_IOCTL_MAGIC, 7)
1919
#define F2FS_IOC_DEFRAGMENT _IOWR(F2FS_IOCTL_MAGIC, 8, \

0 commit comments

Comments
 (0)