Btrfs: don't map extent buffer if path->skip_locking is set
authorJosef Bacik <josef@redhat.com>
Wed, 8 Jun 2011 18:36:54 +0000 (14:36 -0400)
committerJosef Bacik <josef@redhat.com>
Thu, 9 Jun 2011 14:12:07 +0000 (10:12 -0400)
commit25b8b936ed44814a5ce6fc3b2a21401f33cd56f6
tree3f95ff0f54340bf63885e1d38766cf52a05d3029
parentf6a398298d34af66ec3a2d82a44a4dbc5277357d
Btrfs: don't map extent buffer if path->skip_locking is set

Arne's scrub stuff exposed a problem with mapping the extent buffer in
reada_for_search.  He searches the commit root with multiple threads and with
skip_locking set, so we can race and overwrite node->map_token since node isn't
locked.  So fix this so that we only map the extent buffer if we don't already
have a map_token and skip_locking isn't set.  Without this patch scrub would
panic almost immediately, with the patch it doesn't panic anymore.  Thanks,

Reported-by: Arne Jansen <sensille@gmx.net>
Signed-off-by: Josef Bacik <josef@redhat.com>
fs/btrfs/ctree.c