Skip to content
This repository was archived by the owner on Feb 8, 2024. It is now read-only.

Commit 13b051f

Browse files
authored
CORTX-32900 : RGW-SAL: Enable flag M0_ENF_GEN_DI for checksum generation in Motr client (#360)
Problem: Need to generate DI for data units along with Parity units Solution: Support is added in Motr client to generate checksum; If M0_ENF_GEN_DI is set then Motr client will generate DI for data units along with Parity units. Signed-off-by: Rajat Patil <[email protected]>
1 parent 59e076d commit 13b051f

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/rgw/rgw_sal_motr.cc

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2677,7 +2677,7 @@ int MotrObject::create_mobj(const DoutPrefixProvider *dpp, uint64_t sz)
26772677
m0_obj_init(mobj, &store->container.co_realm, &meta.oid, lid);
26782678

26792679
struct m0_op *op = nullptr;
2680-
mobj->ob_entity.en_flags |= M0_ENF_META;
2680+
mobj->ob_entity.en_flags |= (M0_ENF_META | M0_ENF_GEN_DI);
26812681
rc = m0_entity_create(nullptr, &mobj->ob_entity, &op);
26822682
if (rc != 0) {
26832683
ADDB(RGW_ADDB_REQUEST_ID, addb_logger.get_id(),
@@ -2753,7 +2753,7 @@ int MotrObject::open_mobj(const DoutPrefixProvider *dpp)
27532753
struct m0_op *op = nullptr;
27542754
mobj->ob_attr.oa_layout_id = meta.layout_id;
27552755
mobj->ob_attr.oa_pver = meta.pver;
2756-
mobj->ob_entity.en_flags |= M0_ENF_META;
2756+
mobj->ob_entity.en_flags |= (M0_ENF_META | M0_ENF_GEN_DI);
27572757
ldpp_dout(dpp, 20) <<__func__<< ": key=" << this->get_key().to_str() << ", meta:oid=[0x" << std::hex << meta.oid.u_hi
27582758
<< ":0x" << meta.oid.u_lo << "], meta:pvid=[0x" << std::hex << meta.pver.f_container
27592759
<< ":0x" << meta.pver.f_key << "], meta:layout_id=0x" << std::hex << meta.layout_id << dendl;
@@ -2817,7 +2817,7 @@ int MotrObject::delete_mobj(const DoutPrefixProvider *dpp)
28172817

28182818
// Create an DELETE op and execute it (sync version).
28192819
struct m0_op *op = nullptr;
2820-
mobj->ob_entity.en_flags |= M0_ENF_META;
2820+
mobj->ob_entity.en_flags |= (M0_ENF_META | M0_ENF_GEN_DI);
28212821
rc = m0_entity_delete(&mobj->ob_entity, &op);
28222822
if (rc != 0) {
28232823
ldpp_dout(dpp, 0) <<__func__<< ": ERROR: m0_entity_delete() failed. rc=" << rc << dendl;
@@ -2964,6 +2964,7 @@ int MotrObject::write_mobj(const DoutPrefixProvider *dpp, bufferlist&& in_buffer
29642964

29652965
ldpp_dout(dpp, 20) <<__func__<< ": write buffer bytes=[" << bs << "], at offset=[" << offset << "]" << dendl;
29662966
op = nullptr;
2967+
this->mobj->ob_entity.en_flags |= M0_ENF_GEN_DI;
29672968
rc = m0_obj_op(this->mobj, M0_OC_WRITE, &ext, &buf, &attr, 0, flags, &op);
29682969
if (rc != 0) {
29692970
ldpp_dout(dpp, 0) <<__func__<< ": write failed, m0_obj_op rc="<< rc << dendl;
@@ -3065,6 +3066,7 @@ int MotrObject::read_mobj(const DoutPrefixProvider* dpp, int64_t start, int64_t
30653066
attr.ov_vec.v_count[0] = 0;
30663067

30673068
op = nullptr;
3069+
this->mobj->ob_entity.en_flags |= M0_ENF_GEN_DI;
30683070
rc = m0_obj_op(this->mobj, M0_OC_READ, &ext, &buf, &attr, 0, flags, &op);
30693071
if (rc != 0) {
30703072
ldpp_dout(dpp, 0) <<__func__<< ": motr op failed: rc=" << rc << dendl;
@@ -3589,6 +3591,7 @@ int MotrAtomicWriter::write(bool last)
35893591
flags |= M0_OOF_LAST;
35903592

35913593
op = nullptr;
3594+
obj.mobj->ob_entity.en_flags |= M0_ENF_GEN_DI;
35923595
rc = m0_obj_op(obj.mobj, M0_OC_WRITE, &ext, &buf, &attr, 0, flags, &op);
35933596
if (rc != 0) {
35943597
ldpp_dout(dpp, 0) <<__func__<< ": write failed, m0_obj_op rc="<< rc << dendl;

0 commit comments

Comments
 (0)