aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFilipe Manana <fdmanana@gmail.com>2014-02-12 10:07:53 -0500
committerJosef Bacik <jbacik@fb.com>2014-03-10 15:16:46 -0400
commit85fdfdf6118dc00c2fcea8907815e48c98ee6c1d (patch)
tree7ad6d55dcded1a9d872f99f673c2f5ac326a5c2e
parent6103fb43fbc6d1caa78f26a1d0aa3d1a4525cea5 (diff)
Btrfs: cleanup delayed-ref.c:find_ref_head()
The argument last wasn't used, all callers supplied a NULL value for it. Also removed unnecessary intermediate storage of the result of key comparisons. Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com> Signed-off-by: Josef Bacik <jbacik@fb.com>
-rw-r--r--fs/btrfs/delayed-ref.c24
1 files changed, 6 insertions, 18 deletions
diff --git a/fs/btrfs/delayed-ref.c b/fs/btrfs/delayed-ref.c
index 56cdfe988d69..2502ba5a3ac0 100644
--- a/fs/btrfs/delayed-ref.c
+++ b/fs/btrfs/delayed-ref.c
@@ -199,42 +199,30 @@ static struct btrfs_delayed_ref_head *htree_insert(struct rb_root *root,
199 */ 199 */
200static struct btrfs_delayed_ref_head * 200static struct btrfs_delayed_ref_head *
201find_ref_head(struct rb_root *root, u64 bytenr, 201find_ref_head(struct rb_root *root, u64 bytenr,
202 struct btrfs_delayed_ref_head **last, int return_bigger) 202 int return_bigger)
203{ 203{
204 struct rb_node *n; 204 struct rb_node *n;
205 struct btrfs_delayed_ref_head *entry; 205 struct btrfs_delayed_ref_head *entry;
206 int cmp = 0;
207 206
208 n = root->rb_node; 207 n = root->rb_node;
209 entry = NULL; 208 entry = NULL;
210 while (n) { 209 while (n) {
211 entry = rb_entry(n, struct btrfs_delayed_ref_head, href_node); 210 entry = rb_entry(n, struct btrfs_delayed_ref_head, href_node);
212 if (last)
213 *last = entry;
214 211
215 if (bytenr < entry->node.bytenr) 212 if (bytenr < entry->node.bytenr)
216 cmp = -1;
217 else if (bytenr > entry->node.bytenr)
218 cmp = 1;
219 else
220 cmp = 0;
221
222 if (cmp < 0)
223 n = n->rb_left; 213 n = n->rb_left;
224 else if (cmp > 0) 214 else if (bytenr > entry->node.bytenr)
225 n = n->rb_right; 215 n = n->rb_right;
226 else 216 else
227 return entry; 217 return entry;
228 } 218 }
229 if (entry && return_bigger) { 219 if (entry && return_bigger) {
230 if (cmp > 0) { 220 if (bytenr > entry->node.bytenr) {
231 n = rb_next(&entry->href_node); 221 n = rb_next(&entry->href_node);
232 if (!n) 222 if (!n)
233 n = rb_first(root); 223 n = rb_first(root);
234 entry = rb_entry(n, struct btrfs_delayed_ref_head, 224 entry = rb_entry(n, struct btrfs_delayed_ref_head,
235 href_node); 225 href_node);
236 if (last)
237 *last = entry;
238 return entry; 226 return entry;
239 } 227 }
240 return entry; 228 return entry;
@@ -414,12 +402,12 @@ btrfs_select_ref_head(struct btrfs_trans_handle *trans)
414 402
415again: 403again:
416 start = delayed_refs->run_delayed_start; 404 start = delayed_refs->run_delayed_start;
417 head = find_ref_head(&delayed_refs->href_root, start, NULL, 1); 405 head = find_ref_head(&delayed_refs->href_root, start, 1);
418 if (!head && !loop) { 406 if (!head && !loop) {
419 delayed_refs->run_delayed_start = 0; 407 delayed_refs->run_delayed_start = 0;
420 start = 0; 408 start = 0;
421 loop = true; 409 loop = true;
422 head = find_ref_head(&delayed_refs->href_root, start, NULL, 1); 410 head = find_ref_head(&delayed_refs->href_root, start, 1);
423 if (!head) 411 if (!head)
424 return NULL; 412 return NULL;
425 } else if (!head && loop) { 413 } else if (!head && loop) {
@@ -897,7 +885,7 @@ btrfs_find_delayed_ref_head(struct btrfs_trans_handle *trans, u64 bytenr)
897 struct btrfs_delayed_ref_root *delayed_refs; 885 struct btrfs_delayed_ref_root *delayed_refs;
898 886
899 delayed_refs = &trans->transaction->delayed_refs; 887 delayed_refs = &trans->transaction->delayed_refs;
900 return find_ref_head(&delayed_refs->href_root, bytenr, NULL, 0); 888 return find_ref_head(&delayed_refs->href_root, bytenr, 0);
901} 889}
902 890
903void btrfs_delayed_ref_exit(void) 891void btrfs_delayed_ref_exit(void)