Btrfs: avoid sleeping in verify_parent_transid while atomic
verify_parent_transid needs to lock the extent range to make
sure no IO is underway, and so it can safely clear the
uptodate bits if our checks fail.
But, a few callers are using it with spinlocks held. Most
of the time, the generation numbers are going to match, and
we don't want to switch to a blocking lock just for the error
case. This adds an atomic flag to verify_parent_transid,
and changes it to return EAGAIN if it needs to block to
properly verifiy things.
Signed-off-by:
Chris Mason <chris.mason@oracle.com>
Showing
- fs/btrfs/ctree.c 17 additions, 9 deletionsfs/btrfs/ctree.c
- fs/btrfs/disk-io.c 13 additions, 5 deletionsfs/btrfs/disk-io.c
- fs/btrfs/disk-io.h 2 additions, 1 deletionfs/btrfs/disk-io.h
- fs/btrfs/extent-tree.c 1 addition, 1 deletionfs/btrfs/extent-tree.c
- fs/btrfs/tree-log.c 1 addition, 1 deletionfs/btrfs/tree-log.c
Loading
Please register or sign in to comment