]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: return ENOENT from Snapshot::get_timestamp for nonexistent snap_id 55397/head
authorjagombar <48735467+jagombar@users.noreply.github.com>
Tue, 30 Jan 2024 18:25:53 +0000 (18:25 +0000)
committerjagombar <agombar@uk.ibm.com>
Wed, 31 Jan 2024 11:53:27 +0000 (11:53 +0000)
Fixes: https://tracker.ceph.com/issues/47287
Signed-off-by: John Agombar <agombar@uk.ibm.com>
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 2b955779534884ce1a915e152a1199cd9e5f4bfa..94420a64286a47d5403580af4583bea4bab5a3d6 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);