Received: by 2002:ac2:464d:0:0:0:0:0 with SMTP id s13csp3666617lfo; Mon, 23 May 2022 10:48:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJywyRkZqPDYDgs20gehqsf7K9pCJmFAkOZqXBlNmkilBcESVO5Asaw8xaZbMSJX7C6MbVqF X-Received: by 2002:a63:fc04:0:b0:3f6:4b2b:9d36 with SMTP id j4-20020a63fc04000000b003f64b2b9d36mr18647674pgi.206.1653328114208; Mon, 23 May 2022 10:48:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1653328114; cv=none; d=google.com; s=arc-20160816; b=gsnUoV9IQBT5PEqhbxkDBLBCVbqYZr/So0I9Kcy5x49VIm8ZLkGjzLDV2yV/5Yorqd WHrYALGI3AjFknpdPm8VocQeJSvuvePTuFJlxqjDrO9YYRNcCMRiu2/fKCi5jFSVu2DJ lbdAVDToZU5Og1ByZ2i7fKYW1XodHX5L+NbSZVBbFM4aty3zAg5rAOu2AFMgcQSKxD7l NzGvaNXyDC9bJUIchq3svAMkgVX/nMTebuEY0+FJyK47Ao585emRVcbRWU6WQxdhptHo p+E6KikoFOw08DCFqG7eZOKgSs/9BzmqGUZWgHl54KgPof4WeiW74Fab+rtZF3/QTmx3 NLnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=bLWi5ImLPl9gH3fkKAOaLJlwyzS0CvPNvr2OLbURRV4=; b=d8XM71NH6erIIm8s/0zKMggK/FwtniHMY6llJgfaT2ZBpN+FfUmldzxd/SvshyNAUf 2cJA4ZAep+/twLL6dJeP9bsNC6LPSxbdp1Cnt2t0Kyl1KePs0R+flgApdr0X78knVbSf QQXcTMLdimEKAE1GknD8Kgb12rkloBuDC56CwGyAedTvLL4n61idcD7Aas0ASsKky3xn fBqIjsunltQaf/JfZwI0Gua3wpbGT3vTmI4icj6MayItsphpk6MNNqgO3w6vnksVB5yo Z36EJDs7IbZ0FUGB+bu0iY5xyOGgt1FYYcwicU1IMNsuf0Yk2v7OAgnFQGqpkQpAMFXr KE2Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=K9mOm1ST; 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=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id cu3-20020a056a00448300b005184f87b172si12251525pfb.268.2022.05.23.10.48.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 May 2022 10:48:34 -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=@linuxfoundation.org header.s=korg header.b=K9mOm1ST; 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=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 20EAEA7E3B; Mon, 23 May 2022 10:48:08 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241495AbiEWRoQ (ORCPT + 99 others); Mon, 23 May 2022 13:44:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38722 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242769AbiEWR2A (ORCPT ); Mon, 23 May 2022 13:28:00 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 844758BD22; Mon, 23 May 2022 10:24:21 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 6A45B60B2C; Mon, 23 May 2022 17:24:11 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4E52DC385A9; Mon, 23 May 2022 17:24:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1653326650; bh=airJjC0MifQFzoS4q1rZ//RwvnXOzHIIfM7a9aMTeuc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=K9mOm1STWeXypyvlaSvCCvlRnP6k4PLhNENz97L5hhU2pjlE3EjQ7LqTxGHAJUS0K 3XaqLteUQXFCCU4wvqyoJ9/bwvcupNNP5duQQnAQXF0M+UvVPOgdpG3+ISu93E58b3 yWlsZ+Egu/i2YDVmW2WAfMq6gKxJo8rxXfyEitBY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Andreas Gruenbacher , Bob Peterson , Sasha Levin Subject: [PATCH 5.17 017/158] gfs2: cancel timed-out glock requests Date: Mon, 23 May 2022 19:02:54 +0200 Message-Id: <20220523165833.486564248@linuxfoundation.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220523165830.581652127@linuxfoundation.org> References: <20220523165830.581652127@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.6 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=unavailable 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 From: Andreas Gruenbacher [ Upstream commit 1fc05c8d8426d4085a219c23f8855c4aaf9e3ffb ] The gfs2 evict code tries to upgrade the iopen glock from SH to EX. If the attempt to upgrade times out, gfs2 needs to tell dlm to cancel the lock request or it can deadlock. We also need to wake up the process waiting for the lock when dlm sends its AST back to gfs2. Signed-off-by: Andreas Gruenbacher Signed-off-by: Bob Peterson Signed-off-by: Sasha Levin --- fs/gfs2/glock.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c index 6b23399eaee0..d368d9a2e8f0 100644 --- a/fs/gfs2/glock.c +++ b/fs/gfs2/glock.c @@ -669,6 +669,8 @@ static void finish_xmote(struct gfs2_glock *gl, unsigned int ret) /* Check for state != intended state */ if (unlikely(state != gl->gl_target)) { + if (gh && (ret & LM_OUT_CANCELED)) + gfs2_holder_wake(gh); if (gh && !test_bit(GLF_DEMOTE_IN_PROGRESS, &gl->gl_flags)) { /* move to back of queue and try next entry */ if (ret & LM_OUT_CANCELED) { @@ -1691,6 +1693,14 @@ void gfs2_glock_dq(struct gfs2_holder *gh) struct gfs2_glock *gl = gh->gh_gl; spin_lock(&gl->gl_lockref.lock); + if (list_is_first(&gh->gh_list, &gl->gl_holders) && + !test_bit(HIF_HOLDER, &gh->gh_iflags)) { + spin_unlock(&gl->gl_lockref.lock); + gl->gl_name.ln_sbd->sd_lockstruct.ls_ops->lm_cancel(gl); + wait_on_bit(&gh->gh_iflags, HIF_WAIT, TASK_UNINTERRUPTIBLE); + spin_lock(&gl->gl_lockref.lock); + } + __gfs2_glock_dq(gh); spin_unlock(&gl->gl_lockref.lock); } -- 2.35.1