Skip to content
This repository has been archived by the owner on May 3, 2024. It is now read-only.

CORTX-33972: DI : 43motr-sync-replication ST, be-ut, io-nw-xfer-ut fix #2100

Merged
merged 2 commits into from
Aug 25, 2022

Conversation

rajatpatil98
Copy link
Contributor

*43motr-sync-replication
*be-ut failure in emap
*io-nw-xfer-ut failure in target_ioreq_seg_add

Signed-off-by: Rajat Patil rajat.r.patil@seagate.com
Co-authored-by: Vidyadhar Pinglikar vidyadhar.pinglikar@seagate.com

Problem Statement

  • 43motr-sync-replication ST fails.
  • be-ut failure in emap and io-nw-xfer-ut failure in target_ioreq_seg_add fails.

Design

  • 43motr-sync-replication fixed for N < K by shifting goff by (K-N)*offset.
  • be-ut failure in emap is fixed by changing EXTMAP_UT_UNIT_SIZE to 16 from 10 as it should be in range of power 2.
  • io-nw-xfer-ut is fixed by allocating ti_goff_ivec.

Coding

Checklist for Author

  • Coding conventions are followed and code is consistent

Testing

Checklist for Author

  • Unit and System Tests are added
  • Test Cases cover Happy Path, Non-Happy Path and Scalability
  • Testing was performed with RPM

Impact Analysis

Checklist for Author/Reviewer/GateKeeper

  • Interface change (if any) are documented
  • Side effects on other features (deployment/upgrade)
  • Dependencies on other component(s)

Review Checklist

Checklist for Author

  • JIRA number/GitHub Issue added to PR
  • PR is self reviewed
  • Jira and state/status is updated and JIRA is updated with PR link
  • Check if the description is clear and explained

Documentation

Checklist for Author

  • Changes done to WIKI / Confluence page / Quick Start Guide

*43motr-sync-replication
*be-ut failure in emap
*io-nw-xfer-ut failure in target_ioreq_seg_add

Signed-off-by: Rajat Patil <rajat.r.patil@seagate.com>
Co-authored-by: Vidyadhar Pinglikar <vidyadhar.pinglikar@seagate.com>
@cla-bot
Copy link

cla-bot bot commented Aug 23, 2022

Thanks for your contribution!
The CLA bot has flagged your contribution as not having a Contributor License Agreement
in place. Note that this is not needed in the overwhelming majority of instances and this warning will usually be ignored.
The code reviewers will make a determination and may ask you to sign a CLA or may choose to ignore this warning.
More information about this can be found here.

@rkothiya
Copy link
Contributor

Jenkins CI Result : Motr#1629

Motr Test Summary

Test ResultCountInfo
❌Failed2
📁

04motr-single-node/49motr-rpc-cancel
01motr-single-node/00userspace-tests

🏁Skipped32
📁

01motr-single-node/28sys-kvs
01motr-single-node/35m0singlenode
01motr-single-node/04initscripts
01motr-single-node/37protocol
02motr-single-node/51kem
02motr-single-node/20rpc-session-cancel
02motr-single-node/10pver-assign
02motr-single-node/21fsync-single-node
02motr-single-node/13dgmode-io
02motr-single-node/14poolmach
02motr-single-node/11m0t1fs
02motr-single-node/26motr-user-kernel-tests
02motr-single-node/08spiel
03motr-single-node/06conf
03motr-single-node/36spare-reservation
04motr-single-node/34sns-repair-1n-1f
04motr-single-node/08spiel-sns-repair-quiesce
04motr-single-node/28sys-kvs-kernel
04motr-single-node/11m0t1fs-rconfc-fail
04motr-single-node/08spiel-sns-repair
04motr-single-node/19sns-repair-abort
04motr-single-node/22sns-repair-ios-fail
05motr-single-node/18sns-repair-quiesce
05motr-single-node/12fwait
05motr-single-node/16sns-repair-multi
05motr-single-node/07mount-fail
05motr-single-node/15sns-repair-single
05motr-single-node/23sns-abort-quiesce
05motr-single-node/17sns-repair-concurrent-io
05motr-single-node/07mount
05motr-single-node/07mount-multiple
05motr-single-node/12fsync

✔️Passed43
📁

