rbd: rename image-cache invalidate command

Rename command image-cache to persistent-cache. Refactoring the code
of invalidate command.

[ idryomov: error message, incorporate doc and help.t hunks, drop
  do_persistent_cache_invalidate() ]

Signed-off-by: Yin Congmin <congmin.yin@intel.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
Yin Congmin 2021-12-27 11:50:18 +08:00 committed by Ilya Dryomov
parent bd66fdda91
commit 05bfe10ad9
4 changed files with 45 additions and 44 deletions

View File

@ -99,20 +99,20 @@ For example::
hit_bytes: 192 MiB / 66%
miss_bytes: 97 MiB
Discard Cache
-------------
Invalidate Cache
----------------
To discard a cache file with ``rbd``, specify the ``image-cache invalidate``
option, the pool name and the image name. ::
To invalidate (discard) a cache file with ``rbd``, specify the
``persistent-cache invalidate`` command, the pool name and the image name. ::
rbd image-cache invalidate {pool-name}/{image-name}
rbd persistent-cache invalidate {pool-name}/{image-name}
The command removes the cache metadata of the corresponding image, disable
The command removes the cache metadata of the corresponding image, disables
the cache feature and deletes the local cache file if it exists.
For example::
$ rbd image-cache invalidate rbd/foo
$ rbd persistent-cache invalidate rbd/foo
.. _section: ../../rados/configuration/ceph-conf/#configuration-sections
.. _commands: ../../man/8/rbd#commands

View File

@ -56,7 +56,6 @@
group snap remove (... rm) Remove a snapshot from a group.
group snap rename Rename group's snapshot.
group snap rollback Rollback group to snapshot.
image-cache invalidate Discard existing / dirty image cache
image-meta get Image metadata get the value associated
with the key.
image-meta list (image-meta ls) Image metadata list keys with values.
@ -125,6 +124,8 @@
object-map rebuild Rebuild an invalid object map.
perf image iostat Display image IO statistics.
perf image iotop Display a top-like IO monitor.
persistent-cache invalidate Invalidate (discard) existing / dirty
persistent cache.
pool init Initialize pool for use by RBD.
pool stats Display pool statistics.
remove (rm) Delete an image.
@ -1107,23 +1108,6 @@
--group arg group name
--snap arg snapshot name
rbd help image-cache invalidate
usage: rbd image-cache invalidate [--pool <pool>] [--namespace <namespace>]
[--image <image>] [--image-id <image-id>]
<image-spec>
Discard existing / dirty image cache
Positional arguments
<image-spec> image specification
(example: [<pool-name>/[<namespace>/]]<image-name>)
Optional arguments
-p [ --pool ] arg pool name
--namespace arg namespace name
--image arg image name
--image-id arg image id
rbd help image-meta get
usage: rbd image-meta get [--pool <pool>] [--namespace <namespace>]
[--image <image>]
@ -2124,6 +2108,25 @@
-p [ --pool ] arg pool name
--namespace arg namespace name
rbd help persistent-cache invalidate
usage: rbd persistent-cache invalidate
[--pool <pool>]
[--namespace <namespace>]
[--image <image>] [--image-id <image-id>]
<image-spec>
Invalidate (discard) existing / dirty persistent cache.
Positional arguments
<image-spec> image specification
(example: [<pool-name>/[<namespace>/]]<image-name>)
Optional arguments
-p [ --pool ] arg pool name
--namespace arg namespace name
--image arg image name
--image-id arg image id
rbd help pool init
usage: rbd pool init [--pool <pool>] [--force]
<pool-name>

View File

@ -26,7 +26,6 @@ set(rbd_srcs
action/Flatten.cc
action/Ggate.cc
action/Group.cc
action/ImageCache.cc
action/ImageMeta.cc
action/Import.cc
action/Info.cc
@ -43,6 +42,7 @@ set(rbd_srcs
action/Nbd.cc
action/ObjectMap.cc
action/Perf.cc
action/PersistentCache.cc
action/Pool.cc
action/Remove.cc
action/Rename.cc

View File

@ -14,27 +14,27 @@
namespace rbd {
namespace action {
namespace image_cache {
namespace persistent_cache {
namespace at = argument_types;
namespace po = boost::program_options;
void get_arguments(po::options_description *positional,
po::options_description *options) {
at::add_image_spec_options(positional, options,
at::ARGUMENT_MODIFIER_NONE);
void get_arguments_invalidate(po::options_description *positional,
po::options_description *options) {
at::add_image_spec_options(positional, options, at::ARGUMENT_MODIFIER_NONE);
at::add_image_id_option(options);
}
int execute_discard(const po::variables_map &vm,
const std::vector<std::string> &ceph_global_init_args) {
int execute_invalidate(const po::variables_map &vm,
const std::vector<std::string> &ceph_global_init_args) {
size_t arg_index = 0;
std::string pool_name;
std::string namespace_name;
std::string image_name;
std::string snap_name;
int r = utils::get_pool_image_snapshot_names(
vm, at::ARGUMENT_MODIFIER_NONE, &arg_index, &pool_name, &namespace_name,
&image_name, nullptr, true, utils::SNAPSHOT_PRESENCE_NONE,
&image_name, &snap_name, true, utils::SNAPSHOT_PRESENCE_NONE,
utils::SPEC_VALIDATION_NONE);
if (r < 0) {
return r;
@ -43,29 +43,27 @@ int execute_discard(const po::variables_map &vm,
librados::Rados rados;
librados::IoCtx io_ctx;
librbd::Image image;
r = utils::init_and_open_image(pool_name, namespace_name, image_name, "",
"", false, &rados, &io_ctx, &image);
r = utils::init_and_open_image(pool_name, namespace_name, image_name, "", "",
false, &rados, &io_ctx, &image);
if (r < 0) {
std::cerr << "rbd: failed to open image " << image_name << ": "
<< cpp_strerror(r) << std::endl;
return r;
}
r = image.invalidate_cache();
if (r < 0) {
std::cerr << "rbd: failed to discard the cache of image " << image_name << ": "
std::cerr << "rbd: invalidating persistent cache failed: "
<< cpp_strerror(r) << std::endl;
return r;
}
image.close();
return 0;
}
Shell::Action action_discard(
{"image-cache", "invalidate"}, {}, "Discard existing / dirty image cache", "",
&get_arguments, &execute_discard);
Shell::Action action_invalidate(
{"persistent-cache", "invalidate"}, {},
"Invalidate (discard) existing / dirty persistent cache.", "",
&get_arguments_invalidate, &execute_invalidate);
} // namespace image_cache
} // namespace persistent_cache
} // namespace action
} // namespace rbd