diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index a2df4690b000d852efdb680d6f75510f36d407dd..509112da6118de97476f381e4d691f66812b75a4 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -700,8 +700,12 @@ static noinline int submit_compressed_extents(struct inode *inode, async_extent->nr_pages = 0; async_extent->pages = NULL; - if (ret == -ENOSPC) + if (ret == -ENOSPC) { + unlock_extent(io_tree, async_extent->start, + async_extent->start + + async_extent->ram_size - 1); goto retry; + } goto out_free; }