Commit 9d6cb1b0 authored by Johannes Thumshirn's avatar Johannes Thumshirn Committed by David Sterba

btrfs: raid56: reduce indentation in lock_stripe_add

In lock_stripe_add() we're traversing the stripe hash list and check if
the current list element's raid_map equals is equal to the raid bio's
raid_map. If both are equal we continue processing.

If we'd check for inequality instead of equality we can reduce one level
of indentation.
Reviewed-by: default avatarNikolay Borisov <nborisov@suse.com>
Signed-off-by: default avatarJohannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 1d2e7c7c
...@@ -682,62 +682,59 @@ static noinline int lock_stripe_add(struct btrfs_raid_bio *rbio) ...@@ -682,62 +682,59 @@ static noinline int lock_stripe_add(struct btrfs_raid_bio *rbio)
spin_lock_irqsave(&h->lock, flags); spin_lock_irqsave(&h->lock, flags);
list_for_each_entry(cur, &h->hash_list, hash_list) { list_for_each_entry(cur, &h->hash_list, hash_list) {
if (cur->bbio->raid_map[0] == rbio->bbio->raid_map[0]) { if (cur->bbio->raid_map[0] != rbio->bbio->raid_map[0])
spin_lock(&cur->bio_list_lock); continue;
/* can we steal this cached rbio's pages? */
if (bio_list_empty(&cur->bio_list) &&
list_empty(&cur->plug_list) &&
test_bit(RBIO_CACHE_BIT, &cur->flags) &&
!test_bit(RBIO_RMW_LOCKED_BIT, &cur->flags)) {
list_del_init(&cur->hash_list);
refcount_dec(&cur->refs);
steal_rbio(cur, rbio);
cache_drop = cur;
spin_unlock(&cur->bio_list_lock);
goto lockit; spin_lock(&cur->bio_list_lock);
}
/* can we merge into the lock owner? */ /* Can we steal this cached rbio's pages? */
if (rbio_can_merge(cur, rbio)) { if (bio_list_empty(&cur->bio_list) &&
merge_rbio(cur, rbio); list_empty(&cur->plug_list) &&
spin_unlock(&cur->bio_list_lock); test_bit(RBIO_CACHE_BIT, &cur->flags) &&
freeit = rbio; !test_bit(RBIO_RMW_LOCKED_BIT, &cur->flags)) {
ret = 1; list_del_init(&cur->hash_list);
goto out; refcount_dec(&cur->refs);
}
steal_rbio(cur, rbio);
cache_drop = cur;
spin_unlock(&cur->bio_list_lock);
/* goto lockit;
* we couldn't merge with the running }
* rbio, see if we can merge with the
* pending ones. We don't have to
* check for rmw_locked because there
* is no way they are inside finish_rmw
* right now
*/
list_for_each_entry(pending, &cur->plug_list,
plug_list) {
if (rbio_can_merge(pending, rbio)) {
merge_rbio(pending, rbio);
spin_unlock(&cur->bio_list_lock);
freeit = rbio;
ret = 1;
goto out;
}
}
/* no merging, put us on the tail of the plug list, /* Can we merge into the lock owner? */
* our rbio will be started with the currently if (rbio_can_merge(cur, rbio)) {
* running rbio unlocks merge_rbio(cur, rbio);
*/
list_add_tail(&rbio->plug_list, &cur->plug_list);
spin_unlock(&cur->bio_list_lock); spin_unlock(&cur->bio_list_lock);
freeit = rbio;
ret = 1; ret = 1;
goto out; goto out;
} }
/*
* We couldn't merge with the running rbio, see if we can merge
* with the pending ones. We don't have to check for rmw_locked
* because there is no way they are inside finish_rmw right now
*/
list_for_each_entry(pending, &cur->plug_list, plug_list) {
if (rbio_can_merge(pending, rbio)) {
merge_rbio(pending, rbio);
spin_unlock(&cur->bio_list_lock);
freeit = rbio;
ret = 1;
goto out;
}
}
/*
* No merging, put us on the tail of the plug list, our rbio
* will be started with the currently running rbio unlocks
*/
list_add_tail(&rbio->plug_list, &cur->plug_list);
spin_unlock(&cur->bio_list_lock);
ret = 1;
goto out;
} }
lockit: lockit:
refcount_inc(&rbio->refs); refcount_inc(&rbio->refs);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment