• Josef Bacik's avatar
    Btrfs: do not hold the write_lock on the extent tree while logging · ff44c6e3
    Josef Bacik authored
    Dave Sterba pointed out a sleeping while atomic bug while doing fsync.  This
    is because I'm an idiot and didn't realize that rwlock's were spin locks, so
    we've been holding this thing while doing allocations and such which is not
    good.  This patch fixes this by dropping the write lock before we do
    anything heavy and re-acquire it when it is done.  We also need to take a
    ref on the em's in case their corresponding pages are evicted and mark them
    as being logged so that releasepage does not remove them and doesn't remove
    them from our local list.  Thanks,
    Reported-by: default avatarDave Sterba <dave@jikos.cz>
    Signed-off-by: default avatarJosef Bacik <jbacik@fusionio.com>
    ff44c6e3
extent_map.c 10.2 KB