Received: by 2002:a05:6358:51dd:b0:131:369:b2a3 with SMTP id 29csp1168453rwl; Thu, 10 Aug 2023 07:25:07 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFKoKFGfA1hYLgPqiY3/f46vSAIdahNtjMciQ2w208uanwBMwHot9AhUH64wDR3/NXUIzlQ X-Received: by 2002:a17:902:bd4c:b0:1b7:e49f:39 with SMTP id b12-20020a170902bd4c00b001b7e49f0039mr2084885plx.60.1691677507206; Thu, 10 Aug 2023 07:25:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691677507; cv=none; d=google.com; s=arc-20160816; b=EHHy8tI+TLHQRJrf9qovorL/dM8wfxrxmoZhWTchH6GOTUnSbRjTboo62qno87S5mU iU/uxwJgSFzeEUZRaWSnTf994xr2glTNeyNjpjoEq1J2did/LJ8WJsyfOvA2vNZv50Va J37XJAs2TAsccJXMYPZpOFHkG5uvbAyAkwmrwCfVO7hZ4qHBJeRZFad/vg2Sm68VN+si F7MRh8kljamfIJP0WaGplCua5oSB2zPq4g5KXjyeBmjLtag0UHoRPH4XR1sdt4vfWKa2 JZM4ir4YmeSQ+Fsfuk6FXiWU4q6WiqRE0nbr2ybutbODwTKJ2I06kBUcielJxd9x5WqK aLzg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:reply-to:message-id:subject:cc:to:from:date :dkim-signature:dkim-signature; bh=HDvuR+NQ1qVplfsadcGTsAoWABUbAgZ+gfxz0UYjYE4=; fh=fFGfHbRxmXdrBv3R20QZMSx2lCk/74euC4a7nAoSC1E=; b=yyvY3dVTLNF7yoGmmshSQqM/K9CR1FgIKMYBndJhqdXlkazrhz3SRuvh236nsPfgGF h0grpZavCS85Rj9jED0p33Nkjp70olTWiJuOIZNUuq4hpX37jGodMmk9lEb2U39H8OB5 31jqOVzFZWv5M5ikt0WiYnVD1nsQ0Ha4ZJgBhs+Q3ioDIk0H1F2wk23xH7lPpRzyixGr sTT6Jheh9zKU0gaEYQGnV/dejfUcIbrBQPv/h/L30Akn1XCnNMGaZTyEQbZdUHrFDbUm QWMIZ1UJ6N2uXp8/YEIRjMy4lZgr491yYvgZxvRO2Z5rdhO5LeAysEAkRTeqXLXrnj2r pKjQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.cz header.s=susede2_rsa header.b=b6plZceF; dkim=neutral (no key) header.i=@suse.cz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id p13-20020a170902ebcd00b001bbb39c68b2si1570379plg.178.2023.08.10.07.24.54; Thu, 10 Aug 2023 07:25:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.cz header.s=susede2_rsa header.b=b6plZceF; dkim=neutral (no key) header.i=@suse.cz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232475AbjHJML3 (ORCPT + 99 others); Thu, 10 Aug 2023 08:11:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57756 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231610AbjHJML2 (ORCPT ); Thu, 10 Aug 2023 08:11:28 -0400 Received: from smtp-out1.suse.de (smtp-out1.suse.de [IPv6:2001:67c:2178:6::1c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 048501728; Thu, 10 Aug 2023 05:11:28 -0700 (PDT) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id B870C2186C; Thu, 10 Aug 2023 12:11:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1691669486; h=from:from:reply-to:reply-to: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=HDvuR+NQ1qVplfsadcGTsAoWABUbAgZ+gfxz0UYjYE4=; b=b6plZceF5/buApDDE3RkclzMQbAiTSuZ+uJbuQqy7JTyjTuO+XW0+D0YHAwBoPL8re6798 Z908KolgfD8Dugl4TutOhf1KEU4z8Tdh3/z7jGblqPkQOFiXcHh/i1BRnV5aPccynbArCH Lkc0sHMVTSyd/zH+iHs0jxLA7qbSDGs= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1691669486; h=from:from:reply-to:reply-to: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=HDvuR+NQ1qVplfsadcGTsAoWABUbAgZ+gfxz0UYjYE4=; b=neSpOmR1eK+Ef2Jj6ogOofwnaHdwG9++SWxZR7ASgEgK2MDb2+Q86Hp/HjauKJDm0L0sJ/ My7uwMNMfRjAXqAg== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 74D1D138E0; Thu, 10 Aug 2023 12:11:26 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id UOFxG+7T1GTxSAAAMHmgww (envelope-from ); Thu, 10 Aug 2023 12:11:26 +0000 Date: Thu, 10 Aug 2023 14:05:01 +0200 From: David Sterba To: xiaoshoukui Cc: josef@toxicpanda.com, dsterba@suse.com, clm@fb.com, linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org, xiaoshoukui Subject: Re: [PATCH] btrfs: fix return value when race occur between balance and cancel/pause Message-ID: <20230810120501.GA2420@suse.cz> Reply-To: dsterba@suse.cz References: <20230810034810.23934-1-xiaoshoukui@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230810034810.23934-1-xiaoshoukui@gmail.com> User-Agent: Mutt/1.5.23.1-rc1 (2014-03-12) X-Spam-Status: No, score=-1.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_SOFTFAIL 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 On Wed, Aug 09, 2023 at 11:48:10PM -0400, xiaoshoukui wrote: > Issue a pause or cancel IOCTL request after judging that there is no > pause or cancel request on the path of __btrfs_balance to return 0, > which will mislead the user that the pause or cancel requests are > successful.In fact, the balance request has not been paused or canceled. > > On that race condition, a non-zero errno should be returned to the user. > > Signed-off-by: xiaoshoukui > --- > fs/btrfs/fs.h | 6 ++++++ > fs/btrfs/volumes.c | 14 +++++++++----- > 2 files changed, 15 insertions(+), 5 deletions(-) > > diff --git a/fs/btrfs/fs.h b/fs/btrfs/fs.h > index 203d2a267828..c27def881922 100644 > --- a/fs/btrfs/fs.h > +++ b/fs/btrfs/fs.h > @@ -93,6 +93,12 @@ enum { > */ > BTRFS_FS_BALANCE_RUNNING, > > + /* Indicate that balance has been paused. */ > + BTRFS_FS_BALANCE_PAUSED, > + > + /* Indicate that balance has been canceled. */ > + BTRFS_FS_BALANCE_CANCELED, I don't like that the status is tracked in several bits like that, in addition to the already complicated locking and state transitions of restarted balance. I think this is a hint that some things can be simplified or combined together, though it could be difficult