Message ID | 20160526070125.6850-1-quwenruo@cn.fujitsu.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 9424864..3639b44 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c @@ -6243,6 +6243,7 @@ void btrfs_dec_block_group_reservations(struct btrfs_fs_info *fs_info, ASSERT(bg); if (atomic_dec_and_test(&bg->reservations)) wake_up_atomic_t(&bg->reservations); + WARN_ON(atomic_read(&bg->reservations) < 0) btrfs_put_block_group(bg); }
Since the we are using atomic and wait queue for block group reservations and it's not controlled by lockdep, we need pay much more attention to any modification to write path. Or it's very easy to under flow block group reservations and cause lock balance. Add warning on for dec_block_group_reservations() if the reservations is already minus. Although such warning doesn't always catch the directly caller, but should provides good enough clue for later debug. Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> --- fs/btrfs/extent-tree.c | 1 + 1 file changed, 1 insertion(+)