Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp3478386pxb; Mon, 4 Apr 2022 18:15:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx5CF6O0yY13+gRXSz4rd5Vqwe83keWzzUE3zRYZVksBGpdmqYpSHNMgG5GF0hUKywn1b8I X-Received: by 2002:a62:38d1:0:b0:4fa:80ad:bf5e with SMTP id f200-20020a6238d1000000b004fa80adbf5emr1011306pfa.69.1649121338005; Mon, 04 Apr 2022 18:15:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649121338; cv=none; d=google.com; s=arc-20160816; b=p4oU4kmEw7IhWuo+JozZFaxlqmP+DdVhhrponHfIpMU3YgGyP3EcpbLJOiMbBDK/iD Tx4i2GgC+nFNfA9vt21/ge9F9g7lhyTBRS4gF+JlKR81Kmiz9lBWgRlXqVVt3YI6YeS7 cmRCo9pDI5dVAvzxLAYRH7pUDT/AtEqQgYRBjcxsuCWKozVmr4YU/vi8iC6Z60lFhxp4 +ufAwN2p3vMxqAoiGc6Qe2F7H2cycfsgC54/LlCUhSK3OGh1rKPXbc/G4Mh3aHxW1Rty TLhq/L6j5YuORTp0Z5gi6TCuO3H4oBqzJV+0kvQI8zctVkyxQ1nXLRvczZiDZRzvX7GM U2iw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=UTGtn1rG1oHnPf4jWqsoBHgFGHb3FmEXtAlPLct00TQ=; b=P9IT3/up1hNVuowZdY6m3vI5nlBAARI3lVHt77lSxNf0ZhuZiB5UZPZrIeTFRK1tzg SYTRdKINznvsaVdqknKEiDPxjKopFpwBmOnv60pfokfKSEJranICC9lYN5YNWjHIWIHx Of7PmTEMIaKiv0PvK2x5MiAZxIHzr8AqPTwx4FCQz2ocGDQ51PiTshKMPau5VsbwW4rb A8aGS6xHZFYw4xlf3cHyu/IvhYWEUVkXrLbmRTmYLw00xuHkSrBGbdqnZv5RXtHNI/vl hqDHKe/mxl5c1N2C8hzXBAkCzltFMj7oLa4TntFkZOjIgi8l9BbvOHCjLsUl5/lQ1J59 OcPA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=R4aFSWoT; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id j29-20020a637a5d000000b003816043eef3si11730429pgn.232.2022.04.04.18.15.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Apr 2022 18:15:37 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=R4aFSWoT; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id DA92B1AC73B; Mon, 4 Apr 2022 17:18:19 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1358909AbiDDPBQ (ORCPT + 99 others); Mon, 4 Apr 2022 11:01:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39250 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378348AbiDDPBF (ORCPT ); Mon, 4 Apr 2022 11:01:05 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 7EBBCDEFB for ; Mon, 4 Apr 2022 07:59:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1649084347; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=UTGtn1rG1oHnPf4jWqsoBHgFGHb3FmEXtAlPLct00TQ=; b=R4aFSWoTn5iF1iXytUEKQtyHi0xcf4p7I3W1zLatQa4NWktC7Kh0rLN0lOID3tubZenvQa aSNFc9mQbEmZVZ3P6vfAXubXwmbIgc1wdSaOKteDuRffxwvKtI6zPRl4zOaf/Fd9LmqX3/ 3TCzCT6nbtXT8MByGpT0VGNGNXSNAmM= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-154-TSa6o067PxWz42LA3ERiOg-1; Mon, 04 Apr 2022 10:59:06 -0400 X-MC-Unique: TSa6o067PxWz42LA3ERiOg-1 Received: by mail-wm1-f70.google.com with SMTP id r206-20020a1c44d7000000b0038e6a1b25f1so3232876wma.7 for ; Mon, 04 Apr 2022 07:59:06 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=UTGtn1rG1oHnPf4jWqsoBHgFGHb3FmEXtAlPLct00TQ=; b=F+qtBf4Fyf1qDnWCrfXhL1kEcHo40YQlwkHWBVFc+5+YhEGqbSB95krLZD2xRYP7IU +xDNK7sWZcdngJ51fcJu7ab/0ezySoBGPS28NKfn1gIK5Ng0v4j/APhJNhIBcsMZ6wdw lnqaBy6prF59KMU23oufyCIHbhF6E5tpAnde8tfFI+t7quSwVfSlFJHsARg0ldvnOVh3 dzSMDBSzxnfIn5tZdw/MdNFPkWBNeMxnCWlRIUUx0nBvtekZ0jkjB21c3GfZGsRd2Ylf 3KbEtU9FhQVsgJSv9gm0em6keQwYzj7ST1jDHmBdoIQ20LZsC2Kl5lPeACUuJPGt8AH7 OY2Q== X-Gm-Message-State: AOAM532GFBD11RlT0WmIZqMgVUhnAJx0rBgKhjdRcDIVrzV1qQcBRvK3 iRZZ8KdHce8f3yaZ9SFsuFuiZPH8NhHuczsnSr9ggPR542h06ExLg4mb7wLtY8HbblsrknMqxGB R2AwtrOhq+GjcLgUKVjRkpzaBHoReJQY1GJ8tc6qu X-Received: by 2002:a7b:cbc1:0:b0:38e:7c42:fe38 with SMTP id n1-20020a7bcbc1000000b0038e7c42fe38mr972392wmi.51.1649084345328; Mon, 04 Apr 2022 07:59:05 -0700 (PDT) X-Received: by 2002:a7b:cbc1:0:b0:38e:7c42:fe38 with SMTP id n1-20020a7bcbc1000000b0038e7c42fe38mr972374wmi.51.1649084345107; Mon, 04 Apr 2022 07:59:05 -0700 (PDT) MIME-Version: 1.0 References: <20220331223857.902911-1-jakobkoschel@gmail.com> In-Reply-To: <20220331223857.902911-1-jakobkoschel@gmail.com> From: Andreas Gruenbacher Date: Mon, 4 Apr 2022 16:58:53 +0200 Message-ID: Subject: Re: [PATCH 1/2] gfs2: remove usage of list iterator variable for list_for_each_entry_continue() To: Jakob Koschel Cc: Bob Peterson , cluster-devel , LKML , Mike Rapoport , Brian Johannesmeyer , Cristiano Giuffrida , "Bos, H.J." Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Jakob, On Fri, Apr 1, 2022 at 12:40 AM Jakob Koschel wrote: > In preparation to limiting the scope of a list iterator to the list > traversal loop, use a dedicated pointer to iterate through the list [1]. > > Since that variable should not be used past the loop iteration, a > separate variable is used to 'remember the current location within the > loop'. > > To either continue iterating from that position or start a new > iteration (if the previous iteration was complete) list_prepare_entry() > is used. I can see how accessing an iterator variable past a for_each_entry loop will cause problems when it ends up pointing at the list head. Here, the iterator variables are not accessed outside the loops at all, though. So this patch is ugly, and it doesn't even help. > Link: https://lore.kernel.org/all/CAHk-=wgRr_D8CB-D9Kg-c=EHreAsk5SqXPwr9Y7k9sA6cWXJ6w@mail.gmail.com/ [1] > Signed-off-by: Jakob Koschel > --- > fs/gfs2/lops.c | 16 ++++++++++++---- > 1 file changed, 12 insertions(+), 4 deletions(-) > > diff --git a/fs/gfs2/lops.c b/fs/gfs2/lops.c > index 6ba51cbb94cf..74e6d05cee2c 100644 > --- a/fs/gfs2/lops.c > +++ b/fs/gfs2/lops.c > @@ -653,7 +653,7 @@ static void gfs2_before_commit(struct gfs2_sbd *sdp, unsigned int limit, > bool is_databuf) > { > struct gfs2_log_descriptor *ld; > - struct gfs2_bufdata *bd1 = NULL, *bd2; > + struct gfs2_bufdata *bd1 = NULL, *bd2, *tmp1, *tmp2; > struct page *page; > unsigned int num; > unsigned n; > @@ -661,7 +661,7 @@ static void gfs2_before_commit(struct gfs2_sbd *sdp, unsigned int limit, > > gfs2_log_lock(sdp); > list_sort(NULL, blist, blocknr_cmp); > - bd1 = bd2 = list_prepare_entry(bd1, blist, bd_list); > + tmp1 = tmp2 = list_prepare_entry(bd1, blist, bd_list); We should actually be using list_entry() here, not list_prepare_entry(). > while(total) { > num = total; > if (total > limit) > @@ -675,14 +675,18 @@ static void gfs2_before_commit(struct gfs2_sbd *sdp, unsigned int limit, > ptr = (__be64 *)(ld + 1); > > n = 0; > + bd1 = list_prepare_entry(tmp1, blist, bd_list); > + tmp1 = NULL; > list_for_each_entry_continue(bd1, blist, bd_list) { > *ptr++ = cpu_to_be64(bd1->bd_bh->b_blocknr); > if (is_databuf) { > gfs2_check_magic(bd1->bd_bh); > *ptr++ = cpu_to_be64(buffer_escaped(bd1->bd_bh) ? 1 : 0); > } > - if (++n >= num) > + if (++n >= num) { > + tmp1 = bd1; > break; > + } > } > > gfs2_log_unlock(sdp); > @@ -690,6 +694,8 @@ static void gfs2_before_commit(struct gfs2_sbd *sdp, unsigned int limit, > gfs2_log_lock(sdp); > > n = 0; > + bd2 = list_prepare_entry(tmp2, blist, bd_list); > + tmp2 = NULL; > list_for_each_entry_continue(bd2, blist, bd_list) { > get_bh(bd2->bd_bh); > gfs2_log_unlock(sdp); > @@ -712,8 +718,10 @@ static void gfs2_before_commit(struct gfs2_sbd *sdp, unsigned int limit, > gfs2_log_write_bh(sdp, bd2->bd_bh); > } > gfs2_log_lock(sdp); > - if (++n >= num) > + if (++n >= num) { > + tmp2 = bd2; > break; > + } > } > > BUG_ON(total < num); > > base-commit: f82da161ea75dc4db21b2499e4b1facd36dab275 > -- > 2.25.1 > Thanks, Andreas