]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: return ENOENT from Snapshot::get_timestamp for nonexistent snap_id 55474/head
authorjagombar <48735467+jagombar@users.noreply.github.com>
Tue, 30 Jan 2024 18:25:53 +0000 (18:25 +0000)
committerIlya Dryomov <idryomov@gmail.com>
Wed, 7 Feb 2024 10:50:32 +0000 (11:50 +0100)
Fixes: https://tracker.ceph.com/issues/47287
Signed-off-by: John Agombar <agombar@uk.ibm.com>
(cherry picked from commit 2a2d3d4c6b38a917f465680e9321e810426555ea)

src/librbd/api/Snapshot.cc
src/test/librbd/test_librbd.cc

index 03cefbd1c0a0588db61176957a4b9171662d0567..306ddb593da8bcfda118fc2574f92f74fd597ba7 100644 (file)
@@ -378,7 +378,9 @@ int Snapshot<I>::remove(I *ictx, const char *snap_name, uint32_t flags,
 template <typename I>
 int Snapshot<I>::get_timestamp(I *ictx, uint64_t snap_id, struct timespec *timestamp) {
   auto snap_it = ictx->snap_info.find(snap_id);
-  ceph_assert(snap_it != ictx->snap_info.end());
+  if (snap_it == ictx->snap_info.end()) {
+    return -ENOENT;
+  }
   utime_t time = snap_it->second.timestamp;
   time.to_timespec(timestamp);
   return 0;
index 3ff284c3d47ead988a6b89204c1d366941639f8d..c520720c42b250831ee783c3ac93459acaff51e1 100644 (file)
@@ -1902,6 +1902,8 @@ TEST_F(TestLibRBD, TestGetSnapShotTimeStamp)
   ASSERT_EQ(0, create_image(ioctx, name.c_str(), size, &order));
   ASSERT_EQ(0, rbd_open(ioctx, name.c_str(), &image, NULL));
 
+  ASSERT_EQ(-ENOENT, rbd_snap_get_timestamp(image, 0, NULL));
+
   ASSERT_EQ(0, rbd_snap_create(image, "snap1"));
   num_snaps = rbd_snap_list(image, snaps, &max_size);
   ASSERT_EQ(1, num_snaps);