linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Qu Wenruo <wqu@suse.com>
To: dsterba@suse.cz
Cc: linux-btrfs@vger.kernel.org
Subject: Re: [PATCH 2/2] btrfs-progs: move inode cache removal to rescue group
Date: Tue, 10 Oct 2023 07:20:58 +1030	[thread overview]
Message-ID: <9f582ea7-d75b-43f8-9381-649c6bbbf622@suse.com> (raw)
In-Reply-To: <20231009142314.GP28758@twin.jikos.cz>



On 2023/10/10 00:53, David Sterba wrote:
> On Mon, Oct 09, 2023 at 03:17:00PM +1030, Qu Wenruo wrote:
>> The option "--clear-ino-cache" is not really that suitable for "btrfs
>> check" group.
>>
>> Let's move it to "btrfs rescue" group to fix those small hiccups, just
>> like the existing "btrfs rescue fix-device-size" command.
>>
>> For now, "btrfs check --clear-ino-cache" would still work, with one
>> extra warning referring to "btrfs rescue clear-ino-cache".
>> This is mostly to reduce the surprise, and keep script users (I doubt if
>> there is any though) happy for now.
>>
>> In the next or two releases, we would fully remove the support in "btrfs
>> check" group.
>>
>> Another small change is, in the documents, we refer to the feature as
>> "inode map", which doesn't match with the mount option documents.
>> Since we're here, unify them to "inode cache" feature.
>>
>> Issue: #669
>> Signed-off-by: Qu Wenruo <wqu@suse.com>
> 
> Please don't forget to add the new command to btrfs-completion. I've
> noticed 2 more were missing so it's done in a separate commit.
> 
>> ---
>>   Documentation/btrfs-check.rst  |  5 +++-
>>   Documentation/btrfs-rescue.rst |  6 ++++
>>   check/main.c                   |  1 +
>>   cmds/rescue.c                  | 52 ++++++++++++++++++++++++++++++++++
>>   4 files changed, 63 insertions(+), 1 deletion(-)
>>
>> diff --git a/Documentation/btrfs-check.rst b/Documentation/btrfs-check.rst
>> index cf8de9fcc888..3c5f96f1951f 100644
>> --- a/Documentation/btrfs-check.rst
>> +++ b/Documentation/btrfs-check.rst
>> @@ -84,8 +84,11 @@ SAFE OR ADVISORY OPTIONS
>>           See also the *clear_cache* mount option.
>>   
>>   --clear-ino-cache
>> -        remove leftover items pertaining to the deprecated inode map feature
>> +        remove leftover items pertaining to the deprecated `inode cache` feature
>>   
>> +	.. warning::
>> +		This option is deprecated, please use `btrfs rescue clear-ino-cache`
>> +		instead, this option would be removed in the future eventually.
>>   
>>   DANGEROUS OPTIONS
>>   -----------------
>> diff --git a/Documentation/btrfs-rescue.rst b/Documentation/btrfs-rescue.rst
>> index 39d250cefa48..e99aa4ad8a7e 100644
>> --- a/Documentation/btrfs-rescue.rst
>> +++ b/Documentation/btrfs-rescue.rst
>> @@ -50,6 +50,12 @@ fix-device-size <device>
>>   
>>                   WARNING: CPU: 3 PID: 439 at fs/btrfs/ctree.h:1559 btrfs_update_device+0x1c5/0x1d0 [btrfs]
>>   
>> +clear-ino-cache <device>
>> +        Remove leftover items pertaining to the deprecated `inode cache` feature.
>> +
>> +	The `inode cache` feature (enabled by mount option "inode_cache") is
>> +	fully removed in v5.11 kernel.
>> +
>>   clear-uuid-tree <device>
>>           Clear UUID tree, so that kernel can re-generate it at next read-write
>>           mount.
>> diff --git a/check/main.c b/check/main.c
>> index 1174939fd6eb..7760511b85d9 100644
>> --- a/check/main.c
>> +++ b/check/main.c
>> @@ -10242,6 +10242,7 @@ static int cmd_check(const struct cmd_struct *cmd, int argc, char **argv)
>>   	}
>>   
>>   	if (clear_ino_cache) {
>> +		warning("--clear-ino-cache option is deprecated, please use \"btrfs rescue clear-ino-cache\" instead.")
> 
> No "." at the end of the text and the ";" is missing, does not
> compile.

My bad, I noticed the warning is missing thus added it in the last minute...

Do I need to resend or you have already fixed it during merge?

Thanks,
Qu
> 
>>   		ret = clear_ino_cache_items(gfs_info);
>>   		err = ret;
>>   		goto close_out;
>> diff --git a/cmds/rescue.c b/cmds/rescue.c
>> index be6f5016d5a9..38f4e1423434 100644
>> --- a/cmds/rescue.c
>> +++ b/cmds/rescue.c
>> @@ -34,6 +34,7 @@
>>   #include "common/utils.h"
>>   #include "common/help.h"
>>   #include "common/open-utils.h"
>> +#include "common/clear-cache.h"
>>   #include "cmds/commands.h"
>>   #include "cmds/rescue.h"
>>   
>> @@ -405,6 +406,56 @@ out:
>>   }
>>   static DEFINE_SIMPLE_COMMAND(rescue_clear_uuid_tree, "clear-uuid-tree");
>>   
>> +static const char * const cmd_rescue_clear_ino_cache_usage[] = {
>> +	"btrfs rescue clear-ino-cache <device>",
>> +	"remove leftover items pertaining to the deprecated inode cache feature",
>> +	NULL
>> +};
>> +
>> +static int cmd_rescue_clear_ino_cache(const struct cmd_struct *cmd,
>> +				      int argc, char **argv)
>> +{
>> +	struct open_ctree_args oca = { 0 };
>> +	struct btrfs_fs_info *fs_info;
>> +	char *devname;
>> +	int ret;
>> +
>> +	clean_args_no_options(cmd, argc, argv);
>> +
>> +	if (check_argc_exact(argc, 2))
>> +		return 1;
>> +
>> +	devname = argv[optind];
>> +	ret = check_mounted(devname);
>> +	if (ret < 0) {
>> +		errno = -ret;
>> +		error("could not check mount status: %m");
>> +		goto out;
>> +	} else if (ret) {
>> +		error("%s is currently mounted", devname);
>> +		ret = -EBUSY;
>> +		goto out;
>> +	}
>> +	oca.filename = devname;
>> +	oca.flags = OPEN_CTREE_WRITES;
>> +	fs_info = open_ctree_fs_info(&oca);
>> +	if (!fs_info) {
>> +		error("could not open btrfs");
>> +		ret = -EIO;
>> +		goto out;
>> +	}
>> +	ret = clear_ino_cache_items(fs_info);
>> +	if (ret < 0) {
>> +		errno = -ret;
>> +		error("failed to clear ino cache: %m");
>> +	} else {
>> +		pr_verbose(LOG_DEFAULT, "Successfully cleared ino cache");
>> +	}
>> +out:
>> +	return !!ret;
>> +}
>> +static DEFINE_SIMPLE_COMMAND(rescue_clear_ino_cache, "clear-ino-cache");
>> +
>>   static const char rescue_cmd_group_info[] =
>>   "toolbox for specific rescue operations";
>>   
>> @@ -416,6 +467,7 @@ static const struct cmd_group rescue_cmd_group = {
>>   		&cmd_struct_rescue_fix_device_size,
>>   		&cmd_struct_rescue_create_control_device,
>>   		&cmd_struct_rescue_clear_uuid_tree,
>> +		&cmd_struct_rescue_clear_ino_cache,
>>   		NULL
>>   	}
>>   };
>> -- 
>> 2.42.0

  reply	other threads:[~2023-10-09 20:51 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-09  4:46 [PATCH 0/2] btrfs-progs: move inode cache removal functionality to "btrfs rescue" group Qu Wenruo
2023-10-09  4:46 ` [PATCH 1/2] btrfs-progs: move clear-cache.[ch] from check to common directory Qu Wenruo
2023-10-09  4:47 ` [PATCH 2/2] btrfs-progs: move inode cache removal to rescue group Qu Wenruo
2023-10-09 14:23   ` David Sterba
2023-10-09 20:50     ` Qu Wenruo [this message]
2023-10-09 22:47       ` David Sterba

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9f582ea7-d75b-43f8-9381-649c6bbbf622@suse.com \
    --to=wqu@suse.com \
    --cc=dsterba@suse.cz \
    --cc=linux-btrfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).