diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-08-28 12:52:22 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-09-26 22:20:08 -0400 |
commit | 2903ff019b346ab8d36ebbf54853c3aaf6590608 (patch) | |
tree | 962d94054765bb37bc00e977c3036e65c5fd91fe /fs/btrfs/ioctl.c | |
parent | a5b470ba06aa3f96999ede5feba178df6bdb134a (diff) |
switch simple cases of fget_light to fdget
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/btrfs/ioctl.c')
-rw-r--r-- | fs/btrfs/ioctl.c | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 3494f2f44167..0a4f0c8bc58f 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c | |||
@@ -1397,7 +1397,6 @@ static noinline int btrfs_ioctl_snap_create_transid(struct file *file, | |||
1397 | u64 *transid, bool readonly, | 1397 | u64 *transid, bool readonly, |
1398 | struct btrfs_qgroup_inherit **inherit) | 1398 | struct btrfs_qgroup_inherit **inherit) |
1399 | { | 1399 | { |
1400 | struct file *src_file; | ||
1401 | int namelen; | 1400 | int namelen; |
1402 | int ret = 0; | 1401 | int ret = 0; |
1403 | 1402 | ||
@@ -1421,15 +1420,14 @@ static noinline int btrfs_ioctl_snap_create_transid(struct file *file, | |||
1421 | ret = btrfs_mksubvol(&file->f_path, name, namelen, | 1420 | ret = btrfs_mksubvol(&file->f_path, name, namelen, |
1422 | NULL, transid, readonly, inherit); | 1421 | NULL, transid, readonly, inherit); |
1423 | } else { | 1422 | } else { |
1423 | struct fd src = fdget(fd); | ||
1424 | struct inode *src_inode; | 1424 | struct inode *src_inode; |
1425 | int fput_needed; | 1425 | if (!src.file) { |
1426 | src_file = fget_light(fd, &fput_needed); | ||
1427 | if (!src_file) { | ||
1428 | ret = -EINVAL; | 1426 | ret = -EINVAL; |
1429 | goto out_drop_write; | 1427 | goto out_drop_write; |
1430 | } | 1428 | } |
1431 | 1429 | ||
1432 | src_inode = src_file->f_path.dentry->d_inode; | 1430 | src_inode = src.file->f_path.dentry->d_inode; |
1433 | if (src_inode->i_sb != file->f_path.dentry->d_inode->i_sb) { | 1431 | if (src_inode->i_sb != file->f_path.dentry->d_inode->i_sb) { |
1434 | printk(KERN_INFO "btrfs: Snapshot src from " | 1432 | printk(KERN_INFO "btrfs: Snapshot src from " |
1435 | "another FS\n"); | 1433 | "another FS\n"); |
@@ -1439,7 +1437,7 @@ static noinline int btrfs_ioctl_snap_create_transid(struct file *file, | |||
1439 | BTRFS_I(src_inode)->root, | 1437 | BTRFS_I(src_inode)->root, |
1440 | transid, readonly, inherit); | 1438 | transid, readonly, inherit); |
1441 | } | 1439 | } |
1442 | fput_light(src_file, fput_needed); | 1440 | fdput(src); |
1443 | } | 1441 | } |
1444 | out_drop_write: | 1442 | out_drop_write: |
1445 | mnt_drop_write_file(file); | 1443 | mnt_drop_write_file(file); |
@@ -2341,7 +2339,7 @@ static noinline long btrfs_ioctl_clone(struct file *file, unsigned long srcfd, | |||
2341 | { | 2339 | { |
2342 | struct inode *inode = fdentry(file)->d_inode; | 2340 | struct inode *inode = fdentry(file)->d_inode; |
2343 | struct btrfs_root *root = BTRFS_I(inode)->root; | 2341 | struct btrfs_root *root = BTRFS_I(inode)->root; |
2344 | struct file *src_file; | 2342 | struct fd src_file; |
2345 | struct inode *src; | 2343 | struct inode *src; |
2346 | struct btrfs_trans_handle *trans; | 2344 | struct btrfs_trans_handle *trans; |
2347 | struct btrfs_path *path; | 2345 | struct btrfs_path *path; |
@@ -2350,7 +2348,7 @@ static noinline long btrfs_ioctl_clone(struct file *file, unsigned long srcfd, | |||
2350 | struct btrfs_key key; | 2348 | struct btrfs_key key; |
2351 | u32 nritems; | 2349 | u32 nritems; |
2352 | int slot; | 2350 | int slot; |
2353 | int ret, fput_needed; | 2351 | int ret; |
2354 | u64 len = olen; | 2352 | u64 len = olen; |
2355 | u64 bs = root->fs_info->sb->s_blocksize; | 2353 | u64 bs = root->fs_info->sb->s_blocksize; |
2356 | u64 hint_byte; | 2354 | u64 hint_byte; |
@@ -2376,24 +2374,24 @@ static noinline long btrfs_ioctl_clone(struct file *file, unsigned long srcfd, | |||
2376 | if (ret) | 2374 | if (ret) |
2377 | return ret; | 2375 | return ret; |
2378 | 2376 | ||
2379 | src_file = fget_light(srcfd, &fput_needed); | 2377 | src_file = fdget(srcfd); |
2380 | if (!src_file) { | 2378 | if (!src_file.file) { |
2381 | ret = -EBADF; | 2379 | ret = -EBADF; |
2382 | goto out_drop_write; | 2380 | goto out_drop_write; |
2383 | } | 2381 | } |
2384 | 2382 | ||
2385 | ret = -EXDEV; | 2383 | ret = -EXDEV; |
2386 | if (src_file->f_path.mnt != file->f_path.mnt) | 2384 | if (src_file.file->f_path.mnt != file->f_path.mnt) |
2387 | goto out_fput; | 2385 | goto out_fput; |
2388 | 2386 | ||
2389 | src = src_file->f_dentry->d_inode; | 2387 | src = src_file.file->f_dentry->d_inode; |
2390 | 2388 | ||
2391 | ret = -EINVAL; | 2389 | ret = -EINVAL; |
2392 | if (src == inode) | 2390 | if (src == inode) |
2393 | goto out_fput; | 2391 | goto out_fput; |
2394 | 2392 | ||
2395 | /* the src must be open for reading */ | 2393 | /* the src must be open for reading */ |
2396 | if (!(src_file->f_mode & FMODE_READ)) | 2394 | if (!(src_file.file->f_mode & FMODE_READ)) |
2397 | goto out_fput; | 2395 | goto out_fput; |
2398 | 2396 | ||
2399 | /* don't make the dst file partly checksummed */ | 2397 | /* don't make the dst file partly checksummed */ |
@@ -2724,7 +2722,7 @@ out_unlock: | |||
2724 | vfree(buf); | 2722 | vfree(buf); |
2725 | btrfs_free_path(path); | 2723 | btrfs_free_path(path); |
2726 | out_fput: | 2724 | out_fput: |
2727 | fput_light(src_file, fput_needed); | 2725 | fdput(src_file); |
2728 | out_drop_write: | 2726 | out_drop_write: |
2729 | mnt_drop_write_file(file); | 2727 | mnt_drop_write_file(file); |
2730 | return ret; | 2728 | return ret; |