->cmp_xattr_errorator::future<> {
delta_stats.num_rd++;
delta_stats.num_rd_kb += shift_round_up(osd_op.op.xattr.value_len, 10);
+
+ if (osd_op.op.xattr.cmp_op == CEPH_OSD_CMPXATTR_OP_EQ) {
+ auto bp = osd_op.indata.cbegin();
+ bp += osd_op.op.xattr.name_len;
+ if (osd_op.op.xattr.cmp_mode == CEPH_OSD_CMPXATTR_MODE_STRING) {
+ string lhs;
+ bp.copy(osd_op.op.xattr.value_len, lhs);
+ if (lhs.empty()) {
+ osd_op.rval = 1;
+ return cmp_xattr_errorator::now();
+ }
+ }
+ }
+ logger().debug("cmpxattr: xattr does not exist, comparison failed");
return crimson::ct_error::ecanceled::make();
}),
cmp_xattr_errorator::pass_further{}