1 ext4: allow a NULL argument to ext4_ext_drop_refs()
3 Teach ext4_ext_drop_refs() to accept a NULL argument, much like
4 kfree(). This allows us to drop a lot of checks to make sure path is
5 non-NULL before calling ext4_ext_drop_refs().
7 Signed-off-by: Theodore Ts'o <tytso@mit.edu>
9 fs/ext4/extents.c | 48 ++++++++++++++++++------------------------------
10 fs/ext4/extents_status.c | 6 ++----
11 fs/ext4/migrate.c | 6 ++----
12 fs/ext4/move_extent.c | 20 +++++++-------------
13 4 files changed, 29 insertions(+), 51 deletions(-)
15 diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
16 index 62aa508..17a1f6f 100644
17 --- a/fs/ext4/extents.c
18 +++ b/fs/ext4/extents.c
19 @@ -701,9 +701,11 @@ static void ext4_ext_show_move(struct inode *inode, struct ext4_ext_path *path,
21 void ext4_ext_drop_refs(struct ext4_ext_path *path)
23 - int depth = path->p_depth;
29 + depth = path->p_depth;
30 for (i = 0; i <= depth; i++, path++)
33 @@ -2117,10 +2119,8 @@ merge:
34 err = ext4_ext_dirty(handle, inode, path + path->p_depth);
38 - ext4_ext_drop_refs(npath);
41 + ext4_ext_drop_refs(npath);
46 @@ -2275,11 +2275,8 @@ static int ext4_fill_fiemap_extents(struct inode *inode,
47 block = es.es_lblk + es.es_len;
51 - ext4_ext_drop_refs(path);
55 + ext4_ext_drop_refs(path);
60 @@ -3010,11 +3007,9 @@ again:
65 - ext4_ext_drop_refs(path);
69 + ext4_ext_drop_refs(path);
74 ext4_journal_stop(handle);
75 @@ -4617,10 +4612,8 @@ out:
76 map->m_pblk = newblock;
77 map->m_len = allocated;
80 - ext4_ext_drop_refs(path);
83 + ext4_ext_drop_refs(path);
86 trace_ext4_ext_map_blocks_exit(inode, flags, map,
87 err ? err : allocated);
88 @@ -5692,16 +5685,11 @@ ext4_swap_extents(handle_t *handle, struct inode *inode1,
93 - ext4_ext_drop_refs(path1);
98 - ext4_ext_drop_refs(path2);
102 + ext4_ext_drop_refs(path1);
104 + ext4_ext_drop_refs(path2);
106 + path1 = path2 = NULL;
108 return replaced_count;
110 diff --git a/fs/ext4/extents_status.c b/fs/ext4/extents_status.c
111 index 0b7e28e..8ffff96 100644
112 --- a/fs/ext4/extents_status.c
113 +++ b/fs/ext4/extents_status.c
114 @@ -499,10 +499,8 @@ static void ext4_es_insert_extent_ext_check(struct inode *inode,
119 - ext4_ext_drop_refs(path);
122 + ext4_ext_drop_refs(path);
126 static void ext4_es_insert_extent_ind_check(struct inode *inode,
127 diff --git a/fs/ext4/migrate.c b/fs/ext4/migrate.c
128 index aff7bdf..061c300 100644
129 --- a/fs/ext4/migrate.c
130 +++ b/fs/ext4/migrate.c
131 @@ -84,10 +84,8 @@ static int finish_range(handle_t *handle, struct inode *inode,
132 retval = ext4_ext_insert_extent(handle, inode, &path, &newext, 0);
134 up_write((&EXT4_I(inode)->i_data_sem));
136 - ext4_ext_drop_refs(path);
139 + ext4_ext_drop_refs(path);
141 lb->first_pblock = 0;
144 diff --git a/fs/ext4/move_extent.c b/fs/ext4/move_extent.c
145 index 5e2465a..a34c076 100644
146 --- a/fs/ext4/move_extent.c
147 +++ b/fs/ext4/move_extent.c
148 @@ -113,10 +113,8 @@ mext_check_coverage(struct inode *inode, ext4_lblk_t from, ext4_lblk_t count,
153 - ext4_ext_drop_refs(path);
156 + ext4_ext_drop_refs(path);
161 @@ -711,11 +709,9 @@ ext4_move_extents(struct file *o_filp, struct file *d_filp, __u64 orig_blk,
166 - ext4_ext_drop_refs(path);
170 + ext4_ext_drop_refs(path);
174 *moved_len = o_start - orig_blk;
175 if (*moved_len > len)
176 @@ -727,10 +723,8 @@ out:
177 ext4_discard_preallocations(donor_inode);
181 - ext4_ext_drop_refs(path);
184 + ext4_ext_drop_refs(path);
186 ext4_double_up_write_data_sem(orig_inode, donor_inode);
187 ext4_inode_resume_unlocked_dio(orig_inode);
188 ext4_inode_resume_unlocked_dio(donor_inode);