From: Yin Congmin Date: Mon, 27 Dec 2021 03:50:18 +0000 (+0800) Subject: rbd: rename image-cache invalidate command X-Git-Tag: v17.2.1~87^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=fc2f68aebe5071ad86ef0979eadaf399e37f55b7;p=ceph.git 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 Signed-off-by: Ilya Dryomov (cherry picked from commit 05bfe10ad9fde533aa728f9aa0cc8a8f155c03c5) --- diff --git a/doc/rbd/rbd-persistent-write-log-cache.rst b/doc/rbd/rbd-persistent-write-log-cache.rst index b711cc6c6fc..a684f9c560f 100644 --- a/doc/rbd/rbd-persistent-write-log-cache.rst +++ b/doc/rbd/rbd-persistent-write-log-cache.rst @@ -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 diff --git a/src/test/cli/rbd/help.t b/src/test/cli/rbd/help.t index c5090f3ba8a..0b226fb99b3 100644 --- a/src/test/cli/rbd/help.t +++ b/src/test/cli/rbd/help.t @@ -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 ] [--namespace ] - [--image ] [--image-id ] - - - Discard existing / dirty image cache - - Positional arguments - image specification - (example: [/[/]]) - - 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 ] [--namespace ] [--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 ] + [--namespace ] + [--image ] [--image-id ] + + + Invalidate (discard) existing / dirty persistent cache. + + Positional arguments + image specification + (example: [/[/]]) + + 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 ] [--force] diff --git a/src/tools/rbd/CMakeLists.txt b/src/tools/rbd/CMakeLists.txt index 6fe867af361..5a895354d53 100644 --- a/src/tools/rbd/CMakeLists.txt +++ b/src/tools/rbd/CMakeLists.txt @@ -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 diff --git a/src/tools/rbd/action/ImageCache.cc b/src/tools/rbd/action/ImageCache.cc deleted file mode 100644 index 0edd2893125..00000000000 --- a/src/tools/rbd/action/ImageCache.cc +++ /dev/null @@ -1,71 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab - -#include "tools/rbd/ArgumentTypes.h" -#include "tools/rbd/Shell.h" -#include "tools/rbd/Utils.h" -#include "include/types.h" -#include "include/rbd_types.h" -#include "include/stringify.h" -#include "common/errno.h" -#include "common/Formatter.h" -#include -#include - -namespace rbd { -namespace action { -namespace image_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); - at::add_image_id_option(options); -} - -int execute_discard(const po::variables_map &vm, - const std::vector &ceph_global_init_args) { - size_t arg_index = 0; - std::string pool_name; - std::string namespace_name; - std::string image_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, - utils::SPEC_VALIDATION_NONE); - if (r < 0) { - return r; - } - - 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); - 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 << ": " - << 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); - -} // namespace image_cache -} // namespace action -} // namespace rbd diff --git a/src/tools/rbd/action/PersistentCache.cc b/src/tools/rbd/action/PersistentCache.cc new file mode 100644 index 00000000000..75ee8ed7d89 --- /dev/null +++ b/src/tools/rbd/action/PersistentCache.cc @@ -0,0 +1,69 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab + +#include "tools/rbd/ArgumentTypes.h" +#include "tools/rbd/Shell.h" +#include "tools/rbd/Utils.h" +#include "include/types.h" +#include "include/rbd_types.h" +#include "include/stringify.h" +#include "common/errno.h" +#include "common/Formatter.h" +#include +#include + +namespace rbd { +namespace action { +namespace persistent_cache { + +namespace at = argument_types; +namespace po = boost::program_options; + +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_invalidate(const po::variables_map &vm, + const std::vector &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, &snap_name, true, utils::SNAPSHOT_PRESENCE_NONE, + utils::SPEC_VALIDATION_NONE); + if (r < 0) { + return r; + } + + 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); + if (r < 0) { + return r; + } + + r = image.invalidate_cache(); + if (r < 0) { + std::cerr << "rbd: invalidating persistent cache failed: " + << cpp_strerror(r) << std::endl; + return r; + } + + return 0; +} + +Shell::Action action_invalidate( + {"persistent-cache", "invalidate"}, {}, + "Invalidate (discard) existing / dirty persistent cache.", "", + &get_arguments_invalidate, &execute_invalidate); + +} // namespace persistent_cache +} // namespace action +} // namespace rbd