[Bugs] [Bug 1579788] Thin-arbiter: Have the state of volume in memory

bugzilla at redhat.com bugzilla at redhat.com
Thu Oct 25 12:26:55 UTC 2018


https://bugzilla.redhat.com/show_bug.cgi?id=1579788



--- Comment #14 from Worker Ant <bugzilla-bot at gluster.org> ---
COMMIT: https://review.gluster.org/20095 committed in master by "Ravishankar N"
<ravishankar at redhat.com> with a commit message- afr: thin-arbiter 2 domain
locking and in-memory state

2 domain locking + xattrop for write-txn failures:
--------------------------------------------------
- A post-op wound on TA takes AFR_TA_DOM_NOTIFY range lock and
AFR_TA_DOM_MODIFY full lock, does xattrop on TA and releases
AFR_TA_DOM_MODIFY lock and stores in-memory which brick is bad.

- All further write txn failures are handled based on this in-memory
value without querying the TA.

- When shd heals the files, it does so by requesting full lock on
AFR_TA_DOM_NOTIFY domain. Client uses this as a cue (via upcall),
releases AFR_TA_DOM_NOTIFY range lock and invalidates its in-memory
notion of which brick is bad. The next write txn failure is wound on TA
to again update the in-memory state.

- Any incomplete write txns before the AFR_TA_DOM_NOTIFY upcall release
request is got is completed before the lock is released.

- Any write txns got after the release request are maintained in a ta_waitq.

- After the release is complete, the ta_waitq elements are spliced to a
separate queue which is then processed one by one.

- For fops that come in parallel when the in-memory bad brick is still
unknown, only one is wound to TA on wire. The other ones are maintained
in a ta_onwireq which is then processed after we get the response from
TA.

Change-Id: I32c7b61a61776663601ab0040e2f0767eca1fd64
updates: bz#1579788
Signed-off-by: Ravishankar N <ravishankar at redhat.com>
Signed-off-by: Ashish Pandey <aspandey at redhat.com>

-- 
You are receiving this mail because:
You are on the CC list for the bug.
Unsubscribe from this bug https://bugzilla.redhat.com/token.cgi?t=5QtzItUA3Q&a=cc_unsubscribe


More information about the Bugs mailing list