Skip to content
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

test/librados: fix unordered manifest-unset op #24687

Merged
merged 1 commit into from Oct 24, 2018

Conversation

@myoungwon
Copy link
Member

myoungwon commented Oct 21, 2018

  • manifest unset op to foo-chunk object
    -- remove manifest flag
    -- commit
    -- send an ack to a client
    -- send decrement mesages ("chunk_put") to old chunks (bar-chunk)

Current unit test(ManifestUnset) send "chunk_read" command (to bar-chunk)
in order to see whether chunk's reference count is decreased.
But, as described above, "chunk_read" event can be triggered after a client
(test application) receives an ack. Therefore, there is a corner case
such as bar-chunk (in chunk pool) receives "chunk_read" first instead of "chunk_put"

Reference count model of dedup/tiering is based on false-positive (#24230).
So decreasing reference count is not guaranteed. If reference mismatch occur,
chunk-scrub(this is WIP) will fix it.
One guaranteed thing is that existing manifest flag is removed.

So, the solution of this commit is just re-send unset op, and then
chenk that return value is -EOPNOTSUPP (this means manifest flags is removed).

Fixes: http://tracker.ceph.com/issues/24485
Signed-off-by: Myoungwon Oh omwmw@sk.com

@myoungwon myoungwon force-pushed the myoungwon:wip-fix-unordered-manifest-unset branch from d756837 to a121c08 Oct 21, 2018
- manifest unset op to foo-chunk object
 - remove manifest flag
 - commit
 - send an ack to a client
 - send decrement mesages ("chunk_put") to old chunks (bar-chunk)

Current unit test(ManifestUnset) send "chunk_read" command (to bar-chunk)
in order to see whether chunk's reference count is decreased.
But, as described above, "chunk_read" event can be triggered after a client
(test application) receives an ack. Therefore, there is a corner case
such as bar-chunk (in chunk pool) receives "chunk_read" first instead of "chunk_put"

Reference count model of dedup/tiering is based on false-positive (#24230).
So decreasing reference count is not guaranteed. If reference mismatch occur,
chunk-scrub (this is WIP) will fix it.
One guaranteed thing is that existing manifest flag is removed.

So, the solution of this commit is just re-send unset op, and then
chenk that return value is -EOPNOTSUPP (this means manifest flags is removed).

Fixes: http://tracker.ceph.com/issues/24485
Signed-off-by: Myoungwon Oh <omwmw@sk.com>
@myoungwon myoungwon force-pushed the myoungwon:wip-fix-unordered-manifest-unset branch from a121c08 to 1099359 Oct 21, 2018
@myoungwon myoungwon changed the title src/test: fix unordered manifest-unset op test/librados: fix unordered manifest-unset op Oct 21, 2018
@myoungwon myoungwon requested a review from liewegas Oct 21, 2018
@liewegas liewegas added the needs-qa label Oct 21, 2018
@liewegas liewegas merged commit 1099359 into ceph:master Oct 24, 2018
5 checks passed
5 checks passed
Docs: build check OK - docs built
Details
Signed-off-by all commits in this PR are signed
Details
Unmodified Submodules submodules for project are unmodified
Details
make check make check succeeded
Details
make check (arm64) make check succeeded
Details
liewegas added a commit that referenced this pull request Oct 24, 2018
* refs/pull/24687/head:
	src/test: fix unordered manifest-unset op

Reviewed-by: Sage Weil <sage@redhat.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants
You can’t perform that action at this time.