projects
/
GitHub
/
moto-9609
/
android_kernel_motorola_exynos9610.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'for-linus-4.5' of git://git.kernel.org/pub/scm/linux/kernel/git/mason...
[GitHub/moto-9609/android_kernel_motorola_exynos9610.git]
/
fs
/
btrfs
/
ioctl.c
diff --git
a/fs/btrfs/ioctl.c
b/fs/btrfs/ioctl.c
index e21997385d148c7ede78fd5874e594577ed8a9e9..2a47a3148ec80df57150e3f5aa7d321abb8d1ccd 100644
(file)
--- a/
fs/btrfs/ioctl.c
+++ b/
fs/btrfs/ioctl.c
@@
-655,22
+655,28
@@
static int create_snapshot(struct btrfs_root *root, struct inode *dir,
if (!test_bit(BTRFS_ROOT_REF_COWS, &root->state))
return -EINVAL;
if (!test_bit(BTRFS_ROOT_REF_COWS, &root->state))
return -EINVAL;
+ pending_snapshot = kzalloc(sizeof(*pending_snapshot), GFP_NOFS);
+ if (!pending_snapshot)
+ return -ENOMEM;
+
+ pending_snapshot->root_item = kzalloc(sizeof(struct btrfs_root_item),
+ GFP_NOFS);
+ pending_snapshot->path = btrfs_alloc_path();
+ if (!pending_snapshot->root_item || !pending_snapshot->path) {
+ ret = -ENOMEM;
+ goto free_pending;
+ }
+
atomic_inc(&root->will_be_snapshoted);
smp_mb__after_atomic();
btrfs_wait_for_no_snapshoting_writes(root);
ret = btrfs_start_delalloc_inodes(root, 0);
if (ret)
atomic_inc(&root->will_be_snapshoted);
smp_mb__after_atomic();
btrfs_wait_for_no_snapshoting_writes(root);
ret = btrfs_start_delalloc_inodes(root, 0);
if (ret)
- goto
out
;
+ goto
dec_and_free
;
btrfs_wait_ordered_extents(root, -1);
btrfs_wait_ordered_extents(root, -1);
- pending_snapshot = kzalloc(sizeof(*pending_snapshot), GFP_NOFS);
- if (!pending_snapshot) {
- ret = -ENOMEM;
- goto out;
- }
-
btrfs_init_block_rsv(&pending_snapshot->block_rsv,
BTRFS_BLOCK_RSV_TEMP);
/*
btrfs_init_block_rsv(&pending_snapshot->block_rsv,
BTRFS_BLOCK_RSV_TEMP);
/*
@@
-686,7
+692,7
@@
static int create_snapshot(struct btrfs_root *root, struct inode *dir,
&pending_snapshot->qgroup_reserved,
false);
if (ret)
&pending_snapshot->qgroup_reserved,
false);
if (ret)
- goto free;
+ goto
dec_and_
free;
pending_snapshot->dentry = dentry;
pending_snapshot->root = root;
pending_snapshot->dentry = dentry;
pending_snapshot->root = root;
@@
-737,11
+743,14
@@
fail:
btrfs_subvolume_release_metadata(BTRFS_I(dir)->root,
&pending_snapshot->block_rsv,
pending_snapshot->qgroup_reserved);
btrfs_subvolume_release_metadata(BTRFS_I(dir)->root,
&pending_snapshot->block_rsv,
pending_snapshot->qgroup_reserved);
-free:
- kfree(pending_snapshot);
-out:
+dec_and_free:
if (atomic_dec_and_test(&root->will_be_snapshoted))
wake_up_atomic_t(&root->will_be_snapshoted);
if (atomic_dec_and_test(&root->will_be_snapshoted))
wake_up_atomic_t(&root->will_be_snapshoted);
+free_pending:
+ kfree(pending_snapshot->root_item);
+ btrfs_free_path(pending_snapshot->path);
+ kfree(pending_snapshot);
+
return ret;
}
return ret;
}
@@
-992,7
+1001,7
@@
static struct extent_map *defrag_lookup_extent(struct inode *inode, u64 start)
u64 end = start + len - 1;
/* get the big lock and read metadata off disk */
u64 end = start + len - 1;
/* get the big lock and read metadata off disk */
- lock_extent_bits(io_tree, start, end,
0,
&cached);
+ lock_extent_bits(io_tree, start, end, &cached);
em = btrfs_get_extent(inode, NULL, 0, start, len, 0);
unlock_extent_cached(io_tree, start, end, &cached, GFP_NOFS);
em = btrfs_get_extent(inode, NULL, 0, start, len, 0);
unlock_extent_cached(io_tree, start, end, &cached, GFP_NOFS);
@@
-1016,7
+1025,7
@@
static bool defrag_check_next_extent(struct inode *inode, struct extent_map *em)
if (!next || next->block_start >= EXTENT_MAP_LAST_BYTE)
ret = false;
else if ((em->block_start + em->block_len == next->block_start) &&
if (!next || next->block_start >= EXTENT_MAP_LAST_BYTE)
ret = false;
else if ((em->block_start + em->block_len == next->block_start) &&
- (em->block_len >
128 * 1024 && next->block_len > 128 * 1024
))
+ (em->block_len >
SZ_128K && next->block_len > SZ_128K
))
ret = false;
free_extent_map(next);
ret = false;
free_extent_map(next);
@@
-1140,7
+1149,7
@@
again:
page_end = page_start + PAGE_CACHE_SIZE - 1;
while (1) {
lock_extent_bits(tree, page_start, page_end,
page_end = page_start + PAGE_CACHE_SIZE - 1;
while (1) {
lock_extent_bits(tree, page_start, page_end,
-
0,
&cached_state);
+ &cached_state);
ordered = btrfs_lookup_ordered_extent(inode,
page_start);
unlock_extent_cached(tree, page_start, page_end,
ordered = btrfs_lookup_ordered_extent(inode,
page_start);
unlock_extent_cached(tree, page_start, page_end,
@@
-1200,7
+1209,7
@@
again:
page_end = page_offset(pages[i_done - 1]) + PAGE_CACHE_SIZE;
lock_extent_bits(&BTRFS_I(inode)->io_tree,
page_end = page_offset(pages[i_done - 1]) + PAGE_CACHE_SIZE;
lock_extent_bits(&BTRFS_I(inode)->io_tree,
- page_start, page_end - 1,
0,
&cached_state);
+ page_start, page_end - 1, &cached_state);
clear_extent_bit(&BTRFS_I(inode)->io_tree, page_start,
page_end - 1, EXTENT_DIRTY | EXTENT_DELALLOC |
EXTENT_DO_ACCOUNTING | EXTENT_DEFRAG, 0, 0,
clear_extent_bit(&BTRFS_I(inode)->io_tree, page_start,
page_end - 1, EXTENT_DIRTY | EXTENT_DELALLOC |
EXTENT_DO_ACCOUNTING | EXTENT_DEFRAG, 0, 0,
@@
-1262,9
+1271,9
@@
int btrfs_defrag_file(struct inode *inode, struct file *file,
int defrag_count = 0;
int compress_type = BTRFS_COMPRESS_ZLIB;
u32 extent_thresh = range->extent_thresh;
int defrag_count = 0;
int compress_type = BTRFS_COMPRESS_ZLIB;
u32 extent_thresh = range->extent_thresh;
- unsigned long max_cluster =
(256 * 1024)
>> PAGE_CACHE_SHIFT;
+ unsigned long max_cluster =
SZ_256K
>> PAGE_CACHE_SHIFT;
unsigned long cluster = max_cluster;
unsigned long cluster = max_cluster;
- u64 new_align = ~((u64)
128 * 1024
- 1);
+ u64 new_align = ~((u64)
SZ_128K
- 1);
struct page **pages = NULL;
if (isize == 0)
struct page **pages = NULL;
if (isize == 0)
@@
-1281,7
+1290,7
@@
int btrfs_defrag_file(struct inode *inode, struct file *file,
}
if (extent_thresh == 0)
}
if (extent_thresh == 0)
- extent_thresh =
256 * 1024
;
+ extent_thresh =
SZ_256K
;
/*
* if we were not given a file, allocate a readahead
/*
* if we were not given a file, allocate a readahead
@@
-1313,7
+1322,7
@@
int btrfs_defrag_file(struct inode *inode, struct file *file,
if (newer_than) {
ret = find_new_extents(root, inode, newer_than,
if (newer_than) {
ret = find_new_extents(root, inode, newer_than,
- &newer_off,
64 * 1024
);
+ &newer_off,
SZ_64K
);
if (!ret) {
range->start = newer_off;
/*
if (!ret) {
range->start = newer_off;
/*
@@
-1403,9
+1412,8
@@
int btrfs_defrag_file(struct inode *inode, struct file *file,
newer_off = max(newer_off + 1,
(u64)i << PAGE_CACHE_SHIFT);
newer_off = max(newer_off + 1,
(u64)i << PAGE_CACHE_SHIFT);
- ret = find_new_extents(root, inode,
- newer_than, &newer_off,
- 64 * 1024);
+ ret = find_new_extents(root, inode, newer_than,
+ &newer_off, SZ_64K);
if (!ret) {
range->start = newer_off;
i = (newer_off & new_align) >> PAGE_CACHE_SHIFT;
if (!ret) {
range->start = newer_off;
i = (newer_off & new_align) >> PAGE_CACHE_SHIFT;
@@
-1571,7
+1579,7
@@
static noinline int btrfs_ioctl_resize(struct file *file,
new_size = old_size + new_size;
}
new_size = old_size + new_size;
}
- if (new_size <
256 * 1024 * 1024
) {
+ if (new_size <
SZ_256M
) {
ret = -EINVAL;
goto out_free;
}
ret = -EINVAL;
goto out_free;
}
@@
-2160,7
+2168,7
@@
static noinline int btrfs_ioctl_tree_search_v2(struct file *file,
struct inode *inode;
int ret;
size_t buf_size;
struct inode *inode;
int ret;
size_t buf_size;
- const size_t buf_limit =
16 * 1024 * 1024
;
+ const size_t buf_limit =
SZ_16M
;
if (!capable(CAP_SYS_ADMIN))
return -EPERM;
if (!capable(CAP_SYS_ADMIN))
return -EPERM;
@@
-3096,7
+3104,7
@@
out_unlock:
return ret;
}
return ret;
}
-#define BTRFS_MAX_DEDUPE_LEN
(16 * 1024 * 1024)
+#define BTRFS_MAX_DEDUPE_LEN
SZ_16M
ssize_t btrfs_dedupe_file_range(struct file *src_file, u64 loff, u64 olen,
struct file *dst_file, u64 dst_loff)
ssize_t btrfs_dedupe_file_range(struct file *src_file, u64 loff, u64 olen,
struct file *dst_file, u64 dst_loff)
@@
-3396,7
+3404,7
@@
static int btrfs_clone(struct inode *src, struct inode *inode,
return ret;
}
return ret;
}
- path->reada =
2
;
+ path->reada =
READA_FORWARD
;
/* clone data */
key.objectid = btrfs_ino(src);
key.type = BTRFS_EXTENT_DATA_KEY;
/* clone data */
key.objectid = btrfs_ino(src);
key.type = BTRFS_EXTENT_DATA_KEY;
@@
-4039,7
+4047,7
@@
static long btrfs_ioctl_space_info(struct btrfs_root *root, void __user *arg)
return -ENOMEM;
space_args.total_spaces = 0;
return -ENOMEM;
space_args.total_spaces = 0;
- dest = kmalloc(alloc_size, GFP_
NOFS
);
+ dest = kmalloc(alloc_size, GFP_
KERNEL
);
if (!dest)
return -ENOMEM;
dest_orig = dest;
if (!dest)
return -ENOMEM;
dest_orig = dest;
@@
-4416,7
+4424,7
@@
static long btrfs_ioctl_logical_to_ino(struct btrfs_root *root,
goto out;
}
goto out;
}
- size = min_t(u32, loi->size,
64 * 1024
);
+ size = min_t(u32, loi->size,
SZ_64K
);
inodes = init_data_container(size);
if (IS_ERR(inodes)) {
ret = PTR_ERR(inodes);
inodes = init_data_container(size);
if (IS_ERR(inodes)) {
ret = PTR_ERR(inodes);
@@
-4565,7
+4573,7
@@
locked:
goto out_bargs;
}
goto out_bargs;
}
- bctl = kzalloc(sizeof(*bctl), GFP_
NOFS
);
+ bctl = kzalloc(sizeof(*bctl), GFP_
KERNEL
);
if (!bctl) {
ret = -ENOMEM;
goto out_bargs;
if (!bctl) {
ret = -ENOMEM;
goto out_bargs;
@@
-4651,7
+4659,7
@@
static long btrfs_ioctl_balance_progress(struct btrfs_root *root,
goto out;
}
goto out;
}
- bargs = kzalloc(sizeof(*bargs), GFP_
NOFS
);
+ bargs = kzalloc(sizeof(*bargs), GFP_
KERNEL
);
if (!bargs) {
ret = -ENOMEM;
goto out;
if (!bargs) {
ret = -ENOMEM;
goto out;
@@
-4911,7
+4919,7
@@
static long btrfs_ioctl_quota_rescan_status(struct file *file, void __user *arg)
if (!capable(CAP_SYS_ADMIN))
return -EPERM;
if (!capable(CAP_SYS_ADMIN))
return -EPERM;
- qsa = kzalloc(sizeof(*qsa), GFP_
NOFS
);
+ qsa = kzalloc(sizeof(*qsa), GFP_
KERNEL
);
if (!qsa)
return -ENOMEM;
if (!qsa)
return -ENOMEM;
@@
-5041,7
+5049,7
@@
static long btrfs_ioctl_set_received_subvol_32(struct file *file,
goto out;
}
goto out;
}
- args64 = kmalloc(sizeof(*args64), GFP_
NOFS
);
+ args64 = kmalloc(sizeof(*args64), GFP_
KERNEL
);
if (!args64) {
ret = -ENOMEM;
goto out;
if (!args64) {
ret = -ENOMEM;
goto out;
@@
-5178,7
+5186,7
@@
out_unlock:
static int btrfs_ioctl_get_supported_features(struct file *file,
void __user *arg)
{
static int btrfs_ioctl_get_supported_features(struct file *file,
void __user *arg)
{
- static struct btrfs_ioctl_feature_flags features[3] = {
+ static
const
struct btrfs_ioctl_feature_flags features[3] = {
INIT_FEATURE_FLAGS(SUPP),
INIT_FEATURE_FLAGS(SAFE_SET),
INIT_FEATURE_FLAGS(SAFE_CLEAR)
INIT_FEATURE_FLAGS(SUPP),
INIT_FEATURE_FLAGS(SAFE_SET),
INIT_FEATURE_FLAGS(SAFE_CLEAR)