diff options
author | David Sterba <dsterba@suse.com> | 2016-02-26 09:38:33 -0500 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2016-02-26 09:38:33 -0500 |
commit | f004fae0cfeb96d33240eb5471f14cb6fbbd4eea (patch) | |
tree | 8a0cc3be4e031298ef1f6db573c5f57da333737e | |
parent | 675d276b322b45e7bf7c616a2847bdc425745b99 (diff) | |
parent | f827ba9a641b481f01d1bdc0771a7afc3776cc0b (diff) |
Merge branch 'cleanups-4.6' into for-chris-4.6
-rw-r--r-- | fs/btrfs/backref.c | 12 | ||||
-rw-r--r-- | fs/btrfs/ctree.h | 3 | ||||
-rw-r--r-- | fs/btrfs/delayed-inode.c | 3 | ||||
-rw-r--r-- | fs/btrfs/delayed-ref.c | 12 | ||||
-rw-r--r-- | fs/btrfs/disk-io.c | 3 | ||||
-rw-r--r-- | fs/btrfs/extent-tree.c | 2 | ||||
-rw-r--r-- | fs/btrfs/extent_io.c | 37 | ||||
-rw-r--r-- | fs/btrfs/extent_io.h | 5 | ||||
-rw-r--r-- | fs/btrfs/extent_map.c | 3 | ||||
-rw-r--r-- | fs/btrfs/file.c | 7 | ||||
-rw-r--r-- | fs/btrfs/inode.c | 40 | ||||
-rw-r--r-- | fs/btrfs/ioctl.c | 12 | ||||
-rw-r--r-- | fs/btrfs/ordered-data.c | 3 | ||||
-rw-r--r-- | fs/btrfs/root-tree.c | 2 | ||||
-rw-r--r-- | fs/btrfs/transaction.c | 7 | ||||
-rw-r--r-- | fs/btrfs/xattr.c | 2 |
16 files changed, 64 insertions, 89 deletions
diff --git a/fs/btrfs/backref.c b/fs/btrfs/backref.c index f6dac40f87ff..80e8472d618b 100644 --- a/fs/btrfs/backref.c +++ b/fs/btrfs/backref.c | |||
@@ -148,8 +148,7 @@ int __init btrfs_prelim_ref_init(void) | |||
148 | 148 | ||
149 | void btrfs_prelim_ref_exit(void) | 149 | void btrfs_prelim_ref_exit(void) |
150 | { | 150 | { |
151 | if (btrfs_prelim_ref_cache) | 151 | kmem_cache_destroy(btrfs_prelim_ref_cache); |
152 | kmem_cache_destroy(btrfs_prelim_ref_cache); | ||
153 | } | 152 | } |
154 | 153 | ||
155 | /* | 154 | /* |
@@ -566,17 +565,14 @@ static void __merge_refs(struct list_head *head, int mode) | |||
566 | struct __prelim_ref *pos2 = pos1, *tmp; | 565 | struct __prelim_ref *pos2 = pos1, *tmp; |
567 | 566 | ||
568 | list_for_each_entry_safe_continue(pos2, tmp, head, list) { | 567 | list_for_each_entry_safe_continue(pos2, tmp, head, list) { |
569 | struct __prelim_ref *xchg, *ref1 = pos1, *ref2 = pos2; | 568 | struct __prelim_ref *ref1 = pos1, *ref2 = pos2; |
570 | struct extent_inode_elem *eie; | 569 | struct extent_inode_elem *eie; |
571 | 570 | ||
572 | if (!ref_for_same_block(ref1, ref2)) | 571 | if (!ref_for_same_block(ref1, ref2)) |
573 | continue; | 572 | continue; |
574 | if (mode == 1) { | 573 | if (mode == 1) { |
575 | if (!ref1->parent && ref2->parent) { | 574 | if (!ref1->parent && ref2->parent) |
576 | xchg = ref1; | 575 | swap(ref1, ref2); |
577 | ref1 = ref2; | ||
578 | ref2 = xchg; | ||
579 | } | ||
580 | } else { | 576 | } else { |
581 | if (ref1->parent != ref2->parent) | 577 | if (ref1->parent != ref2->parent) |
582 | continue; | 578 | continue; |
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index 38f34dadb86a..67fca268449b 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h | |||
@@ -3490,8 +3490,7 @@ u64 btrfs_csum_bytes_to_leaves(struct btrfs_root *root, u64 csum_bytes); | |||
3490 | static inline u64 btrfs_calc_trans_metadata_size(struct btrfs_root *root, | 3490 | static inline u64 btrfs_calc_trans_metadata_size(struct btrfs_root *root, |
3491 | unsigned num_items) | 3491 | unsigned num_items) |
3492 | { | 3492 | { |
3493 | return (root->nodesize + root->nodesize * (BTRFS_MAX_LEVEL - 1)) * | 3493 | return root->nodesize * BTRFS_MAX_LEVEL * 2 * num_items; |
3494 | 2 * num_items; | ||
3495 | } | 3494 | } |
3496 | 3495 | ||
3497 | /* | 3496 | /* |
diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c index b57daa895cea..a20d541bb190 100644 --- a/fs/btrfs/delayed-inode.c +++ b/fs/btrfs/delayed-inode.c | |||
@@ -43,8 +43,7 @@ int __init btrfs_delayed_inode_init(void) | |||
43 | 43 | ||
44 | void btrfs_delayed_inode_exit(void) | 44 | void btrfs_delayed_inode_exit(void) |
45 | { | 45 | { |
46 | if (delayed_node_cache) | 46 | kmem_cache_destroy(delayed_node_cache); |
47 | kmem_cache_destroy(delayed_node_cache); | ||
48 | } | 47 | } |
49 | 48 | ||
50 | static inline void btrfs_init_delayed_node( | 49 | static inline void btrfs_init_delayed_node( |
diff --git a/fs/btrfs/delayed-ref.c b/fs/btrfs/delayed-ref.c index 914ac13bd92f..430b3689b112 100644 --- a/fs/btrfs/delayed-ref.c +++ b/fs/btrfs/delayed-ref.c | |||
@@ -929,14 +929,10 @@ btrfs_find_delayed_ref_head(struct btrfs_trans_handle *trans, u64 bytenr) | |||
929 | 929 | ||
930 | void btrfs_delayed_ref_exit(void) | 930 | void btrfs_delayed_ref_exit(void) |
931 | { | 931 | { |
932 | if (btrfs_delayed_ref_head_cachep) | 932 | kmem_cache_destroy(btrfs_delayed_ref_head_cachep); |
933 | kmem_cache_destroy(btrfs_delayed_ref_head_cachep); | 933 | kmem_cache_destroy(btrfs_delayed_tree_ref_cachep); |
934 | if (btrfs_delayed_tree_ref_cachep) | 934 | kmem_cache_destroy(btrfs_delayed_data_ref_cachep); |
935 | kmem_cache_destroy(btrfs_delayed_tree_ref_cachep); | 935 | kmem_cache_destroy(btrfs_delayed_extent_op_cachep); |
936 | if (btrfs_delayed_data_ref_cachep) | ||
937 | kmem_cache_destroy(btrfs_delayed_data_ref_cachep); | ||
938 | if (btrfs_delayed_extent_op_cachep) | ||
939 | kmem_cache_destroy(btrfs_delayed_extent_op_cachep); | ||
940 | } | 936 | } |
941 | 937 | ||
942 | int btrfs_delayed_ref_init(void) | 938 | int btrfs_delayed_ref_init(void) |
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 1809475ace2f..a998ef15ec6d 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c | |||
@@ -110,8 +110,7 @@ int __init btrfs_end_io_wq_init(void) | |||
110 | 110 | ||
111 | void btrfs_end_io_wq_exit(void) | 111 | void btrfs_end_io_wq_exit(void) |
112 | { | 112 | { |
113 | if (btrfs_end_io_wq_cache) | 113 | kmem_cache_destroy(btrfs_end_io_wq_cache); |
114 | kmem_cache_destroy(btrfs_end_io_wq_cache); | ||
115 | } | 114 | } |
116 | 115 | ||
117 | /* | 116 | /* |
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index aa31fe97c47a..083783b53536 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c | |||
@@ -7024,7 +7024,7 @@ btrfs_lock_cluster(struct btrfs_block_group_cache *block_group, | |||
7024 | struct btrfs_free_cluster *cluster, | 7024 | struct btrfs_free_cluster *cluster, |
7025 | int delalloc) | 7025 | int delalloc) |
7026 | { | 7026 | { |
7027 | struct btrfs_block_group_cache *used_bg; | 7027 | struct btrfs_block_group_cache *used_bg = NULL; |
7028 | bool locked = false; | 7028 | bool locked = false; |
7029 | again: | 7029 | again: |
7030 | spin_lock(&cluster->refill_lock); | 7030 | spin_lock(&cluster->refill_lock); |
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c index ed2f32dd0d29..76a0c8597d98 100644 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c | |||
@@ -206,10 +206,8 @@ void extent_io_exit(void) | |||
206 | * destroy caches. | 206 | * destroy caches. |
207 | */ | 207 | */ |
208 | rcu_barrier(); | 208 | rcu_barrier(); |
209 | if (extent_state_cache) | 209 | kmem_cache_destroy(extent_state_cache); |
210 | kmem_cache_destroy(extent_state_cache); | 210 | kmem_cache_destroy(extent_buffer_cache); |
211 | if (extent_buffer_cache) | ||
212 | kmem_cache_destroy(extent_buffer_cache); | ||
213 | if (btrfs_bioset) | 211 | if (btrfs_bioset) |
214 | bioset_free(btrfs_bioset); | 212 | bioset_free(btrfs_bioset); |
215 | } | 213 | } |
@@ -232,7 +230,7 @@ static struct extent_state *alloc_extent_state(gfp_t mask) | |||
232 | if (!state) | 230 | if (!state) |
233 | return state; | 231 | return state; |
234 | state->state = 0; | 232 | state->state = 0; |
235 | state->private = 0; | 233 | state->failrec = NULL; |
236 | RB_CLEAR_NODE(&state->rb_node); | 234 | RB_CLEAR_NODE(&state->rb_node); |
237 | btrfs_leak_debug_add(&state->leak_list, &states); | 235 | btrfs_leak_debug_add(&state->leak_list, &states); |
238 | atomic_set(&state->refs, 1); | 236 | atomic_set(&state->refs, 1); |
@@ -1844,7 +1842,8 @@ out: | |||
1844 | * set the private field for a given byte offset in the tree. If there isn't | 1842 | * set the private field for a given byte offset in the tree. If there isn't |
1845 | * an extent_state there already, this does nothing. | 1843 | * an extent_state there already, this does nothing. |
1846 | */ | 1844 | */ |
1847 | static int set_state_private(struct extent_io_tree *tree, u64 start, u64 private) | 1845 | static noinline int set_state_failrec(struct extent_io_tree *tree, u64 start, |
1846 | struct io_failure_record *failrec) | ||
1848 | { | 1847 | { |
1849 | struct rb_node *node; | 1848 | struct rb_node *node; |
1850 | struct extent_state *state; | 1849 | struct extent_state *state; |
@@ -1865,13 +1864,14 @@ static int set_state_private(struct extent_io_tree *tree, u64 start, u64 private | |||
1865 | ret = -ENOENT; | 1864 | ret = -ENOENT; |
1866 | goto out; | 1865 | goto out; |
1867 | } | 1866 | } |
1868 | state->private = private; | 1867 | state->failrec = failrec; |
1869 | out: | 1868 | out: |
1870 | spin_unlock(&tree->lock); | 1869 | spin_unlock(&tree->lock); |
1871 | return ret; | 1870 | return ret; |
1872 | } | 1871 | } |
1873 | 1872 | ||
1874 | int get_state_private(struct extent_io_tree *tree, u64 start, u64 *private) | 1873 | static noinline int get_state_failrec(struct extent_io_tree *tree, u64 start, |
1874 | struct io_failure_record **failrec) | ||
1875 | { | 1875 | { |
1876 | struct rb_node *node; | 1876 | struct rb_node *node; |
1877 | struct extent_state *state; | 1877 | struct extent_state *state; |
@@ -1892,7 +1892,7 @@ int get_state_private(struct extent_io_tree *tree, u64 start, u64 *private) | |||
1892 | ret = -ENOENT; | 1892 | ret = -ENOENT; |
1893 | goto out; | 1893 | goto out; |
1894 | } | 1894 | } |
1895 | *private = state->private; | 1895 | *failrec = state->failrec; |
1896 | out: | 1896 | out: |
1897 | spin_unlock(&tree->lock); | 1897 | spin_unlock(&tree->lock); |
1898 | return ret; | 1898 | return ret; |
@@ -1972,7 +1972,7 @@ int free_io_failure(struct inode *inode, struct io_failure_record *rec) | |||
1972 | int err = 0; | 1972 | int err = 0; |
1973 | struct extent_io_tree *failure_tree = &BTRFS_I(inode)->io_failure_tree; | 1973 | struct extent_io_tree *failure_tree = &BTRFS_I(inode)->io_failure_tree; |
1974 | 1974 | ||
1975 | set_state_private(failure_tree, rec->start, 0); | 1975 | set_state_failrec(failure_tree, rec->start, NULL); |
1976 | ret = clear_extent_bits(failure_tree, rec->start, | 1976 | ret = clear_extent_bits(failure_tree, rec->start, |
1977 | rec->start + rec->len - 1, | 1977 | rec->start + rec->len - 1, |
1978 | EXTENT_LOCKED | EXTENT_DIRTY, GFP_NOFS); | 1978 | EXTENT_LOCKED | EXTENT_DIRTY, GFP_NOFS); |
@@ -2089,7 +2089,6 @@ int clean_io_failure(struct inode *inode, u64 start, struct page *page, | |||
2089 | unsigned int pg_offset) | 2089 | unsigned int pg_offset) |
2090 | { | 2090 | { |
2091 | u64 private; | 2091 | u64 private; |
2092 | u64 private_failure; | ||
2093 | struct io_failure_record *failrec; | 2092 | struct io_failure_record *failrec; |
2094 | struct btrfs_fs_info *fs_info = BTRFS_I(inode)->root->fs_info; | 2093 | struct btrfs_fs_info *fs_info = BTRFS_I(inode)->root->fs_info; |
2095 | struct extent_state *state; | 2094 | struct extent_state *state; |
@@ -2102,12 +2101,11 @@ int clean_io_failure(struct inode *inode, u64 start, struct page *page, | |||
2102 | if (!ret) | 2101 | if (!ret) |
2103 | return 0; | 2102 | return 0; |
2104 | 2103 | ||
2105 | ret = get_state_private(&BTRFS_I(inode)->io_failure_tree, start, | 2104 | ret = get_state_failrec(&BTRFS_I(inode)->io_failure_tree, start, |
2106 | &private_failure); | 2105 | &failrec); |
2107 | if (ret) | 2106 | if (ret) |
2108 | return 0; | 2107 | return 0; |
2109 | 2108 | ||
2110 | failrec = (struct io_failure_record *)(unsigned long) private_failure; | ||
2111 | BUG_ON(!failrec->this_mirror); | 2109 | BUG_ON(!failrec->this_mirror); |
2112 | 2110 | ||
2113 | if (failrec->in_validation) { | 2111 | if (failrec->in_validation) { |
@@ -2167,7 +2165,7 @@ void btrfs_free_io_failure_record(struct inode *inode, u64 start, u64 end) | |||
2167 | 2165 | ||
2168 | next = next_state(state); | 2166 | next = next_state(state); |
2169 | 2167 | ||
2170 | failrec = (struct io_failure_record *)(unsigned long)state->private; | 2168 | failrec = state->failrec; |
2171 | free_extent_state(state); | 2169 | free_extent_state(state); |
2172 | kfree(failrec); | 2170 | kfree(failrec); |
2173 | 2171 | ||
@@ -2177,10 +2175,9 @@ void btrfs_free_io_failure_record(struct inode *inode, u64 start, u64 end) | |||
2177 | } | 2175 | } |
2178 | 2176 | ||
2179 | int btrfs_get_io_failure_record(struct inode *inode, u64 start, u64 end, | 2177 | int btrfs_get_io_failure_record(struct inode *inode, u64 start, u64 end, |
2180 | struct io_failure_record **failrec_ret) | 2178 | struct io_failure_record **failrec_ret) |
2181 | { | 2179 | { |
2182 | struct io_failure_record *failrec; | 2180 | struct io_failure_record *failrec; |
2183 | u64 private; | ||
2184 | struct extent_map *em; | 2181 | struct extent_map *em; |
2185 | struct extent_io_tree *failure_tree = &BTRFS_I(inode)->io_failure_tree; | 2182 | struct extent_io_tree *failure_tree = &BTRFS_I(inode)->io_failure_tree; |
2186 | struct extent_io_tree *tree = &BTRFS_I(inode)->io_tree; | 2183 | struct extent_io_tree *tree = &BTRFS_I(inode)->io_tree; |
@@ -2188,7 +2185,7 @@ int btrfs_get_io_failure_record(struct inode *inode, u64 start, u64 end, | |||
2188 | int ret; | 2185 | int ret; |
2189 | u64 logical; | 2186 | u64 logical; |
2190 | 2187 | ||
2191 | ret = get_state_private(failure_tree, start, &private); | 2188 | ret = get_state_failrec(failure_tree, start, &failrec); |
2192 | if (ret) { | 2189 | if (ret) { |
2193 | failrec = kzalloc(sizeof(*failrec), GFP_NOFS); | 2190 | failrec = kzalloc(sizeof(*failrec), GFP_NOFS); |
2194 | if (!failrec) | 2191 | if (!failrec) |
@@ -2237,8 +2234,7 @@ int btrfs_get_io_failure_record(struct inode *inode, u64 start, u64 end, | |||
2237 | ret = set_extent_bits(failure_tree, start, end, | 2234 | ret = set_extent_bits(failure_tree, start, end, |
2238 | EXTENT_LOCKED | EXTENT_DIRTY, GFP_NOFS); | 2235 | EXTENT_LOCKED | EXTENT_DIRTY, GFP_NOFS); |
2239 | if (ret >= 0) | 2236 | if (ret >= 0) |
2240 | ret = set_state_private(failure_tree, start, | 2237 | ret = set_state_failrec(failure_tree, start, failrec); |
2241 | (u64)(unsigned long)failrec); | ||
2242 | /* set the bits in the inode's tree */ | 2238 | /* set the bits in the inode's tree */ |
2243 | if (ret >= 0) | 2239 | if (ret >= 0) |
2244 | ret = set_extent_bits(tree, start, end, EXTENT_DAMAGED, | 2240 | ret = set_extent_bits(tree, start, end, EXTENT_DAMAGED, |
@@ -2248,7 +2244,6 @@ int btrfs_get_io_failure_record(struct inode *inode, u64 start, u64 end, | |||
2248 | return ret; | 2244 | return ret; |
2249 | } | 2245 | } |
2250 | } else { | 2246 | } else { |
2251 | failrec = (struct io_failure_record *)(unsigned long)private; | ||
2252 | pr_debug("Get IO Failure Record: (found) logical=%llu, start=%llu, len=%llu, validation=%d\n", | 2247 | pr_debug("Get IO Failure Record: (found) logical=%llu, start=%llu, len=%llu, validation=%d\n", |
2253 | failrec->logical, failrec->start, failrec->len, | 2248 | failrec->logical, failrec->start, failrec->len, |
2254 | failrec->in_validation); | 2249 | failrec->in_validation); |
diff --git a/fs/btrfs/extent_io.h b/fs/btrfs/extent_io.h index 880d5292e972..5dbf92e68fbd 100644 --- a/fs/btrfs/extent_io.h +++ b/fs/btrfs/extent_io.h | |||
@@ -61,6 +61,7 @@ | |||
61 | struct extent_state; | 61 | struct extent_state; |
62 | struct btrfs_root; | 62 | struct btrfs_root; |
63 | struct btrfs_io_bio; | 63 | struct btrfs_io_bio; |
64 | struct io_failure_record; | ||
64 | 65 | ||
65 | typedef int (extent_submit_bio_hook_t)(struct inode *inode, int rw, | 66 | typedef int (extent_submit_bio_hook_t)(struct inode *inode, int rw, |
66 | struct bio *bio, int mirror_num, | 67 | struct bio *bio, int mirror_num, |
@@ -111,8 +112,7 @@ struct extent_state { | |||
111 | atomic_t refs; | 112 | atomic_t refs; |
112 | unsigned state; | 113 | unsigned state; |
113 | 114 | ||
114 | /* for use by the FS */ | 115 | struct io_failure_record *failrec; |
115 | u64 private; | ||
116 | 116 | ||
117 | #ifdef CONFIG_BTRFS_DEBUG | 117 | #ifdef CONFIG_BTRFS_DEBUG |
118 | struct list_head leak_list; | 118 | struct list_head leak_list; |
@@ -342,7 +342,6 @@ int extent_readpages(struct extent_io_tree *tree, | |||
342 | get_extent_t get_extent); | 342 | get_extent_t get_extent); |
343 | int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, | 343 | int extent_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, |
344 | __u64 start, __u64 len, get_extent_t *get_extent); | 344 | __u64 start, __u64 len, get_extent_t *get_extent); |
345 | int get_state_private(struct extent_io_tree *tree, u64 start, u64 *private); | ||
346 | void set_page_extent_mapped(struct page *page); | 345 | void set_page_extent_mapped(struct page *page); |
347 | 346 | ||
348 | struct extent_buffer *alloc_extent_buffer(struct btrfs_fs_info *fs_info, | 347 | struct extent_buffer *alloc_extent_buffer(struct btrfs_fs_info *fs_info, |
diff --git a/fs/btrfs/extent_map.c b/fs/btrfs/extent_map.c index 84fb56d5c018..cdbadeaef202 100644 --- a/fs/btrfs/extent_map.c +++ b/fs/btrfs/extent_map.c | |||
@@ -20,8 +20,7 @@ int __init extent_map_init(void) | |||
20 | 20 | ||
21 | void extent_map_exit(void) | 21 | void extent_map_exit(void) |
22 | { | 22 | { |
23 | if (extent_map_cache) | 23 | kmem_cache_destroy(extent_map_cache); |
24 | kmem_cache_destroy(extent_map_cache); | ||
25 | } | 24 | } |
26 | 25 | ||
27 | /** | 26 | /** |
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c index 2d9e4009c7e4..4ab4b5cdf4b0 100644 --- a/fs/btrfs/file.c +++ b/fs/btrfs/file.c | |||
@@ -2569,7 +2569,7 @@ out_trans: | |||
2569 | goto out_free; | 2569 | goto out_free; |
2570 | 2570 | ||
2571 | inode_inc_iversion(inode); | 2571 | inode_inc_iversion(inode); |
2572 | inode->i_mtime = inode->i_ctime = CURRENT_TIME; | 2572 | inode->i_mtime = inode->i_ctime = current_fs_time(inode->i_sb); |
2573 | 2573 | ||
2574 | trans->block_rsv = &root->fs_info->trans_block_rsv; | 2574 | trans->block_rsv = &root->fs_info->trans_block_rsv; |
2575 | ret = btrfs_update_inode(trans, root, inode); | 2575 | ret = btrfs_update_inode(trans, root, inode); |
@@ -2819,7 +2819,7 @@ static long btrfs_fallocate(struct file *file, int mode, | |||
2819 | if (IS_ERR(trans)) { | 2819 | if (IS_ERR(trans)) { |
2820 | ret = PTR_ERR(trans); | 2820 | ret = PTR_ERR(trans); |
2821 | } else { | 2821 | } else { |
2822 | inode->i_ctime = CURRENT_TIME; | 2822 | inode->i_ctime = current_fs_time(inode->i_sb); |
2823 | i_size_write(inode, actual_end); | 2823 | i_size_write(inode, actual_end); |
2824 | btrfs_ordered_update_i_size(inode, actual_end, NULL); | 2824 | btrfs_ordered_update_i_size(inode, actual_end, NULL); |
2825 | ret = btrfs_update_inode(trans, root, inode); | 2825 | ret = btrfs_update_inode(trans, root, inode); |
@@ -2964,8 +2964,7 @@ const struct file_operations btrfs_file_operations = { | |||
2964 | 2964 | ||
2965 | void btrfs_auto_defrag_exit(void) | 2965 | void btrfs_auto_defrag_exit(void) |
2966 | { | 2966 | { |
2967 | if (btrfs_inode_defrag_cachep) | 2967 | kmem_cache_destroy(btrfs_inode_defrag_cachep); |
2968 | kmem_cache_destroy(btrfs_inode_defrag_cachep); | ||
2969 | } | 2968 | } |
2970 | 2969 | ||
2971 | int btrfs_auto_defrag_init(void) | 2970 | int btrfs_auto_defrag_init(void) |
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index d4381f5ef52d..d0d152f39771 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -4014,7 +4014,8 @@ err: | |||
4014 | btrfs_i_size_write(dir, dir->i_size - name_len * 2); | 4014 | btrfs_i_size_write(dir, dir->i_size - name_len * 2); |
4015 | inode_inc_iversion(inode); | 4015 | inode_inc_iversion(inode); |
4016 | inode_inc_iversion(dir); | 4016 | inode_inc_iversion(dir); |
4017 | inode->i_ctime = dir->i_mtime = dir->i_ctime = CURRENT_TIME; | 4017 | inode->i_ctime = dir->i_mtime = |
4018 | dir->i_ctime = current_fs_time(inode->i_sb); | ||
4018 | ret = btrfs_update_inode(trans, root, dir); | 4019 | ret = btrfs_update_inode(trans, root, dir); |
4019 | out: | 4020 | out: |
4020 | return ret; | 4021 | return ret; |
@@ -4157,7 +4158,7 @@ int btrfs_unlink_subvol(struct btrfs_trans_handle *trans, | |||
4157 | 4158 | ||
4158 | btrfs_i_size_write(dir, dir->i_size - name_len * 2); | 4159 | btrfs_i_size_write(dir, dir->i_size - name_len * 2); |
4159 | inode_inc_iversion(dir); | 4160 | inode_inc_iversion(dir); |
4160 | dir->i_mtime = dir->i_ctime = CURRENT_TIME; | 4161 | dir->i_mtime = dir->i_ctime = current_fs_time(dir->i_sb); |
4161 | ret = btrfs_update_inode_fallback(trans, root, dir); | 4162 | ret = btrfs_update_inode_fallback(trans, root, dir); |
4162 | if (ret) | 4163 | if (ret) |
4163 | btrfs_abort_transaction(trans, root, ret); | 4164 | btrfs_abort_transaction(trans, root, ret); |
@@ -5602,7 +5603,7 @@ static struct inode *new_simple_dir(struct super_block *s, | |||
5602 | inode->i_op = &btrfs_dir_ro_inode_operations; | 5603 | inode->i_op = &btrfs_dir_ro_inode_operations; |
5603 | inode->i_fop = &simple_dir_operations; | 5604 | inode->i_fop = &simple_dir_operations; |
5604 | inode->i_mode = S_IFDIR | S_IRUGO | S_IWUSR | S_IXUGO; | 5605 | inode->i_mode = S_IFDIR | S_IRUGO | S_IWUSR | S_IXUGO; |
5605 | inode->i_mtime = CURRENT_TIME; | 5606 | inode->i_mtime = current_fs_time(inode->i_sb); |
5606 | inode->i_atime = inode->i_mtime; | 5607 | inode->i_atime = inode->i_mtime; |
5607 | inode->i_ctime = inode->i_mtime; | 5608 | inode->i_ctime = inode->i_mtime; |
5608 | BTRFS_I(inode)->i_otime = inode->i_mtime; | 5609 | BTRFS_I(inode)->i_otime = inode->i_mtime; |
@@ -6186,7 +6187,7 @@ static struct inode *btrfs_new_inode(struct btrfs_trans_handle *trans, | |||
6186 | inode_init_owner(inode, dir, mode); | 6187 | inode_init_owner(inode, dir, mode); |
6187 | inode_set_bytes(inode, 0); | 6188 | inode_set_bytes(inode, 0); |
6188 | 6189 | ||
6189 | inode->i_mtime = CURRENT_TIME; | 6190 | inode->i_mtime = current_fs_time(inode->i_sb); |
6190 | inode->i_atime = inode->i_mtime; | 6191 | inode->i_atime = inode->i_mtime; |
6191 | inode->i_ctime = inode->i_mtime; | 6192 | inode->i_ctime = inode->i_mtime; |
6192 | BTRFS_I(inode)->i_otime = inode->i_mtime; | 6193 | BTRFS_I(inode)->i_otime = inode->i_mtime; |
@@ -6299,7 +6300,8 @@ int btrfs_add_link(struct btrfs_trans_handle *trans, | |||
6299 | btrfs_i_size_write(parent_inode, parent_inode->i_size + | 6300 | btrfs_i_size_write(parent_inode, parent_inode->i_size + |
6300 | name_len * 2); | 6301 | name_len * 2); |
6301 | inode_inc_iversion(parent_inode); | 6302 | inode_inc_iversion(parent_inode); |
6302 | parent_inode->i_mtime = parent_inode->i_ctime = CURRENT_TIME; | 6303 | parent_inode->i_mtime = parent_inode->i_ctime = |
6304 | current_fs_time(parent_inode->i_sb); | ||
6303 | ret = btrfs_update_inode(trans, root, parent_inode); | 6305 | ret = btrfs_update_inode(trans, root, parent_inode); |
6304 | if (ret) | 6306 | if (ret) |
6305 | btrfs_abort_transaction(trans, root, ret); | 6307 | btrfs_abort_transaction(trans, root, ret); |
@@ -6517,7 +6519,7 @@ static int btrfs_link(struct dentry *old_dentry, struct inode *dir, | |||
6517 | BTRFS_I(inode)->dir_index = 0ULL; | 6519 | BTRFS_I(inode)->dir_index = 0ULL; |
6518 | inc_nlink(inode); | 6520 | inc_nlink(inode); |
6519 | inode_inc_iversion(inode); | 6521 | inode_inc_iversion(inode); |
6520 | inode->i_ctime = CURRENT_TIME; | 6522 | inode->i_ctime = current_fs_time(inode->i_sb); |
6521 | ihold(inode); | 6523 | ihold(inode); |
6522 | set_bit(BTRFS_INODE_COPY_EVERYTHING, &BTRFS_I(inode)->runtime_flags); | 6524 | set_bit(BTRFS_INODE_COPY_EVERYTHING, &BTRFS_I(inode)->runtime_flags); |
6523 | 6525 | ||
@@ -9298,16 +9300,11 @@ void btrfs_destroy_cachep(void) | |||
9298 | * destroy cache. | 9300 | * destroy cache. |
9299 | */ | 9301 | */ |
9300 | rcu_barrier(); | 9302 | rcu_barrier(); |
9301 | if (btrfs_inode_cachep) | 9303 | kmem_cache_destroy(btrfs_inode_cachep); |
9302 | kmem_cache_destroy(btrfs_inode_cachep); | 9304 | kmem_cache_destroy(btrfs_trans_handle_cachep); |
9303 | if (btrfs_trans_handle_cachep) | 9305 | kmem_cache_destroy(btrfs_transaction_cachep); |
9304 | kmem_cache_destroy(btrfs_trans_handle_cachep); | 9306 | kmem_cache_destroy(btrfs_path_cachep); |
9305 | if (btrfs_transaction_cachep) | 9307 | kmem_cache_destroy(btrfs_free_space_cachep); |
9306 | kmem_cache_destroy(btrfs_transaction_cachep); | ||
9307 | if (btrfs_path_cachep) | ||
9308 | kmem_cache_destroy(btrfs_path_cachep); | ||
9309 | if (btrfs_free_space_cachep) | ||
9310 | kmem_cache_destroy(btrfs_free_space_cachep); | ||
9311 | } | 9308 | } |
9312 | 9309 | ||
9313 | int btrfs_init_cachep(void) | 9310 | int btrfs_init_cachep(void) |
@@ -9375,7 +9372,6 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
9375 | struct btrfs_root *dest = BTRFS_I(new_dir)->root; | 9372 | struct btrfs_root *dest = BTRFS_I(new_dir)->root; |
9376 | struct inode *new_inode = d_inode(new_dentry); | 9373 | struct inode *new_inode = d_inode(new_dentry); |
9377 | struct inode *old_inode = d_inode(old_dentry); | 9374 | struct inode *old_inode = d_inode(old_dentry); |
9378 | struct timespec ctime = CURRENT_TIME; | ||
9379 | u64 index = 0; | 9375 | u64 index = 0; |
9380 | u64 root_objectid; | 9376 | u64 root_objectid; |
9381 | int ret; | 9377 | int ret; |
@@ -9472,9 +9468,9 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
9472 | inode_inc_iversion(old_dir); | 9468 | inode_inc_iversion(old_dir); |
9473 | inode_inc_iversion(new_dir); | 9469 | inode_inc_iversion(new_dir); |
9474 | inode_inc_iversion(old_inode); | 9470 | inode_inc_iversion(old_inode); |
9475 | old_dir->i_ctime = old_dir->i_mtime = ctime; | 9471 | old_dir->i_ctime = old_dir->i_mtime = |
9476 | new_dir->i_ctime = new_dir->i_mtime = ctime; | 9472 | new_dir->i_ctime = new_dir->i_mtime = |
9477 | old_inode->i_ctime = ctime; | 9473 | old_inode->i_ctime = current_fs_time(old_dir->i_sb); |
9478 | 9474 | ||
9479 | if (old_dentry->d_parent != new_dentry->d_parent) | 9475 | if (old_dentry->d_parent != new_dentry->d_parent) |
9480 | btrfs_record_unlink_dir(trans, old_dir, old_inode, 1); | 9476 | btrfs_record_unlink_dir(trans, old_dir, old_inode, 1); |
@@ -9499,7 +9495,7 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
9499 | 9495 | ||
9500 | if (new_inode) { | 9496 | if (new_inode) { |
9501 | inode_inc_iversion(new_inode); | 9497 | inode_inc_iversion(new_inode); |
9502 | new_inode->i_ctime = CURRENT_TIME; | 9498 | new_inode->i_ctime = current_fs_time(new_inode->i_sb); |
9503 | if (unlikely(btrfs_ino(new_inode) == | 9499 | if (unlikely(btrfs_ino(new_inode) == |
9504 | BTRFS_EMPTY_SUBVOL_DIR_OBJECTID)) { | 9500 | BTRFS_EMPTY_SUBVOL_DIR_OBJECTID)) { |
9505 | root_objectid = BTRFS_I(new_inode)->location.objectid; | 9501 | root_objectid = BTRFS_I(new_inode)->location.objectid; |
@@ -9977,7 +9973,7 @@ next: | |||
9977 | *alloc_hint = ins.objectid + ins.offset; | 9973 | *alloc_hint = ins.objectid + ins.offset; |
9978 | 9974 | ||
9979 | inode_inc_iversion(inode); | 9975 | inode_inc_iversion(inode); |
9980 | inode->i_ctime = CURRENT_TIME; | 9976 | inode->i_ctime = current_fs_time(inode->i_sb); |
9981 | BTRFS_I(inode)->flags |= BTRFS_INODE_PREALLOC; | 9977 | BTRFS_I(inode)->flags |= BTRFS_INODE_PREALLOC; |
9982 | if (!(mode & FALLOC_FL_KEEP_SIZE) && | 9978 | if (!(mode & FALLOC_FL_KEEP_SIZE) && |
9983 | (actual_len > inode->i_size) && | 9979 | (actual_len > inode->i_size) && |
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index a0be375702f9..6110d8c386a5 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c | |||
@@ -347,7 +347,7 @@ static int btrfs_ioctl_setflags(struct file *file, void __user *arg) | |||
347 | 347 | ||
348 | btrfs_update_iflags(inode); | 348 | btrfs_update_iflags(inode); |
349 | inode_inc_iversion(inode); | 349 | inode_inc_iversion(inode); |
350 | inode->i_ctime = CURRENT_TIME; | 350 | inode->i_ctime = current_fs_time(inode->i_sb); |
351 | ret = btrfs_update_inode(trans, root, inode); | 351 | ret = btrfs_update_inode(trans, root, inode); |
352 | 352 | ||
353 | btrfs_end_transaction(trans, root); | 353 | btrfs_end_transaction(trans, root); |
@@ -443,7 +443,7 @@ static noinline int create_subvol(struct inode *dir, | |||
443 | struct btrfs_root *root = BTRFS_I(dir)->root; | 443 | struct btrfs_root *root = BTRFS_I(dir)->root; |
444 | struct btrfs_root *new_root; | 444 | struct btrfs_root *new_root; |
445 | struct btrfs_block_rsv block_rsv; | 445 | struct btrfs_block_rsv block_rsv; |
446 | struct timespec cur_time = CURRENT_TIME; | 446 | struct timespec cur_time = current_fs_time(dir->i_sb); |
447 | struct inode *inode; | 447 | struct inode *inode; |
448 | int ret; | 448 | int ret; |
449 | int err; | 449 | int err; |
@@ -844,10 +844,6 @@ static noinline int btrfs_mksubvol(struct path *parent, | |||
844 | if (IS_ERR(dentry)) | 844 | if (IS_ERR(dentry)) |
845 | goto out_unlock; | 845 | goto out_unlock; |
846 | 846 | ||
847 | error = -EEXIST; | ||
848 | if (d_really_is_positive(dentry)) | ||
849 | goto out_dput; | ||
850 | |||
851 | error = btrfs_may_create(dir, dentry); | 847 | error = btrfs_may_create(dir, dentry); |
852 | if (error) | 848 | if (error) |
853 | goto out_dput; | 849 | goto out_dput; |
@@ -3217,7 +3213,7 @@ static int clone_finish_inode_update(struct btrfs_trans_handle *trans, | |||
3217 | 3213 | ||
3218 | inode_inc_iversion(inode); | 3214 | inode_inc_iversion(inode); |
3219 | if (!no_time_update) | 3215 | if (!no_time_update) |
3220 | inode->i_mtime = inode->i_ctime = CURRENT_TIME; | 3216 | inode->i_mtime = inode->i_ctime = current_fs_time(inode->i_sb); |
3221 | /* | 3217 | /* |
3222 | * We round up to the block size at eof when determining which | 3218 | * We round up to the block size at eof when determining which |
3223 | * extents to clone above, but shouldn't round up the file size. | 3219 | * extents to clone above, but shouldn't round up the file size. |
@@ -5032,7 +5028,7 @@ static long _btrfs_ioctl_set_received_subvol(struct file *file, | |||
5032 | struct btrfs_root *root = BTRFS_I(inode)->root; | 5028 | struct btrfs_root *root = BTRFS_I(inode)->root; |
5033 | struct btrfs_root_item *root_item = &root->root_item; | 5029 | struct btrfs_root_item *root_item = &root->root_item; |
5034 | struct btrfs_trans_handle *trans; | 5030 | struct btrfs_trans_handle *trans; |
5035 | struct timespec ct = CURRENT_TIME; | 5031 | struct timespec ct = current_fs_time(inode->i_sb); |
5036 | int ret = 0; | 5032 | int ret = 0; |
5037 | int received_uuid_changed; | 5033 | int received_uuid_changed; |
5038 | 5034 | ||
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c index 8c27292ea9ea..988eb1513aa5 100644 --- a/fs/btrfs/ordered-data.c +++ b/fs/btrfs/ordered-data.c | |||
@@ -1114,6 +1114,5 @@ int __init ordered_data_init(void) | |||
1114 | 1114 | ||
1115 | void ordered_data_exit(void) | 1115 | void ordered_data_exit(void) |
1116 | { | 1116 | { |
1117 | if (btrfs_ordered_extent_cache) | 1117 | kmem_cache_destroy(btrfs_ordered_extent_cache); |
1118 | kmem_cache_destroy(btrfs_ordered_extent_cache); | ||
1119 | } | 1118 | } |
diff --git a/fs/btrfs/root-tree.c b/fs/btrfs/root-tree.c index 7cf8509deda7..a25f3b21491b 100644 --- a/fs/btrfs/root-tree.c +++ b/fs/btrfs/root-tree.c | |||
@@ -488,7 +488,7 @@ void btrfs_update_root_times(struct btrfs_trans_handle *trans, | |||
488 | struct btrfs_root *root) | 488 | struct btrfs_root *root) |
489 | { | 489 | { |
490 | struct btrfs_root_item *item = &root->root_item; | 490 | struct btrfs_root_item *item = &root->root_item; |
491 | struct timespec ct = CURRENT_TIME; | 491 | struct timespec ct = current_fs_time(root->fs_info->sb); |
492 | 492 | ||
493 | spin_lock(&root->root_item_lock); | 493 | spin_lock(&root->root_item_lock); |
494 | btrfs_set_root_ctransid(item, trans->transid); | 494 | btrfs_set_root_ctransid(item, trans->transid); |
diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c index e9e95ef0644f..43885e51b882 100644 --- a/fs/btrfs/transaction.c +++ b/fs/btrfs/transaction.c | |||
@@ -1335,7 +1335,7 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans, | |||
1335 | struct dentry *dentry; | 1335 | struct dentry *dentry; |
1336 | struct extent_buffer *tmp; | 1336 | struct extent_buffer *tmp; |
1337 | struct extent_buffer *old; | 1337 | struct extent_buffer *old; |
1338 | struct timespec cur_time = CURRENT_TIME; | 1338 | struct timespec cur_time; |
1339 | int ret = 0; | 1339 | int ret = 0; |
1340 | u64 to_reserve = 0; | 1340 | u64 to_reserve = 0; |
1341 | u64 index = 0; | 1341 | u64 index = 0; |
@@ -1385,6 +1385,8 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans, | |||
1385 | parent_root = BTRFS_I(parent_inode)->root; | 1385 | parent_root = BTRFS_I(parent_inode)->root; |
1386 | record_root_in_trans(trans, parent_root); | 1386 | record_root_in_trans(trans, parent_root); |
1387 | 1387 | ||
1388 | cur_time = current_fs_time(parent_inode->i_sb); | ||
1389 | |||
1388 | /* | 1390 | /* |
1389 | * insert the directory item | 1391 | * insert the directory item |
1390 | */ | 1392 | */ |
@@ -1527,7 +1529,8 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans, | |||
1527 | 1529 | ||
1528 | btrfs_i_size_write(parent_inode, parent_inode->i_size + | 1530 | btrfs_i_size_write(parent_inode, parent_inode->i_size + |
1529 | dentry->d_name.len * 2); | 1531 | dentry->d_name.len * 2); |
1530 | parent_inode->i_mtime = parent_inode->i_ctime = CURRENT_TIME; | 1532 | parent_inode->i_mtime = parent_inode->i_ctime = |
1533 | current_fs_time(parent_inode->i_sb); | ||
1531 | ret = btrfs_update_inode_fallback(trans, parent_root, parent_inode); | 1534 | ret = btrfs_update_inode_fallback(trans, parent_root, parent_inode); |
1532 | if (ret) { | 1535 | if (ret) { |
1533 | btrfs_abort_transaction(trans, root, ret); | 1536 | btrfs_abort_transaction(trans, root, ret); |
diff --git a/fs/btrfs/xattr.c b/fs/btrfs/xattr.c index 6c68d6356197..f2a20d52b9db 100644 --- a/fs/btrfs/xattr.c +++ b/fs/btrfs/xattr.c | |||
@@ -249,7 +249,7 @@ int __btrfs_setxattr(struct btrfs_trans_handle *trans, | |||
249 | goto out; | 249 | goto out; |
250 | 250 | ||
251 | inode_inc_iversion(inode); | 251 | inode_inc_iversion(inode); |
252 | inode->i_ctime = CURRENT_TIME; | 252 | inode->i_ctime = current_fs_time(inode->i_sb); |
253 | set_bit(BTRFS_INODE_COPY_EVERYTHING, &BTRFS_I(inode)->runtime_flags); | 253 | set_bit(BTRFS_INODE_COPY_EVERYTHING, &BTRFS_I(inode)->runtime_flags); |
254 | ret = btrfs_update_inode(trans, root, inode); | 254 | ret = btrfs_update_inode(trans, root, inode); |
255 | BUG_ON(ret); | 255 | BUG_ON(ret); |