vector<OSDOp> ops;
int64_t flags;
int32_t result;
+ eversion_t bad_replay_version;
eversion_t replay_version;
version_t user_version;
epoch_t osdmap_epoch;
version_t get_user_version() { return user_version; }
void set_result(int r) { result = r; }
+ void set_bad_replay_version(eversion_t v) { bad_replay_version = v; }
void set_replay_version(eversion_t v) { replay_version = v; }
void set_user_version(version_t v) { user_version = v; }
head.layout.ol_pgid = pgid.get_old_pg().v;
head.flags = flags;
head.osdmap_epoch = osdmap_epoch;
- head.reassert_version = replay_version;
+ head.reassert_version = bad_replay_version;
head.result = result;
head.num_ops = ops.size();
head.object_len = oid.name.length();
::encode(pgid, payload);
::encode(flags, payload);
::encode(result, payload);
- ::encode(replay_version, payload);
+ ::encode(bad_replay_version, payload);
::encode(osdmap_epoch, payload);
__u32 num_ops = ops.size();
for (unsigned i = 0; i < num_ops; i++)
::encode(ops[i].rval, payload);
+ ::encode(replay_version, payload);
::encode(user_version, payload);
}
}
::decode(pgid, p);
::decode(flags, p);
::decode(result, p);
- ::decode(replay_version, p);
+ ::decode(bad_replay_version, p);
::decode(osdmap_epoch, p);
__u32 num_ops = ops.size();
OSDOp::split_osd_op_vector_out_data(ops, data);
}
- if (header.version >= 5)
+ if (header.version >= 5) {
+ ::decode(replay_version, p);
::decode(user_version, p);
- else
+ } else
+ replay_version = bad_replay_version;
user_version = replay_version.version;
}
}