-
Notifications
You must be signed in to change notification settings - Fork 325
jgm/daos-4698-1: Rebuild object migration should execute applicable object punch for each migration. #4895
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Add future object punch epoch to key iterator. Needed for rebuild migration so we can rebuild punched objects that are visible in a prior snapshot. Signed-off-by: Jeff Olivier <jeffrey.v.olivier@intel.com>
Signed-off-by: Joseph Moore <joseph.moore@intel.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. No errors found by checkpatch.
…d targets. Signed-off-by: Joseph Moore <joseph.moore@intel.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. No errors found by checkpatch.
… object punch for each migration. Signed-off-by: Joseph Moore <joseph.moore@intel.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. No errors found by checkpatch.
…object punch for each migration. Signed-off-by: Joseph Moore <joseph.moore@intel.com>
… object punch for each migration. Signed-off-by: Joseph Moore <joseph.moore@intel.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. No errors found by checkpatch.
iov->iov_len += pi_size; | ||
arg->obj_punched = true; | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought we will get object punch epoch by scan. see rebuild_obj_scan_cb() L601. So you do not need change enumerate packing.
Anything concern?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I discussed this option with Jeff. He says the scan only picks up the latest punch. For the incarnation log problem we're trying to solve, the subsequent punch closest to the update epoch must be replayed. There can be multiple object punches at differing epochs for an object, and recording them in the enumeration packing is required.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The latest isn't sufficient. You could have many snapshots you are rebuilding. As such, you could have something like this
update object at time 1
take snapshot at 2
punch at 3
update a at 4
snapshot at 5
punch at 6
If you rebuild the object at 7, you will only see the punch at 6 in the scan phase. You only see the intermediate punch 3 while you are doing migration for the snapshot at 2. So you can't do this at the scan phase.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ah, right. Thanks for explanation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Probably add a few more snapshots and punch in rebuild_snap_punch_empty() test. Thanks.
rc = vos_obj_punch(cont->sc_hdl, mrone->mo_oid, | ||
mrone->mo_obj_punch_eph, | ||
tls->mpt_version, VOS_OF_REPLAY_PC, | ||
NULL, 0, NULL, NULL); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jolivier23 is it ok for VOS to punch the same object with same epoch multiple times?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It should be ok with the VOS_OF_REPLAY_PC flag. If it doesn't work, it's a bug
src/object/srv_obj_migrate.c
Outdated
if (rc) { | ||
D_ERROR(DF_UOID" punch obj failed: rc %d\n", | ||
DP_UOID(mrone->mo_oid), rc); | ||
return rc; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
D_GOTO(obj_close, rc) ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This has been fixed.
…t objects. Signed-off-by: Joseph Moore <joseph.moore@intel.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. No errors found by checkpatch.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Need to revert the submodule update
Signed-off-by: Joseph Moore <joseph.moore@intel.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. No errors found by checkpatch.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks. Joe
Should be ported to 1.2 since this is a 1.2 blocker. |
… object punch for each migration. (#4895) Added object punch epoch to object enumeration. Execute the punch during migrate. Signed-off-by: Joseph Moore <joseph.moore@intel.com>
Added object punch epoch to object enumeration. Execute the punch during migrate.