From patchwork Thu May 26 07:06:08 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Qu Wenruo X-Patchwork-Id: 9136713 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id F0DF5607D3 for ; Thu, 26 May 2016 07:06:15 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E52EA27EE9 for ; Thu, 26 May 2016 07:06:15 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DA0F628221; Thu, 26 May 2016 07:06:15 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6B7F327EE9 for ; Thu, 26 May 2016 07:06:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752850AbcEZHGM (ORCPT ); Thu, 26 May 2016 03:06:12 -0400 Received: from cn.fujitsu.com ([222.73.24.84]:8178 "EHLO song.cn.fujitsu.com" rhost-flags-OK-FAIL-OK-OK) by vger.kernel.org with ESMTP id S1750854AbcEZHGL (ORCPT ); Thu, 26 May 2016 03:06:11 -0400 X-IronPort-AV: E=Sophos;i="5.20,367,1444665600"; d="scan'208";a="502798" Received: from unknown (HELO cn.fujitsu.com) ([10.167.250.3]) by song.cn.fujitsu.com with ESMTP; 26 May 2016 15:06:09 +0800 Received: from adam-work.localdomain (unknown [10.167.226.34]) by cn.fujitsu.com (Postfix) with ESMTP id 76B114056403; Thu, 26 May 2016 15:06:08 +0800 (CST) From: Qu Wenruo To: linux-btrfs@vger.kernel.org Cc: fdmanana@kernel.org, fdmanana@suse.com Subject: [PATCH v2] btrfs: Add debug warning for new block group reservations Date: Thu, 26 May 2016 15:06:08 +0800 Message-Id: <20160526070608.10837-1-quwenruo@cn.fujitsu.com> X-Mailer: git-send-email 2.8.3 MIME-Version: 1.0 X-yoursite-MailScanner-ID: 76B114056403.AA170 X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: quwenruo@cn.fujitsu.com Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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 --- v2: Fix compile error Change to WARN_ON_ONCE(), as when it underflows, it will always under flow --- fs/btrfs/extent-tree.c | 1 + 1 file changed, 1 insertion(+) diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 9424864..47ce96b 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_ONCE(atomic_read(&bg->reservations) < 0); btrfs_put_block_group(bg); }