@@ -1402,13 +1402,17 @@ int btrfs_reserve_data_bytes(struct btrfs_fs_info *fs_info, u64 bytes,
struct btrfs_space_info *data_sinfo = fs_info->data_sinfo;
u64 used;
int ret = -ENOSPC;
+ bool pending_tickets;
ASSERT(!current->journal_info || flush != BTRFS_RESERVE_FLUSH_DATA);
spin_lock(&data_sinfo->lock);
used = btrfs_space_info_used(data_sinfo, true);
+ pending_tickets = !list_empty(&data_sinfo->tickets) ||
+ !list_empty(&data_sinfo->priority_tickets);
- if (used + bytes > data_sinfo->total_bytes) {
+ if (pending_tickets ||
+ used + bytes > data_sinfo->total_bytes) {
struct reserve_ticket ticket;
init_waitqueue_head(&ticket.wait);