diff options
| -rw-r--r-- | xlators/nfs/server/src/nlm4.c | 8 | 
1 files changed, 7 insertions, 1 deletions
diff --git a/xlators/nfs/server/src/nlm4.c b/xlators/nfs/server/src/nlm4.c index aee14e9c..595738b2 100644 --- a/xlators/nfs/server/src/nlm4.c +++ b/xlators/nfs/server/src/nlm4.c @@ -594,9 +594,15 @@ nlm4_file_open_and_resume(nfs3_call_state_t *cs, nlm4_resume_fn_t resume)  {          fd_t *fd = NULL;          int ret = -1; +        int flags = 0;          nlm_client_t *nlmclnt = NULL;          call_frame_t *frame = NULL; +        if (cs->args.nlm4_lockargs.exclusive == _gf_false) +                flags = O_RDONLY; +        else +                flags = O_WRONLY; +          nlmclnt = nlm_get_uniq (cs->args.nlm4_lockargs.alock.caller_name);          if (nlmclnt == NULL) {                  gf_log (GF_NLM, GF_LOG_ERROR, "nlm_get_uniq() returned NULL"); @@ -636,7 +642,7 @@ nlm4_file_open_and_resume(nfs3_call_state_t *cs, nlm4_resume_fn_t resume)          nfs_fix_groups (cs->nfsx, frame->root);          STACK_WIND_COOKIE (frame, nlm4_file_open_cbk, cs->vol, cs->vol, -                          cs->vol->fops->open, &cs->resolvedloc, O_RDWR, +                          cs->vol->fops->open, &cs->resolvedloc, flags,                            cs->fd, NULL);          ret = 0;  err:  | 
