From patchwork Sun Oct 2 18:19:55 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 12996935 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DA779C433FE for ; Sun, 2 Oct 2022 18:28:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230080AbiJBS2n (ORCPT ); Sun, 2 Oct 2022 14:28:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55472 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230075AbiJBS2l (ORCPT ); Sun, 2 Oct 2022 14:28:41 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F00DA3BC69 for ; Sun, 2 Oct 2022 11:28:40 -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 8C7EC60EFD for ; Sun, 2 Oct 2022 18:28:40 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EC161C433C1; Sun, 2 Oct 2022 18:28:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1664735320; bh=GGD5ZPc54hxoJliGWzUhRXYx1XixpjDTNV9pdH7e374=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=Is8P+fLLjn2kUhKsisAG69MvXo359lA/l5VrXPJQv+uC+g7r1m0Y47jQo5JbRtdGW cRmr0u22i4QhwDRW6O/O2e9Qd8RHov4OzUG0UBB5HGhdsHPGtaGybGjjJNidNXwQ8B szdYTksPzzV8nBu+LDMM8nS17DWJg8+BMUZEJnhcIxDYWF4RwA6fvQukBu7z4VzqOZ ChhA2kmEFnM0vOFgMoEYtPfxThFKR5B9fV/W/Da6zv9IbSK4+xR4wL9dFRG3kAegfZ iPB5QHW14i1OeLUSRZjlIdWiZ/IIMwHYnCargJqm3e6NxWvJRLZJA850HpKnzomqx+ 2JjKAk1737stw== Subject: [PATCH 1/4] xfs: return EINTR when a fatal signal terminates scrub From: "Darrick J. Wong" To: djwong@kernel.org Cc: linux-xfs@vger.kernel.org Date: Sun, 02 Oct 2022 11:19:55 -0700 Message-ID: <166473479526.1083393.2162985380296325620.stgit@magnolia> In-Reply-To: <166473479505.1083393.7049311366138032768.stgit@magnolia> References: <166473479505.1083393.7049311366138032768.stgit@magnolia> User-Agent: StGit/0.19 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Darrick J. Wong If the program calling online fsck is terminated with a fatal signal, bail out to userspace by returning EINTR, not EAGAIN. EAGAIN is used by scrubbers to indicate that we should try again with more resources locked, and not to indicate that the operation was cancelled. The miswiring is mostly harmless, but it shows up in the trace data. Signed-off-by: Darrick J. Wong Reviewed-by: Dave Chinner --- fs/xfs/scrub/common.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/xfs/scrub/common.h b/fs/xfs/scrub/common.h index 454145db10e7..b73648d81d23 100644 --- a/fs/xfs/scrub/common.h +++ b/fs/xfs/scrub/common.h @@ -25,7 +25,7 @@ xchk_should_terminate( if (fatal_signal_pending(current)) { if (*error == 0) - *error = -EAGAIN; + *error = -EINTR; return true; } return false; From patchwork Sun Oct 2 18:19:55 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 12996936 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E14D9C433FE for ; Sun, 2 Oct 2022 18:28:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230075AbiJBS2x (ORCPT ); Sun, 2 Oct 2022 14:28:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55544 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229697AbiJBS2w (ORCPT ); Sun, 2 Oct 2022 14:28:52 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 895233C14A for ; Sun, 2 Oct 2022 11:28:51 -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 269CD60EFD for ; Sun, 2 Oct 2022 18:28:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 867C5C433D6; Sun, 2 Oct 2022 18:28:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1664735330; bh=2r8RzCXwg7940uv6Ay3siyLNgL51/fij53Fqzj6SR+c=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=ZJB84KWZGg+A0iD6HJMymTmNHcvvOY5TsI+3nZiPptpc1Z4mri0/y1TNLYPs1VGx0 tdWX1JmfIclLhBYOooNxWb4LlfkjaOZJRhSTDW7EVUtMN3P20YMQAtf6Rh0qtGLjFA baXbT98ZSsQIrpQXMnJE6cOC9m+jWmTU0q2S5LmxZ2oZe5EEgK35XDmIDRBYo3L+RD QmLB4BM67uPdaCC6biE8+Ta30Sp3yD3XynsR41ivrJqtPdanZO+NUd0t83844ApwcH V4l2yucMI3ouSNJjaTkVunrTIFraDOxZ5J9WTSHw0pZJMjX25JTB8nsHf9YM5yvrbH 39uRmrOIVFUgA== Subject: [PATCH 2/4] xfs: fix return code when fatal signal encountered during dquot scrub From: "Darrick J. Wong" To: djwong@kernel.org Cc: linux-xfs@vger.kernel.org Date: Sun, 02 Oct 2022 11:19:55 -0700 Message-ID: <166473479539.1083393.2779029008005184154.stgit@magnolia> In-Reply-To: <166473479505.1083393.7049311366138032768.stgit@magnolia> References: <166473479505.1083393.7049311366138032768.stgit@magnolia> User-Agent: StGit/0.19 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Darrick J. Wong If the scrub process is sent a fatal signal while we're checking dquots, the predicate for this will set the error code to -EINTR. Don't then squash that into -ECANCELED, because the wrong errno turns up in the trace output. Signed-off-by: Darrick J. Wong Reviewed-by: Dave Chinner --- fs/xfs/scrub/quota.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/xfs/scrub/quota.c b/fs/xfs/scrub/quota.c index 21b4c9006859..0b643ff32b22 100644 --- a/fs/xfs/scrub/quota.c +++ b/fs/xfs/scrub/quota.c @@ -84,7 +84,7 @@ xchk_quota_item( int error = 0; if (xchk_should_terminate(sc, &error)) - return -ECANCELED; + return error; /* * Except for the root dquot, the actual dquot we got must either have From patchwork Sun Oct 2 18:19:55 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 12996937 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B7989C433F5 for ; Sun, 2 Oct 2022 18:29:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230079AbiJBS3F (ORCPT ); Sun, 2 Oct 2022 14:29:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55598 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229697AbiJBS3F (ORCPT ); Sun, 2 Oct 2022 14:29:05 -0400 Received: from sin.source.kernel.org (sin.source.kernel.org [145.40.73.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6DDF93BC69 for ; Sun, 2 Oct 2022 11:29:04 -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 sin.source.kernel.org (Postfix) with ESMTPS id C8954CE0A24 for ; Sun, 2 Oct 2022 18:29:02 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1F106C433D6; Sun, 2 Oct 2022 18:29:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1664735341; bh=SNJJyXa16c20+r8aBen3gt44QumV8R9/SRDIG+//sYg=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=KWTsEG6kQmQjUwVGKVednpN7rm1ElwXL33orwFvlQaL5CX8CjdTXAmroXE5GZPqz4 TaIwXSriB+Vry1MtJE87hRgBas0CbZ635Zv4nqLgl+suk0ZuwZHkmXxQNY1WQOtBOY jRRLSs2M3EQhv4q6CnE2US6PrIg6CTZPK1gVG1eBSRLNGyVrAXvQkWkjUbBTtaprVM W+EFNmKPNsxl+75o88r6hnwJYVrT5n4K8tSlPq6xmsEExtNv6KYdNNLgOAJtszFv3C pzxSPoNujDEP+xthbMhrPfRR/9qMZkW2bLvXfxEPR8LX/uTSBOA4vbwZtVP2AB9vdB Du0J4JfPpjYHQ== Subject: [PATCH 3/4] xfs: don't retry repairs harder when EAGAIN is returned From: "Darrick J. Wong" To: djwong@kernel.org Cc: linux-xfs@vger.kernel.org Date: Sun, 02 Oct 2022 11:19:55 -0700 Message-ID: <166473479553.1083393.17251197615976928220.stgit@magnolia> In-Reply-To: <166473479505.1083393.7049311366138032768.stgit@magnolia> References: <166473479505.1083393.7049311366138032768.stgit@magnolia> User-Agent: StGit/0.19 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Darrick J. Wong Repair functions will not return EAGAIN -- if they were not able to obtain resources, they should return EDEADLOCK (like the rest of online fsck) to signal that we need to grab all the resources and try again. Hence we don't need to deal with this case except as a debugging assertion. Signed-off-by: Darrick J. Wong Reviewed-by: Dave Chinner --- fs/xfs/scrub/repair.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/fs/xfs/scrub/repair.c b/fs/xfs/scrub/repair.c index 92c661b98892..f6c4cb013346 100644 --- a/fs/xfs/scrub/repair.c +++ b/fs/xfs/scrub/repair.c @@ -61,7 +61,6 @@ xrep_attempt( sc->flags |= XREP_ALREADY_FIXED; return -EAGAIN; case -EDEADLOCK: - case -EAGAIN: /* Tell the caller to try again having grabbed all the locks. */ if (!(sc->flags & XCHK_TRY_HARDER)) { sc->flags |= XCHK_TRY_HARDER; @@ -73,6 +72,10 @@ xrep_attempt( * so report back to userspace. */ return -EFSCORRUPTED; + case -EAGAIN: + /* Repair functions should return EDEADLOCK, not EAGAIN. */ + ASSERT(0); + fallthrough; default: return error; } From patchwork Sun Oct 2 18:19:55 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Darrick J. Wong" X-Patchwork-Id: 12996938 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8A605C433FE for ; Sun, 2 Oct 2022 18:29:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230083AbiJBS3Q (ORCPT ); Sun, 2 Oct 2022 14:29:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55638 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229697AbiJBS3P (ORCPT ); Sun, 2 Oct 2022 14:29:15 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2E3F93BC69 for ; Sun, 2 Oct 2022 11:29:14 -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 ams.source.kernel.org (Postfix) with ESMTPS id DD7E0B80D86 for ; Sun, 2 Oct 2022 18:29:12 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9DBD0C433D6; Sun, 2 Oct 2022 18:29:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1664735351; bh=rWscwKe9O9wWhic5H7sbCAmsRx6CIzNUizl4pLbEMvI=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=Pa3+pAXne1NEU4SSPZqXRF5qfExINxR4pemUTiQ8YtgqlZqFUdt5RWVuUP16DElbn XipN90w80x357grdeleBiEmfN40wIvbW+25ESfdz+izZlNajd/rJAVAqntToWF67Js U9GoGtjY2YFgXnRyCTU/DWl4rRXAf2ywcBMJDtNqn2vUk5OFwe3lmkM4oWIJDZ4HA4 IAGB6NLeYaJ+TB4u/gTExPWaqkZwRMsi+NJZu00THZ/IH/xZag+pD/Zc1VzwoHOj8y hh9qsfyqxcSyiPuM2k50iCvOx4xRm7CNk5DriXa3QfPgt+xm49p8lGNPyx7rc9lpbh UP2HZVQw4jS+A== Subject: [PATCH 4/4] xfs: don't return -EFSCORRUPTED from repair when resources cannot be grabbed From: "Darrick J. Wong" To: djwong@kernel.org Cc: linux-xfs@vger.kernel.org Date: Sun, 02 Oct 2022 11:19:55 -0700 Message-ID: <166473479567.1083393.7668585289114718845.stgit@magnolia> In-Reply-To: <166473479505.1083393.7049311366138032768.stgit@magnolia> References: <166473479505.1083393.7049311366138032768.stgit@magnolia> User-Agent: StGit/0.19 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org From: Darrick J. Wong If we tried to repair something but the repair failed with -EDEADLOCK or -EAGAIN, that means that the repair function couldn't grab some resource it needed and wants us to try again. If we try again (with TRY_HARDER) but still can't do it, exit back to userspace, since xfs_scrub_metadata requires xrep_attempt to return -EAGAIN. This makes the return value diagnostics look less weird, and fixes a wart that remains from very early in the repair implementation. Signed-off-by: Darrick J. Wong --- fs/xfs/scrub/repair.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fs/xfs/scrub/repair.c b/fs/xfs/scrub/repair.c index f6c4cb013346..34fc0dc5f200 100644 --- a/fs/xfs/scrub/repair.c +++ b/fs/xfs/scrub/repair.c @@ -69,9 +69,9 @@ xrep_attempt( /* * We tried harder but still couldn't grab all the resources * we needed to fix it. The corruption has not been fixed, - * so report back to userspace. + * so exit to userspace. */ - return -EFSCORRUPTED; + return 0; case -EAGAIN: /* Repair functions should return EDEADLOCK, not EAGAIN. */ ASSERT(0);