• J
    Btrfs: set no_trans_join after trying to expand the transaction · ed0ca140
    Josef Bacik 提交于
    We can lockup if we try to allow new writers join the transaction and we have
    flushoncommit set or have a pending snapshot.  This is because we set
    no_trans_join and then loop around and try to wait for ordered extents again.
    The problem is the ordered endio stuff needs to join the transaction, which it
    can't do because no_trans_join is set.  So instead wait until after this loop to
    set no_trans_join and then make sure to wait for num_writers == 1 in case
    anybody got started in between us exiting the loop and setting no_trans_join.
    This could easily be reproduced by mounting -o flushoncommit and running xfstest
    13.  It cannot be reproduced with this patch.  Thanks,
    Reported-by: NJim Schutt <jaschut@sandia.gov>
    Signed-off-by: NJosef Bacik <josef@redhat.com>
    ed0ca140
transaction.c 35.5 KB