From patchwork Fri Dec 18 14:17:01 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geliang Tang X-Patchwork-Id: 7884521 Return-Path: X-Original-To: patchwork-linux-btrfs@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 9C4D19F32E for ; Fri, 18 Dec 2015 14:17:42 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id B7D6A2045A for ; Fri, 18 Dec 2015 14:17:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D73352043C for ; Fri, 18 Dec 2015 14:17:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753494AbbLRORi (ORCPT ); Fri, 18 Dec 2015 09:17:38 -0500 Received: from m50-132.163.com ([123.125.50.132]:48260 "EHLO m50-132.163.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751195AbbLRORg (ORCPT ); Fri, 18 Dec 2015 09:17:36 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id; bh=qE+D+tyILEn6UzcE42 zGLcuS2c3L9o09ZWdAvMmlbys=; b=Oip+5F1WNsCNAKRKViyFslmAtCEQIamlbw kOXm64Qg5rHodhNt+HjePVGk8CjFq/4takHr8upvvX9pWxwAK3ddru+hn60nkRVV nwcCJwszkj4mnDaqK2kpQaGMX8oBEoz4vXfyC4r8KhyauKTD0Idd7ED4aRJpz0TE 2yLcbJWdE= Received: from localhost (unknown [116.77.150.30]) by smtp2 (Coremail) with SMTP id DNGowEApvlJlFXRWzB2CAA--.5286S3; Fri, 18 Dec 2015 22:17:10 +0800 (CST) From: Geliang Tang To: Chris Mason , Josef Bacik , David Sterba Cc: Geliang Tang , linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/3] btrfs: use list_for_each_entry* in backref.c Date: Fri, 18 Dec 2015 22:17:01 +0800 Message-Id: <617786fdb0eb4f593bdc6efffe040ce6ebcb1cc5.1450447999.git.geliangtang@163.com> X-Mailer: git-send-email 2.5.0 In-Reply-To: <8a5a49f737a7eed984c8f92f4684d9a6b761f2f2.1450447999.git.geliangtang@163.com> References: <8a5a49f737a7eed984c8f92f4684d9a6b761f2f2.1450447999.git.geliangtang@163.com> In-Reply-To: References: <8a5a49f737a7eed984c8f92f4684d9a6b761f2f2.1450447999.git.geliangtang@163.com> X-CM-TRANSID: DNGowEApvlJlFXRWzB2CAA--.5286S3 X-Coremail-Antispam: 1Uf129KBjvJXoW7CrWxuw1UKw1fGF1xGF17Wrg_yoW8ArW8pF 43AryagF48Jr1rWa98Gw4YkrySqryDGa4jk3y0kas3Jr1Uta17XFyay3WYqFyrtrZ8ury5 ZrZ8KF1Yy3y7CrJanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07U4HqcUUUUU= X-Originating-IP: [116.77.150.30] X-CM-SenderInfo: 5jhoxtpqjwt0rj6rljoofrz/1tbiGQfUmVXlQAFeQwAAs- Sender: linux-btrfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-btrfs@vger.kernel.org X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, FREEMAIL_FROM,RCVD_IN_DNSWL_HI,T_DKIM_INVALID,T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Use list_for_each_entry*() to simplify the code. Signed-off-by: Geliang Tang --- fs/btrfs/backref.c | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/fs/btrfs/backref.c b/fs/btrfs/backref.c index d453d62..fa6f346 100644 --- a/fs/btrfs/backref.c +++ b/fs/btrfs/backref.c @@ -520,13 +520,10 @@ static inline int ref_for_same_block(struct __prelim_ref *ref1, static int __add_missing_keys(struct btrfs_fs_info *fs_info, struct list_head *head) { - struct list_head *pos; + struct __prelim_ref *ref; struct extent_buffer *eb; - list_for_each(pos, head) { - struct __prelim_ref *ref; - ref = list_entry(pos, struct __prelim_ref, list); - + list_for_each_entry(ref, head, list) { if (ref->parent) continue; if (ref->key_for_search.type) @@ -563,23 +560,16 @@ static int __add_missing_keys(struct btrfs_fs_info *fs_info, */ static void __merge_refs(struct list_head *head, int mode) { - struct list_head *pos1; + struct __prelim_ref *ref1; - list_for_each(pos1, head) { - struct list_head *n2; - struct list_head *pos2; - struct __prelim_ref *ref1; + list_for_each_entry(ref1, head, list) { + struct __prelim_ref *ref2, *tmp; - ref1 = list_entry(pos1, struct __prelim_ref, list); - - for (pos2 = pos1->next, n2 = pos2->next; pos2 != head; - pos2 = n2, n2 = pos2->next) { - struct __prelim_ref *ref2; + ref2 = list_next_entry(ref1, list); + list_for_each_entry_safe_from(ref2, tmp, head, list) { struct __prelim_ref *xchg; struct extent_inode_elem *eie; - ref2 = list_entry(pos2, struct __prelim_ref, list); - if (!ref_for_same_block(ref1, ref2)) continue; if (mode == 1) {