diff options
| author | Pranith Kumar K <pkarampu@redhat.com> | 2019-10-10 10:50:59 +0530 | 
|---|---|---|
| committer | Xavi Hernandez <xhernandez@redhat.com> | 2020-06-10 14:19:50 +0000 | 
| commit | 1fd11299a649fe1dbed21eb2b10c38470469a641 (patch) | |
| tree | 4d4ec05c221d8bfa4c70356c511db6ae69bd1d20 | |
| parent | ea31f9a7838548dfb759e30a58957d29cd59f87e (diff) | |
performance/open-behind: seek fop should open_and_resume
Backport of:
> fixes: bz#1760187
> Change-Id: I4c6ad13194d4fc5c7705e35bf9a27fce504b51f9
> Signed-off-by: Pranith Kumar K <pkarampu@redhat.com>
Fixes: #1296
Change-Id: I4c6ad13194d4fc5c7705e35bf9a27fce504b51f9
Signed-off-by: Xavi Hernandez <xhernandez@redhat.com>
| -rw-r--r-- | xlators/performance/open-behind/src/open-behind.c | 27 | 
1 files changed, 27 insertions, 0 deletions
diff --git a/xlators/performance/open-behind/src/open-behind.c b/xlators/performance/open-behind/src/open-behind.c index 2119fc57e65..cbe89ec82e8 100644 --- a/xlators/performance/open-behind/src/open-behind.c +++ b/xlators/performance/open-behind/src/open-behind.c @@ -714,6 +714,32 @@ err:  }  int +ob_seek(call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset, +        gf_seek_what_t what, dict_t *xdata) +{ +    call_stub_t *stub = NULL; +    fd_t *wind_fd = NULL; + +    wind_fd = ob_get_wind_fd(this, fd, NULL); + +    stub = fop_seek_stub(frame, default_seek_resume, wind_fd, offset, what, +                         xdata); + +    fd_unref(wind_fd); + +    if (!stub) +        goto err; + +    open_and_resume(this, wind_fd, stub); + +    return 0; +err: +    STACK_UNWIND_STRICT(fstat, frame, -1, ENOMEM, 0, 0); + +    return 0; +} + +int  ob_flush(call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *xdata)  {      call_stub_t *stub = NULL; @@ -1261,6 +1287,7 @@ struct xlator_fops fops = {      .flush = ob_flush,      .fsync = ob_fsync,      .fstat = ob_fstat, +    .seek = ob_seek,      .ftruncate = ob_ftruncate,      .fsetxattr = ob_fsetxattr,      .setxattr = ob_setxattr,  | 
