]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd/osd_operations/client_request: Support librados::OPERATION_ORDERSNAP
authorMatan Breizman <mbreizma@redhat.com>
Wed, 15 Mar 2023 15:52:16 +0000 (15:52 +0000)
committerMatan Breizman <mbreizma@redhat.com>
Wed, 15 Mar 2023 16:17:39 +0000 (16:17 +0000)
Signed-off-by: Matan Breizman <mbreizma@redhat.com>
src/crimson/osd/osd_operations/client_request.cc

index 20fc7beb9e1067fb1235ee6e47fcf4b26be9fac6..96ff12a1e818257ddff2daada64bfde6aeba5124 100644 (file)
@@ -291,6 +291,15 @@ ClientRequest::do_process(
 
   SnapContext snapc = get_snapc(pg,obc);
 
+  if ((m->has_flag(CEPH_OSD_FLAG_ORDERSNAP)) &&
+       snapc.seq < obc->ssc->snapset.seq) {
+        logger().debug("{} ORDERSNAP flag set and snapc seq {}",
+                       " < snapset seq {} on {}",
+                       __func__, snapc.seq, obc->ssc->snapset.seq,
+                       obc->obs.oi.soid);
+     return reply_op_error(pg, -EOLDSNAPC);
+  }
+
   if (!pg->is_primary()) {
     // primary can handle both normal ops and balanced reads
     if (is_misdirected(*pg)) {