01motr-single-node/43m0crate
01motr-single-node/05confgen
01motr-single-node/06hagen
01motr-single-node/52motr-singlenode-sanity
01motr-single-node/01net
01motr-single-node/01kernel-tests
01motr-single-node/03console
01motr-single-node/02rpcping
02motr-single-node/07m0d-fatal
02motr-single-node/67fdmi-plugin-multi-filters
02motr-single-node/53clusterusage-alert
02motr-single-node/41motr-conf-update
03motr-single-node/61sns-repair-motr-1n-1f
03motr-single-node/72spiel-sns-motr-repair-quiesce
03motr-single-node/08spiel-multi-confd
03motr-single-node/69sns-repair-motr-quiesce
03motr-single-node/62sns-repair-motr-mf
03motr-single-node/70sns-failure-after-repair-quiesce
03motr-single-node/63sns-repair-motr-1k-1f
03motr-single-node/60sns-repair-motr-1f
03motr-single-node/66sns-repair-motr-abort-quiesce
03motr-single-node/24motr-dix-repair-lookup-insert-spiel
03motr-single-node/68sns-repair-motr-shutdown
03motr-single-node/64sns-repair-motr-ios-fail
03motr-single-node/71spiel-sns-motr-repair
03motr-single-node/24motr-dix-repair-lookup-insert-m0repair
03motr-single-node/04sss
03motr-single-node/65sns-repair-motr-abort
04motr-single-node/73motr-io-small-disks
04motr-single-node/48motr-raid0-io
04motr-single-node/74motr-di-corruption-detection
04motr-single-node/25m0kv
04motr-single-node/44motr-rm-lock-cc-io
04motr-single-node/45motr-rmw
05motr-single-node/23dix-repair-m0repair
05motr-single-node/43motr-sync-replication
05motr-single-node/42motr-utils
05motr-single-node/45motr-sns-repair-N-1
05motr-single-node/40motr-dgmode
05motr-single-node/23dix-repair-quiesce-m0repair
05motr-single-node/23spiel-dix-repair-quiesce
05motr-single-node/44motr-sns-repair
05motr-single-node/23spiel-dix-repair

Total77🔗

CppCheck Summary

   Cppcheck: No new warnings found 👍

@huanghua78
Copy link

I have reviewed this patch. I don't have objections. But this needs approval from someone who is familiar with DI.

@shashank-parulekar
Copy link
Contributor

@vidyadhar-pinglikar , @huanghua78 , @rajatpatil98 (N < K) is only valid for replication. Are we sure these changes are for replication and not for parity calculation ? I could not follow the calculation of goff for replication.

@vidyadhar-pinglikar
Copy link
Contributor

@vidyadhar-pinglikar , @huanghua78 , @rajatpatil98 (N < K) is only valid for replication. Are we sure these changes are for replication and not for parity calculation ? I could not follow the calculation of goff for replication.

@shashank-parulekar . these changes are just for replication where N=1, K>N; also the offset changes (which are to ti_goff_ivec) here is not for the actual goff put on the disc for parity; but are used specifically to find the right map-idx, n unit idx offset during checksum computation and does not deal with actual goff used for writing data;

@cla-bot
Copy link

cla-bot bot commented Aug 25, 2022

Thanks for your contribution!
The CLA bot has flagged your contribution as not having a Contributor License Agreement
in place. Note that this is not needed in the overwhelming majority of instances and this warning will usually be ignored.
The code reviewers will make a determination and may ask you to sign a CLA or may choose to ignore this warning.
More information about this can be found here.

@rkothiya rkothiya merged commit 23efbb5 into Seagate:main Aug 25, 2022
@@ -975,10 +991,24 @@ static void target_ioreq_calc_idx(struct m0_op_io *ioo,
&fop_cs_data->cd_idx[fop_cs_data->cd_num_units];
M0_ASSERT(cs_idx->ci_pg_idx == UINT32_MAX &&

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have a question here:
ci_pg_idx is declared as uint64_t.
Why are we comparing it against UINT32_MAX, but not UINT64_MAX?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in ioreq_fop_checksum_data_init, it looks to have initialized with UINT32_MAX instead of UINT64_MAX; will correct it during next work around DI

Comment on lines +546 to +551
if ((unit_type == M0_PUT_PARITY) &&
(layout_k(play) > layout_n(play))) {
m0_bcount_t goff_delta = (layout_k(play) -
layout_n(play)) *
gob_offset;
goff_cksum += goff_delta;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure, this particular case was a miss and was captured little late during check in time; RMW ST with configuration of sync replication didnot capture this which was tested heavily for DI; thats one part to additionally check in that rmw ST :)

kiwionly2 pushed a commit to kiwionly2/cortx-motr that referenced this pull request Aug 30, 2022
Problem:
43motr-sync-replication ST fails.
be-ut failure in emap and io-nw-xfer-ut failure in target_ioreq_seg_add fails.

Solution:
43motr-sync-replication fixed for N < K by shifting goff by (K-N)*offset.
be-ut failure in emap is fixed by changing EXTMAP_UT_UNIT_SIZE to 16 from 10 as it should be in range of power 2.
io-nw-xfer-ut is fixed by allocating ti_goff_ivec.

Signed-off-by: Rajat Patil <rajat.r.patil@seagate.com>
Co-authored-by: Vidyadhar Pinglikar <vidyadhar.pinglikar@seagate.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants