diff options
author | Pranith Kumar K <pranithk@gluster.com> | 2012-07-30 21:01:21 +0530 |
---|---|---|
committer | Anand Avati <avati@redhat.com> | 2012-08-01 22:51:37 -0700 |
commit | 53011831614791b6858bf9735fe96d59a1a29f1e (patch) | |
tree | 1f11f1c309d0e9e141241730251fab7e68909479 /rpc/rpc-lib/src | |
parent | 9c8fe5beb872f5e1d7824b292cb97b47289cb6bd (diff) |
cluster/afr: Handle child_up & fd not opened case in xaction
RCA:
When an fd is opened while a brick is down, after the brick
comes back up afr issues open on the other brick. It can
fail for a number of reasons (enoent etc). While the system
is in that state, inode/entrylks pre-op happen only on the
brick that is up and fd is opened for fd-fops. post-op should
consider only the bricks where both pre-op and fop succeeded
as success, rest of them as failures. Code now marks only the
children that are down as failures as opposed to child_down &
fd-not-opened. This makes change-log appear as success on the
subvolume where we did not do any fop leading to no change-log
but differences in data/metadata for reg-files.
Fix:
Mark non-participants of fop as failure. This is tracked in
transaction.pre_op[].
Tests:
Simulated the scenario using err-gen on top of one of the client
xlator which fails all fops always. Performed fops and the changelog
represented pending fops on the brick with err-gen loaded. Tested
the case of brick down and perform entry/metadata/data operations
to confirm they still work as expected.
Change-Id: I41905936126b19abba56ca581c0301a894507e1a
BUG: 844987
Signed-off-by: Pranith Kumar K <pranithk@gluster.com>
Reviewed-on: http://review.gluster.com/3765
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'rpc/rpc-lib/src')
0 files changed, 0 insertions, 0 deletions