From: songweibin Date: Sat, 18 Aug 2018 00:50:24 +0000 (+0800) Subject: rbd: fix error purging non-user snapshots X-Git-Tag: v13.2.7~297^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ce3d71bbb228918f51c08811fdabc4350d83f907;p=ceph.git rbd: fix error purging non-user snapshots Fixes: [root@ ~]# rbd snap rm img1@snap1 [root@ ~]# rbd snap ls img1 -a SNAPID NAME SIZE TIMESTAMP NAMESPACE 4 f2e82bd1-e2ff-4a6b-aaef-5a12a2b23a30 100 MiB Sat Aug 18 08:48:34 2018 trash (snap1) [root@ ~]# rbd snap purge img1 Removing all snapshots: 0% complete...failed. rbd: removing snaps failed: (2) No such file or directory Signed-off-by: songweibin (cherry picked from commit 2c79a4939090d445a8172dbbe4d4072a4851ddcf) --- diff --git a/src/tools/rbd/action/Snap.cc b/src/tools/rbd/action/Snap.cc index 84bbeee65fdc..4de016cfd344 100644 --- a/src/tools/rbd/action/Snap.cc +++ b/src/tools/rbd/action/Snap.cc @@ -204,6 +204,10 @@ int do_purge_snaps(librbd::Image& image, bool no_progress) return 0; } else { list protect; + snaps.erase(remove_if(snaps.begin(), + snaps.end(), + boost::bind(utils::is_not_user_snap_namespace, &image, _1)), + snaps.end()); for (auto it = snaps.begin(); it != snaps.end();) { r = image.snap_is_protected(it->name.c_str(), &is_protected); if (r < 0) {