diff options
| author | Raghavendra G <rgowdapp@redhat.com> | 2017-01-20 16:09:13 +0530 | 
|---|---|---|
| committer | Raghavendra G <rgowdapp@redhat.com> | 2017-02-02 05:02:30 -0500 | 
| commit | 85d7f1d1ee24ac400d4aa223478727643532693a (patch) | |
| tree | 10356a559fb88b4b1c676232ec6172ede82c73d0 /libglusterfs/src/call-stub.c | |
| parent | c8a23cc6cd289dd28deb136bf2550f28e2761ef3 (diff) | |
performance/write-behind: access stub only if available during
statedump
Change-Id: Ia5dd718458a5e32138012f81f014d13fc6b28be2
BUG: 1415115
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
Reviewed-on: https://review.gluster.org/16440
Reviewed-by: N Balachandran <nbalacha@redhat.com>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Smoke: Gluster Build System <jenkins@build.gluster.org>
Diffstat (limited to 'libglusterfs/src/call-stub.c')
| -rw-r--r-- | libglusterfs/src/call-stub.c | 47 | 
1 files changed, 47 insertions, 0 deletions
diff --git a/libglusterfs/src/call-stub.c b/libglusterfs/src/call-stub.c index 9ed2493e80b..c9c47b56c98 100644 --- a/libglusterfs/src/call-stub.c +++ b/libglusterfs/src/call-stub.c @@ -2538,3 +2538,50 @@ call_unwind_error (call_stub_t *stub, int op_ret, int op_errno)          return;  } + + +void +call_unwind_error_keep_stub (call_stub_t *stub, int op_ret, int op_errno) +{ +        xlator_t *old_THIS = NULL; + +        list_del_init (&stub->list); + +        old_THIS = THIS; +        THIS = stub->frame->this; +        { +                stub->args_cbk.op_ret = op_ret; +                stub->args_cbk.op_errno = op_errno; +                call_resume_unwind (stub); +        } + +        THIS = old_THIS; + +        return; + +} + +void +call_resume_keep_stub (call_stub_t *stub) +{ +        xlator_t *old_THIS = NULL; + +        errno = EINVAL; +        GF_VALIDATE_OR_GOTO ("call-stub", stub, out); + +        list_del_init (&stub->list); + +        old_THIS = THIS; +        THIS = stub->frame->this; +        { +                if (stub->wind) +                        call_resume_wind (stub); +                else +                        call_resume_unwind (stub); +        } + +        THIS = old_THIS; + +out: +        return; +}  | 
