diff options
Diffstat (limited to 'xlators/nfs/server/src/nfs-fops.c')
| -rw-r--r-- | xlators/nfs/server/src/nfs-fops.c | 432 | 
1 files changed, 133 insertions, 299 deletions
diff --git a/xlators/nfs/server/src/nfs-fops.c b/xlators/nfs/server/src/nfs-fops.c index 3d4968a8b17..e7505b5dcdd 100644 --- a/xlators/nfs/server/src/nfs-fops.c +++ b/xlators/nfs/server/src/nfs-fops.c @@ -43,29 +43,28 @@  struct nfs_fop_local * -nfs_fop_local_init (xlator_t *xl) +nfs_fop_local_init (xlator_t *nfsx)  {          struct nfs_fop_local    *l = NULL; -        struct nfs_state        *nfs = NULL; -        if (!xl) + +        if (!nfsx)                  return NULL; -        nfs = xlator_top_private (xl); -        l = mem_get (nfs->foppool); +        l = mem_get (nfs_fop_mempool (nfsx));          memset (l, 0, sizeof (*l));          return l;  }  void -nfs_fop_local_wipe (xlator_t *xl, struct nfs_fop_local *l) +nfs_fop_local_wipe (xlator_t *nfsx, struct nfs_fop_local *l)  {          struct nfs_state        *nfs = NULL; -        if ((!xl) || (!l)) +        if ((!nfsx) || (!l))                  return; -        nfs = xlator_top_private (xl); +        nfs = nfsx->private;          if (l->iobref)                  iobref_unref (l->iobref); @@ -211,17 +210,6 @@ err:   * callback is responsible for doing the relevant GlusterFS state   * maintenance operations on the data returned in the callbacks.   * - * nfs_fop_<fopname>_sync - * These are synchronous versions of the above fops. The idea is that - * if the user wants to wait for the fop to complete, this is the interface to - * use. The caller is responsible for doing the relevant GlusterFS - * state maintenance operations on the call_stub_t that is returned, including - * calling call_stub_destroy. - * - * nfs_<fopname>_sync - * This is help callers avoid the need to pass a pathloc to the - * nfs_fop_<fopname>_sync versions of the same fops. - *   * nfs_<fopname>   * Unlike the nfs_fop_<fopname> variety, this is the stateful type of fop, in   * that it silently performs all the relevant GlusterFS state maintainence @@ -243,7 +231,7 @@ nfs_fop_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          struct nfs_fop_local    *local = NULL;          fop_lookup_cbk_t        progcbk; -        nfl_to_prog_data (this, local, progcbk, frame); +        nfl_to_prog_data (local, progcbk, frame);          nfs_fop_restore_root_ino (local, buf, NULL, NULL, postparent);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, inode, buf, @@ -255,7 +243,7 @@ nfs_fop_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int -nfs_fop_lookup (xlator_t *xl, nfs_user_t *nfu, loc_t *loc, +nfs_fop_lookup (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *loc,                  fop_lookup_cbk_t cbk, void *local)  {          call_frame_t            *frame = NULL; @@ -267,11 +255,11 @@ nfs_fop_lookup (xlator_t *xl, nfs_user_t *nfu, loc_t *loc,          gf_log (GF_NFS, GF_LOG_TRACE, "Lookup: %s", loc->path);          nfs_fop_handle_frame_create (frame, xl, nfu, ret, err); -        nfs_fop_handle_local_init (frame, xl, nfl, cbk, local, ret, err); +        nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err);          nfs_fop_save_root_ino (nfl, loc); -        STACK_WIND_COOKIE  (frame, nfs_fop_lookup_cbk, xl, xl, xl->fops->lookup, -                            loc, NULL); +        STACK_WIND_COOKIE  (frame, nfs_fop_lookup_cbk, nfsx, xl, +                            xl->fops->lookup, loc, NULL);          ret = 0;  err: @@ -291,7 +279,7 @@ nfs_fop_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          struct nfs_fop_local    *nfl = NULL;          fop_stat_cbk_t          progcbk = NULL; -        nfl_to_prog_data (this, nfl, progcbk, frame); +        nfl_to_prog_data (nfl, progcbk, frame);          nfs_fop_restore_root_ino (nfl, buf, NULL, NULL, NULL);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, buf); @@ -302,7 +290,7 @@ nfs_fop_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int -nfs_fop_stat (xlator_t *xl, nfs_user_t *nfu, loc_t *loc, +nfs_fop_stat (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *loc,                fop_stat_cbk_t cbk, void *local)  {          call_frame_t            *frame = NULL; @@ -314,10 +302,10 @@ nfs_fop_stat (xlator_t *xl, nfs_user_t *nfu, loc_t *loc,          gf_log (GF_NFS, GF_LOG_TRACE, "Stat: %s", loc->path);          nfs_fop_handle_frame_create (frame, xl, nfu, ret, err); -        nfs_fop_handle_local_init (frame, xl, nfl, cbk, local, ret, err); +        nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err);          nfs_fop_save_root_ino (nfl, loc); -        STACK_WIND_COOKIE  (frame, nfs_fop_stat_cbk, xl, xl, xl->fops->stat, +        STACK_WIND_COOKIE  (frame, nfs_fop_stat_cbk, nfsx, xl, xl->fops->stat,                              loc);          ret = 0;  err: @@ -337,7 +325,7 @@ nfs_fop_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          struct nfs_fop_local    *nfl = NULL;          fop_fstat_cbk_t         progcbk = NULL; -        nfl_to_prog_data (this, nfl, progcbk, frame); +        nfl_to_prog_data (nfl, progcbk, frame);          nfs_fop_restore_root_ino (nfl, buf, NULL, NULL, NULL);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, buf); @@ -348,22 +336,22 @@ nfs_fop_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int -nfs_fop_fstat (xlator_t *xl, nfs_user_t *nfu, fd_t *fd, +nfs_fop_fstat (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, fd_t *fd,                 fop_fstat_cbk_t cbk, void *local)  {          call_frame_t            *frame = NULL;          int                     ret = -EFAULT;          struct nfs_fop_local    *nfl = NULL; -        if ((!xl) || (!fd) || (!nfu)) +        if ((!nfsx) || (!xl) || (!fd) || (!nfu))                  return ret;          gf_log (GF_NFS, GF_LOG_TRACE, "FStat");          nfs_fop_handle_frame_create (frame, xl, nfu, ret, err); -        nfs_fop_handle_local_init (frame, xl, nfl, cbk, local, ret, err); +        nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err);          nfs_fop_save_root_fd_ino (nfl, fd); -        STACK_WIND_COOKIE  (frame, nfs_fop_fstat_cbk, xl, xl, xl->fops->fstat, +        STACK_WIND_COOKIE  (frame, nfs_fop_fstat_cbk, nfsx, xl, xl->fops->fstat,                              fd);          ret = 0; @@ -384,7 +372,7 @@ nfs_fop_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          struct nfs_fop_local    *nfl = NULL;          fop_opendir_cbk_t       progcbk = NULL; -        nfl_to_prog_data (this, nfl, progcbk, frame); +        nfl_to_prog_data (nfl, progcbk, frame);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, fd);          nfs_stack_destroy (frame); @@ -393,21 +381,21 @@ nfs_fop_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int -nfs_fop_opendir (xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc,fd_t *dirfd, -                 fop_opendir_cbk_t cbk, void *local) +nfs_fop_opendir (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc, +                 fd_t *dirfd, fop_opendir_cbk_t cbk, void *local)  {          call_frame_t            *frame = NULL;          int                     ret = -EFAULT;          struct nfs_fop_local    *nfl = NULL; -        if ((!xl) || (!pathloc) || (!dirfd) || (!nfu)) +        if ((!nfsx) || (!xl) || (!pathloc) || (!dirfd) || (!nfu))                  return ret;          gf_log (GF_NFS, GF_LOG_TRACE, "Opendir: %s", pathloc->path);          nfs_fop_handle_frame_create (frame, xl, nfu, ret, err); -        nfs_fop_handle_local_init (frame, xl, nfl, cbk, local, ret, err); +        nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err); -        STACK_WIND_COOKIE (frame, nfs_fop_opendir_cbk, xl, xl, +        STACK_WIND_COOKIE (frame, nfs_fop_opendir_cbk, nfsx, xl,                             xl->fops->opendir, pathloc, dirfd);          ret = 0; @@ -427,7 +415,7 @@ nfs_fop_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          struct nfs_fop_local    *nfl = NULL;          fop_flush_cbk_t         progcbk = NULL; -        nfl_to_prog_data (this, nfl, progcbk, frame); +        nfl_to_prog_data (nfl, progcbk, frame);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno); @@ -437,20 +425,20 @@ nfs_fop_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int -nfs_fop_flush (xlator_t *xl, nfs_user_t *nfu, fd_t *fd, +nfs_fop_flush (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, fd_t *fd,                 fop_flush_cbk_t cbk, void *local)  {          call_frame_t            *frame = NULL;          int                     ret = -EFAULT;          struct nfs_fop_local    *nfl = NULL; -        if ((!xl) || (!fd) || (!nfu)) +        if ((!nfsx) || (!xl) || (!fd) || (!nfu))                  return ret;          nfs_fop_handle_frame_create (frame, xl, nfu, ret, err); -        nfs_fop_handle_local_init (frame, xl, nfl, cbk, local, ret, err); +        nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err); -        STACK_WIND_COOKIE (frame, nfs_fop_flush_cbk, xl, xl, xl->fops->flush, +        STACK_WIND_COOKIE (frame, nfs_fop_flush_cbk, nfsx, xl, xl->fops->flush,                             fd);          ret = 0;  err: @@ -470,7 +458,7 @@ nfs_fop_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          struct nfs_fop_local    *nfl = NULL;          fop_readdirp_cbk_t      progcbk = NULL; -        nfl_to_prog_data (this, nfl, progcbk, frame); +        nfl_to_prog_data (nfl, progcbk, frame);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, entries); @@ -481,7 +469,7 @@ nfs_fop_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int -nfs_fop_readdirp (xlator_t *xl, nfs_user_t *nfu, fd_t *dirfd, +nfs_fop_readdirp (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, fd_t *dirfd,                    size_t bufsize, off_t offset, fop_readdirp_cbk_t cbk,                    void *local)  { @@ -489,14 +477,14 @@ nfs_fop_readdirp (xlator_t *xl, nfs_user_t *nfu, fd_t *dirfd,          int                     ret = -EFAULT;          struct nfs_fop_local    *nfl = NULL; -        if ((!xl) || (!dirfd) || (!nfu)) +        if ((!nfsx) || (!xl) || (!dirfd) || (!nfu))                  return ret;          gf_log (GF_NFS, GF_LOG_TRACE, "readdir");          nfs_fop_handle_frame_create (frame, xl, nfu, ret, err); -        nfs_fop_handle_local_init (frame, xl, nfl, cbk, local, ret, err); +        nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err); -        STACK_WIND_COOKIE (frame, nfs_fop_readdirp_cbk, xl, xl, +        STACK_WIND_COOKIE (frame, nfs_fop_readdirp_cbk, nfsx, xl,                             xl->fops->readdirp, dirfd, bufsize, offset);          ret = 0; @@ -518,7 +506,7 @@ nfs_fop_statfs_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          struct nfs_fop_local    *nfl = NULL;          fop_statfs_cbk_t        progcbk = NULL; -        nfl_to_prog_data (this, nfl, progcbk, frame); +        nfl_to_prog_data (nfl, progcbk, frame);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, buf); @@ -528,22 +516,22 @@ nfs_fop_statfs_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int -nfs_fop_statfs (xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc, +nfs_fop_statfs (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc,                  fop_statfs_cbk_t cbk, void *local)  {          call_frame_t            *frame = NULL;          int                     ret = -EFAULT;          struct nfs_fop_local    *nfl = NULL; -        if ((!xl) || (!pathloc) || (!nfu)) +        if ((!nfsx) || (!xl) || (!pathloc) || (!nfu))                  return ret;          gf_log (GF_NFS, GF_LOG_TRACE, "Statfs: %s", pathloc->path);          nfs_fop_handle_frame_create (frame, xl, nfu, ret, err); -        nfs_fop_handle_local_init (frame, xl, nfl, cbk, local, ret, err); +        nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err); -        STACK_WIND_COOKIE  (frame, nfs_fop_statfs_cbk, xl, xl, xl->fops->statfs -                            ,pathloc); +        STACK_WIND_COOKIE  (frame, nfs_fop_statfs_cbk, nfsx, xl, +                            xl->fops->statfs, pathloc);          ret = 0;  err:          if (ret < 0) { @@ -564,7 +552,7 @@ nfs_fop_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          struct nfs_fop_local    *nfl = NULL;          fop_create_cbk_t        progcbk = NULL; -        nfl_to_prog_data (this, nfl, progcbk, frame); +        nfl_to_prog_data (nfl, progcbk, frame);          nfs_fop_restore_root_ino (nfl, buf, NULL, preparent, postparent);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, fd, inode, buf, @@ -576,22 +564,23 @@ nfs_fop_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int -nfs_fop_create (xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc, int flags, -                mode_t mode, fd_t *fd, fop_create_cbk_t cbk, void *local) +nfs_fop_create (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc, +                int flags, mode_t mode, fd_t *fd, fop_create_cbk_t cbk, +                void *local)  {          call_frame_t            *frame = NULL;          int                     ret = -EFAULT;          struct nfs_fop_local    *nfl = NULL; -        if ((!xl) || (!pathloc) || (!nfu)) +        if ((!nfsx) || (!xl) || (!pathloc) || (!nfu))                  return ret;          gf_log (GF_NFS, GF_LOG_TRACE, "Create: %s", pathloc->path);          nfs_fop_handle_frame_create (frame, xl, nfu, ret, err); -        nfs_fop_handle_local_init (frame, xl, nfl, cbk, local, ret, err); +        nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err);          nfs_fop_save_root_ino (nfl, pathloc); -        STACK_WIND_COOKIE  (frame, nfs_fop_create_cbk, xl, xl, xl->fops->create +        STACK_WIND_COOKIE  (frame, nfs_fop_create_cbk, nfsx, xl,xl->fops->create                              , pathloc, flags, mode, fd);          ret = 0;  err: @@ -612,7 +601,7 @@ nfs_fop_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          struct nfs_fop_local    *nfl = NULL;          fop_setattr_cbk_t       progcbk = NULL; -        nfl_to_prog_data (this, nfl, progcbk, frame); +        nfl_to_prog_data (nfl, progcbk, frame);          nfs_fop_restore_root_ino (nfl, pre, post, NULL, NULL);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, pre, post); @@ -623,7 +612,7 @@ nfs_fop_setattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int -nfs_fop_setattr (xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc, +nfs_fop_setattr (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc,                   struct iatt *buf, int32_t valid, fop_setattr_cbk_t cbk,                   void *local)  { @@ -631,15 +620,15 @@ nfs_fop_setattr (xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc,          int                     ret = -EFAULT;          struct nfs_fop_local    *nfl = NULL; -        if ((!xl) || (!pathloc) || (!nfu)) +        if ((!nfsx) || (!xl) || (!pathloc) || (!nfu))                  return ret;          gf_log (GF_NFS, GF_LOG_TRACE, "Setattr: %s", pathloc->path);          nfs_fop_handle_frame_create (frame, xl, nfu, ret, err); -        nfs_fop_handle_local_init (frame, xl, nfl, cbk, local, ret, err); +        nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err);          nfs_fop_save_root_ino (nfl, pathloc); -        STACK_WIND_COOKIE (frame, nfs_fop_setattr_cbk, xl, xl, +        STACK_WIND_COOKIE (frame, nfs_fop_setattr_cbk, nfsx, xl,                             xl->fops->setattr, pathloc, buf, valid);          ret = 0;  err: @@ -661,7 +650,7 @@ nfs_fop_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          struct nfs_fop_local    *nfl = NULL;          fop_mkdir_cbk_t         progcbk = NULL; -        nfl_to_prog_data (this, nfl, progcbk, frame); +        nfl_to_prog_data (nfl, progcbk, frame);          nfs_fop_restore_root_ino (nfl, buf, NULL, preparent, postparent);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, inode, buf, @@ -672,22 +661,22 @@ nfs_fop_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int -nfs_fop_mkdir (xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc, mode_t mode, -               fop_mkdir_cbk_t cbk, void *local) +nfs_fop_mkdir (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc, +               mode_t mode, fop_mkdir_cbk_t cbk, void *local)  {          call_frame_t            *frame = NULL;          int                     ret = -EFAULT;          struct nfs_fop_local    *nfl = NULL; -        if ((!xl) || (!pathloc) || (!nfu)) +        if ((!nfsx) || (!xl) || (!pathloc) || (!nfu))                  return ret;          gf_log (GF_NFS, GF_LOG_TRACE, "Mkdir: %s", pathloc->path);          nfs_fop_handle_frame_create (frame, xl, nfu, ret, err); -        nfs_fop_handle_local_init (frame, xl, nfl, cbk, local, ret, err); +        nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err);          nfs_fop_save_root_ino (nfl, pathloc); -        STACK_WIND_COOKIE  (frame, nfs_fop_mkdir_cbk, xl, xl, xl->fops->mkdir, +        STACK_WIND_COOKIE  (frame, nfs_fop_mkdir_cbk, nfsx, xl, xl->fops->mkdir,                              pathloc, mode);          ret = 0;  err: @@ -709,7 +698,7 @@ nfs_fop_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          struct nfs_fop_local    *nfl = NULL;          fop_symlink_cbk_t       progcbk = NULL; -        nfl_to_prog_data (this, nfl, progcbk, frame); +        nfl_to_prog_data (nfl, progcbk, frame);          nfs_fop_restore_root_ino (nfl, buf, NULL, preparent, postparent);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, inode, buf, @@ -719,22 +708,22 @@ nfs_fop_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  }  int -nfs_fop_symlink (xlator_t *xl, nfs_user_t *nfu, char *target, +nfs_fop_symlink (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, char *target,                   loc_t *pathloc, fop_symlink_cbk_t cbk, void *local)  {          call_frame_t            *frame = NULL;          int                     ret = -EFAULT;          struct nfs_fop_local    *nfl = NULL; -        if ((!xl) || (!pathloc) || (!target) || (!nfu)) +        if ((!nfsx) || (!xl) || (!pathloc) || (!target) || (!nfu))                  return ret;          gf_log (GF_NFS, GF_LOG_TRACE, "Symlink: %s", pathloc->path);          nfs_fop_handle_frame_create (frame, xl, nfu, ret, err); -        nfs_fop_handle_local_init (frame, xl, nfl, cbk, local, ret, err); +        nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err);          nfs_fop_save_root_ino (nfl, pathloc); -        STACK_WIND_COOKIE  (frame, nfs_fop_symlink_cbk, xl, xl, +        STACK_WIND_COOKIE  (frame, nfs_fop_symlink_cbk, nfsx, xl,                              xl->fops->symlink, target, pathloc);          ret = 0;  err: @@ -755,7 +744,7 @@ nfs_fop_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          struct nfs_fop_local    *nfl = NULL;          fop_readlink_cbk_t      progcbk = NULL; -        nfl_to_prog_data (this, nfl, progcbk, frame); +        nfl_to_prog_data (nfl, progcbk, frame);          nfs_fop_restore_root_ino (nfl, buf, NULL, NULL, NULL);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, path, buf); @@ -765,22 +754,22 @@ nfs_fop_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int -nfs_fop_readlink (xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc, +nfs_fop_readlink (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc,                    size_t size, fop_readlink_cbk_t cbk, void *local)  {          call_frame_t            *frame = NULL;          int                     ret = -EFAULT;          struct nfs_fop_local    *nfl = NULL; -        if ((!xl) || (!pathloc) || (!nfu)) +        if ((!nfsx) || (!xl) || (!pathloc) || (!nfu))                  return ret;          gf_log (GF_NFS, GF_LOG_TRACE, "Readlink: %s", pathloc->path);          nfs_fop_handle_frame_create (frame, xl, nfu, ret, err); -        nfs_fop_handle_local_init (frame, xl, nfl, cbk, local, ret, err); +        nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err);          nfs_fop_save_root_ino (nfl, pathloc); -        STACK_WIND_COOKIE  (frame, nfs_fop_readlink_cbk, xl, xl, +        STACK_WIND_COOKIE  (frame, nfs_fop_readlink_cbk, nfsx, xl,                              xl->fops->readlink, pathloc, size);          ret = 0;  err: @@ -802,7 +791,7 @@ nfs_fop_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          struct nfs_fop_local    *nfl = NULL;          fop_mknod_cbk_t         progcbk = NULL; -        nfl_to_prog_data (this, nfl, progcbk, frame); +        nfl_to_prog_data (nfl, progcbk, frame);          nfs_fop_restore_root_ino (nfl, buf, NULL, preparent, postparent);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, inode, buf, @@ -813,22 +802,22 @@ nfs_fop_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int -nfs_fop_mknod (xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc, mode_t mode, -               dev_t dev, fop_mknod_cbk_t cbk, void *local) +nfs_fop_mknod (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc, +               mode_t mode, dev_t dev, fop_mknod_cbk_t cbk, void *local)  {          call_frame_t            *frame = NULL;          int                     ret = -EFAULT;          struct nfs_fop_local    *nfl = NULL; -        if ((!xl) || (!pathloc) || (!nfu)) +        if ((!nfsx) || (!xl) || (!pathloc) || (!nfu))                  return ret;          gf_log (GF_NFS, GF_LOG_TRACE, "Mknod: %s", pathloc->path);          nfs_fop_handle_frame_create (frame, xl, nfu, ret, err); -        nfs_fop_handle_local_init (frame, xl, nfl, cbk, local, ret, err); +        nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err);          nfs_fop_save_root_ino (nfl, pathloc); -        STACK_WIND_COOKIE  (frame, nfs_fop_mknod_cbk, xl, xl, xl->fops->mknod, +        STACK_WIND_COOKIE  (frame, nfs_fop_mknod_cbk, nfsx, xl, xl->fops->mknod,                              pathloc, mode, dev);          ret = 0;  err: @@ -838,7 +827,6 @@ err:          }          return ret; -  }  int32_t @@ -849,7 +837,7 @@ nfs_fop_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          struct nfs_fop_local    *nfl = frame->local;          fop_rmdir_cbk_t         progcbk = NULL; -        nfl_to_prog_data (this, nfl, progcbk, frame); +        nfl_to_prog_data (nfl, progcbk, frame);          nfs_fop_restore_root_ino (nfl, NULL, NULL, preparent, postparent);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, preparent, @@ -861,22 +849,22 @@ nfs_fop_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int -nfs_fop_rmdir (xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc, +nfs_fop_rmdir (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc,                 fop_rmdir_cbk_t cbk, void *local)  {          call_frame_t            *frame = NULL;          int                     ret = -EFAULT;          struct nfs_fop_local    *nfl = NULL; -        if ((!xl) || (!pathloc) || (!nfu)) +        if ((!nfsx) || (!xl) || (!pathloc) || (!nfu))                  return ret;          gf_log (GF_NFS, GF_LOG_TRACE, "Rmdir: %s", pathloc->path);          nfs_fop_handle_frame_create (frame, xl, nfu, ret, err); -        nfs_fop_handle_local_init (frame, xl, nfl, cbk, local, ret, err); +        nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err);          nfs_fop_save_root_ino (nfl, pathloc); -        STACK_WIND_COOKIE  (frame, nfs_fop_rmdir_cbk, xl, xl, xl->fops->rmdir, +        STACK_WIND_COOKIE  (frame, nfs_fop_rmdir_cbk, nfsx, xl, xl->fops->rmdir,                              pathloc);          ret = 0;  err: @@ -898,7 +886,7 @@ nfs_fop_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          struct nfs_fop_local    *nfl = frame->local;          fop_unlink_cbk_t         progcbk = NULL; -        nfl_to_prog_data (this, nfl, progcbk, frame); +        nfl_to_prog_data (nfl, progcbk, frame);          nfs_fop_restore_root_ino (nfl, NULL, NULL, preparent, postparent);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, preparent, @@ -909,23 +897,23 @@ nfs_fop_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int -nfs_fop_unlink (xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc, +nfs_fop_unlink (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc,                  fop_unlink_cbk_t cbk, void *local)  {          call_frame_t            *frame = NULL;          int                     ret = -EFAULT;          struct nfs_fop_local    *nfl = NULL; -        if ((!xl) || (!pathloc) || (!nfu)) +        if ((!nfsx) || (!xl) || (!pathloc) || (!nfu))                  return ret;          gf_log (GF_NFS, GF_LOG_TRACE, "Unlink: %s", pathloc->path);          nfs_fop_handle_frame_create (frame, xl, nfu, ret, err); -        nfs_fop_handle_local_init (frame, xl, nfl, cbk, local, ret, err); +        nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err);          nfs_fop_save_root_ino (nfl, pathloc); -        STACK_WIND_COOKIE  (frame, nfs_fop_unlink_cbk, xl, xl, xl->fops->unlink, -                            pathloc); +        STACK_WIND_COOKIE  (frame, nfs_fop_unlink_cbk, nfsx, xl, +                            xl->fops->unlink, pathloc);          ret = 0;  err:          if (ret < 0) { @@ -947,7 +935,7 @@ nfs_fop_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          struct nfs_fop_local    *nfl = NULL;          fop_link_cbk_t          progcbk = NULL; -        nfl_to_prog_data (this, nfl, progcbk, frame); +        nfl_to_prog_data (nfl, progcbk, frame);          nfs_fop_restore_root_ino (nfl, buf, NULL, preparent, postparent);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, inode, buf, @@ -959,23 +947,23 @@ nfs_fop_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int -nfs_fop_link (xlator_t *xl, nfs_user_t *nfu, loc_t *oldloc, loc_t *newloc, -              fop_link_cbk_t cbk, void *local) +nfs_fop_link (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *oldloc, +              loc_t *newloc, fop_link_cbk_t cbk, void *local)  {          call_frame_t            *frame = NULL;          int                     ret = -EFAULT;          struct nfs_fop_local    *nfl = NULL; -        if ((!xl) || (!oldloc) || (!newloc) || (!nfu)) +        if ((!nfsx) || (!xl) || (!oldloc) || (!newloc) || (!nfu))                  return ret;          gf_log (GF_NFS, GF_LOG_TRACE, "Link: %s -> %s", newloc->path,                  oldloc->path);          nfs_fop_handle_frame_create (frame, xl, nfu, ret, err); -        nfs_fop_handle_local_init (frame, xl, nfl, cbk, local, ret, err); +        nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err);          nfs_fop_save_root_ino (nfl, newloc); -        STACK_WIND_COOKIE (frame, nfs_fop_link_cbk, xl, xl, xl->fops->link, +        STACK_WIND_COOKIE (frame, nfs_fop_link_cbk, nfsx, xl, xl->fops->link,                             oldloc, newloc);          ret = 0;  err: @@ -998,7 +986,7 @@ nfs_fop_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          struct nfs_fop_local    *nfl = NULL;          fop_rename_cbk_t        progcbk = NULL; -        nfl_to_prog_data (this, nfl, progcbk, frame); +        nfl_to_prog_data (nfl, progcbk, frame);          /* The preattr arg needs to be NULL instead of @buf because it is           * possible that the new parent is not root whereas the source dir           * could've been. That is handled in the next macro. @@ -1016,25 +1004,25 @@ nfs_fop_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int -nfs_fop_rename (xlator_t *xl, nfs_user_t *nfu, loc_t *oldloc, +nfs_fop_rename (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *oldloc,                  loc_t *newloc, fop_rename_cbk_t cbk, void *local)  {          call_frame_t            *frame = NULL;          int                     ret = -EFAULT;          struct nfs_fop_local    *nfl = NULL; -        if ((!xl) || (!oldloc) || (!newloc) || (!nfu)) +        if ((!nfsx) || (!xl) || (!oldloc) || (!newloc) || (!nfu))                  return ret;          gf_log (GF_NFS, GF_LOG_TRACE, "Rename: %s -> %s", oldloc->path,                  newloc->path);          nfs_fop_handle_frame_create (frame, xl, nfu, ret, err); -        nfs_fop_handle_local_init (frame, xl, nfl, cbk, local, ret, err); +        nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err);          nfs_fop_save_root_ino (nfl, oldloc);          nfs_fop_newloc_save_root_ino (nfl, newloc); -        STACK_WIND_COOKIE  (frame, nfs_fop_rename_cbk, xl, xl, xl->fops->rename, -                            oldloc, newloc); +        STACK_WIND_COOKIE  (frame, nfs_fop_rename_cbk, nfsx, xl, +                            xl->fops->rename, oldloc, newloc);          ret = 0;  err:          if (ret < 0) { @@ -1053,7 +1041,7 @@ nfs_fop_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          struct nfs_fop_local    *nfl = NULL;          fop_open_cbk_t          progcbk = NULL; -        nfl_to_prog_data (this, nfl, progcbk, frame); +        nfl_to_prog_data (nfl, progcbk, frame);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, fd);          nfs_stack_destroy (frame); @@ -1062,21 +1050,22 @@ nfs_fop_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  }  int -nfs_fop_open (xlator_t *xl, nfs_user_t *nfu, loc_t *loc, int32_t flags, -              fd_t *fd, int32_t wbflags, fop_open_cbk_t cbk, void *local) +nfs_fop_open (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *loc, +              int32_t flags, fd_t *fd, int32_t wbflags, fop_open_cbk_t cbk, +              void *local)  {          call_frame_t            *frame = NULL;          int                     ret = -EFAULT;          struct nfs_fop_local    *nfl = NULL; -        if ((!xl) || (!loc) || (!fd) || (!nfu)) +        if ((!nfsx) || (!xl) || (!loc) || (!fd) || (!nfu))                  return ret;          gf_log (GF_NFS, GF_LOG_TRACE, "Open: %s", loc->path);          nfs_fop_handle_frame_create (frame, xl, nfu, ret, err); -        nfs_fop_handle_local_init (frame, xl, nfl, cbk, local, ret, err); +        nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err); -        STACK_WIND_COOKIE  (frame, nfs_fop_open_cbk, xl, xl, xl->fops->open, +        STACK_WIND_COOKIE  (frame, nfs_fop_open_cbk, nfsx, xl, xl->fops->open,                              loc, flags, fd, wbflags);          ret = 0;  err: @@ -1086,7 +1075,6 @@ err:          }          return ret; -  } @@ -1098,7 +1086,7 @@ nfs_fop_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          struct nfs_fop_local    *nfl = NULL;          fop_writev_cbk_t        progcbk = NULL; -        nfl_to_prog_data (this, nfl, progcbk, frame); +        nfl_to_prog_data (nfl, progcbk, frame);          nfs_fop_restore_root_ino (nfl, prebuf, postbuf, NULL, NULL);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, prebuf,postbuf); @@ -1110,19 +1098,19 @@ nfs_fop_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int -nfs_fop_write (xlator_t *xl, nfs_user_t *nfu, fd_t *fd, struct iobuf *srciob, -               struct iovec *vector, int32_t count, off_t offset, -               fop_writev_cbk_t cbk, void *local) +nfs_fop_write (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, fd_t *fd, +               struct iobuf *srciob, struct iovec *vector, int32_t count, +               off_t offset, fop_writev_cbk_t cbk, void *local)  {          call_frame_t            *frame = NULL;          int                     ret = -EFAULT;          struct nfs_fop_local    *nfl = NULL; -        if ((!xl) || (!fd) || (!vector) || (!nfu) || (!srciob)) +        if ((!nfsx) || (!xl) || (!fd) || (!vector) || (!nfu) || (!srciob))                  return ret;          nfs_fop_handle_frame_create (frame, xl, nfu, ret, err); -        nfs_fop_handle_local_init (frame, xl, nfl, cbk, local, ret, err); +        nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err);          nfs_fop_save_root_fd_ino (nfl, fd);          nfl->iobref = iobref_new (); @@ -1133,14 +1121,14 @@ nfs_fop_write (xlator_t *xl, nfs_user_t *nfu, fd_t *fd, struct iobuf *srciob,          }          iobref_add (nfl->iobref, srciob); -        STACK_WIND_COOKIE  (frame, nfs_fop_writev_cbk, xl, xl, xl->fops->writev +        STACK_WIND_COOKIE  (frame, nfs_fop_writev_cbk, nfsx, xl,xl->fops->writev                              , fd, vector, count, offset, nfl->iobref);          ret = 0;  err:          if (ret < 0) {                  if (frame)                          nfs_stack_destroy (frame); -                nfs_fop_local_wipe (xl, nfl); +                nfs_fop_local_wipe (nfsx, nfl);          }          return ret; @@ -1155,7 +1143,7 @@ nfs_fop_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          struct nfs_fop_local    *nfl = NULL;          fop_fsync_cbk_t         progcbk = NULL; -        nfl_to_prog_data (this, nfl, progcbk, frame); +        nfl_to_prog_data (nfl, progcbk, frame);          nfs_fop_restore_root_ino (nfl, prebuf, postbuf, NULL, NULL);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, prebuf,postbuf); @@ -1166,21 +1154,21 @@ nfs_fop_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int -nfs_fop_fsync (xlator_t *xl, nfs_user_t *nfu, fd_t *fd, int32_t datasync, -               fop_fsync_cbk_t cbk, void *local) +nfs_fop_fsync (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, fd_t *fd, +               int32_t datasync, fop_fsync_cbk_t cbk, void *local)  {          call_frame_t            *frame = NULL;          int                     ret = -EFAULT;          struct nfs_fop_local    *nfl = NULL; -        if ((!xl) || (!fd)) +        if ((!nfsx) || (!xl) || (!fd))                  return ret;          nfs_fop_handle_frame_create (frame, xl, nfu, ret, err); -        nfs_fop_handle_local_init (frame, xl, nfl, cbk, local, ret, err); +        nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err);          nfs_fop_save_root_fd_ino (nfl, fd); -        STACK_WIND_COOKIE (frame, nfs_fop_fsync_cbk, xl, xl, +        STACK_WIND_COOKIE (frame, nfs_fop_fsync_cbk, nfsx, xl,                             xl->fops->fsync, fd, datasync);          ret = 0;  err: @@ -1201,7 +1189,7 @@ nfs_fop_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          struct nfs_fop_local    *nfl = NULL;          fop_readv_cbk_t         progcbk = NULL; -        nfl_to_prog_data (this, nfl, progcbk, frame); +        nfl_to_prog_data (nfl, progcbk, frame);          nfs_fop_restore_root_ino (nfl, stbuf, NULL, NULL, NULL);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, vector, count, @@ -1213,8 +1201,8 @@ nfs_fop_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int -nfs_fop_read (xlator_t *xl, nfs_user_t *nfu, fd_t *fd, size_t size, -              off_t offset, fop_readv_cbk_t cbk, void *local) +nfs_fop_read (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, fd_t *fd, +              size_t size, off_t offset, fop_readv_cbk_t cbk, void *local)  {          call_frame_t            *frame = NULL;          int                     ret = -EFAULT; @@ -1224,11 +1212,11 @@ nfs_fop_read (xlator_t *xl, nfs_user_t *nfu, fd_t *fd, size_t size,                  return ret;          nfs_fop_handle_frame_create (frame, xl, nfu, ret, err); -        nfs_fop_handle_local_init (frame, xl, nfl, cbk, local, ret, err); +        nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err);          nfs_fop_save_root_fd_ino (nfl, fd); -        STACK_WIND_COOKIE (frame, nfs_fop_readv_cbk, xl, xl, xl->fops->readv, fd -                           , size, offset); +        STACK_WIND_COOKIE (frame, nfs_fop_readv_cbk, nfsx, xl, xl->fops->readv, +                           fd, size, offset);          ret = 0;  err:          if (ret < 0) { @@ -1248,7 +1236,7 @@ nfs_fop_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          struct nfs_fop_local    *nfl = NULL;          fop_truncate_cbk_t      progcbk = NULL; -        nfl_to_prog_data (this, nfl, progcbk, frame); +        nfl_to_prog_data (nfl, progcbk, frame);          nfs_fop_restore_root_ino (nfl, prebuf, postbuf, NULL, NULL);          if (progcbk)                  progcbk (frame, cookie, this, op_ret, op_errno, prebuf,postbuf); @@ -1259,21 +1247,21 @@ nfs_fop_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int -nfs_fop_truncate (xlator_t *xl, nfs_user_t *nfu, loc_t *loc, off_t offset, -                  fop_truncate_cbk_t cbk, void *local) +nfs_fop_truncate (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *loc, +                  off_t offset, fop_truncate_cbk_t cbk, void *local)  {          call_frame_t            *frame = NULL;          int                     ret = -EFAULT;          struct nfs_fop_local    *nfl = NULL; -        if ((!xl) || (!loc) || (!nfu)) +        if ((!nfsx) || (!xl) || (!loc) || (!nfu))                  return ret;          nfs_fop_handle_frame_create (frame, xl, nfu, ret, err); -        nfs_fop_handle_local_init (frame, xl, nfl, cbk, local, ret, err); +        nfs_fop_handle_local_init (frame, nfsx, nfl, cbk, local, ret, err);          nfs_fop_save_root_ino (nfl, loc); -        STACK_WIND_COOKIE  (frame, nfs_fop_truncate_cbk, xl, xl, +        STACK_WIND_COOKIE  (frame, nfs_fop_truncate_cbk, nfsx, xl,                              xl->fops->truncate, loc, offset);          ret = 0; @@ -1285,157 +1273,3 @@ err:          return ret;  } - - -int -nfs_fop_lookup_sync_cbk (call_frame_t *frame, void  *cookie, xlator_t *this, -                         int32_t op_ret, int32_t op_errno, inode_t *inode, -                         struct iatt *buf, dict_t *xattr, -                         struct iatt *postparent) -{ -        nfs_syncfop_t   *sf = frame->local; - -        if (!sf) -                return -1; - -        if (op_ret == -1) -                gf_log (GF_NFS, GF_LOG_TRACE, "Sync lookup failed: %s", -                        strerror (op_errno)); -        else -                gf_log (GF_NFS, GF_LOG_TRACE, "Sync lookup done"); - -        sf->replystub = fop_lookup_cbk_stub (frame, NULL, op_ret, op_errno, -                                             inode, buf, xattr, postparent); -        nfs_syncfop_notify (sf); -        return 0; -} - - -call_stub_t * -nfs_fop_lookup_sync (xlator_t *xl, nfs_user_t *nfu, loc_t *loc) -{ -        nfs_syncfop_t   *sf = NULL; -        call_stub_t     *reply = NULL; -        int             ret = -1; - -        if ((!xl) || (!loc) || (!nfu)) -                return NULL; - -        sf = nfs_syncfop_init (); -        if (!sf) { -                gf_log (GF_NFS, GF_LOG_ERROR, "synclocal init failed"); -                goto err; -        } - -        ret = nfs_fop_lookup (xl, nfu, loc, nfs_fop_lookup_sync_cbk, sf); -        if (ret < 0) { -                gf_log (GF_NFS, GF_LOG_ERROR, "Sync lookup failed"); -                goto err; -        } - -        reply = nfs_syncfop_wait (sf); - -err: -        return reply; -} - - - -int32_t -nfs_fop_readdirp_sync_cbk (call_frame_t *frame, void *cookie, xlator_t *this, -                           int32_t op_ret, int32_t op_errno, -                           gf_dirent_t *entries) -{ -        nfs_syncfop_t   *sf = frame->local; - -        if (op_ret == -1) -                gf_log (GF_NFS, GF_LOG_TRACE, "Sync readdir failed: %s", -                        strerror (op_errno)); -        else -                gf_log (GF_NFS, GF_LOG_TRACE, "Sync readdir done"); - -        sf->replystub = fop_readdirp_cbk_stub (frame, NULL, op_ret, op_errno, -                                               entries); - -        nfs_syncfop_notify (sf); -        return 0; -} - - -/* This function does not update or map the st_dev in the d_stat of all the - * entries that were read. That mapping for the sync version of readdiring - * happens in the dcache. - */ -call_stub_t * -nfs_fop_readdirp_sync (xlator_t *fopxl, nfs_user_t *nfu, fd_t *dirfd, -                       off_t offset, size_t bufsize) -{ -        nfs_syncfop_t           *sf = NULL; -        call_stub_t             *reply = NULL; -        int                     ret = -1; - -        if ((!fopxl) || (!nfu) || (!dirfd)) -                return NULL; - -        sf = nfs_syncfop_init (); -        if (!sf) { -                gf_log (GF_NFS, GF_LOG_ERROR, "sync fop local init failed"); -                goto ret; -        } - -        ret = nfs_fop_readdirp (fopxl, nfu, dirfd, bufsize, offset, -                                nfs_fop_readdirp_sync_cbk, sf); -        if (ret < 0) { -                gf_log (GF_NFS, GF_LOG_ERROR, "Fop readdir failed: %s", -                        strerror (-ret)); -                goto ret; -        } - -        reply = nfs_syncfop_wait (sf); - -ret: -        return reply; -} - - - -nfs_syncfop_t * -nfs_syncfop_init () -{ -        nfs_syncfop_t   *sfl = NULL; - -        sfl = CALLOC (1, sizeof (*sfl)); -        if (!sfl) { -                gf_log (GF_NFS, GF_LOG_ERROR, "Memory allocation failed"); -                return NULL; -        } - -        sem_init (&sfl->replysig, 0, 0); - -        return sfl; -} - - -call_stub_t * -nfs_syncfop_wait (nfs_syncfop_t *s) -{ -        call_stub_t     *replystub = NULL; - -        gf_log (GF_NFS, GF_LOG_TRACE, "Waiting for sync fop"); -        sem_wait (&s->replysig); -        gf_log (GF_NFS, GF_LOG_TRACE, "Sync fop notification received"); -        replystub = s->replystub; -        FREE (s); -        return replystub; -} - - -void -nfs_syncfop_notify (nfs_syncfop_t *s) -{ -        sem_post (&s->replysig); -        gf_log (GF_NFS, GF_LOG_TRACE, "Sync fop notified"); -} - - -  | 
