diff options
| author | Vijay Bellur <vijay@gluster.com> | 2009-11-02 00:34:10 +0000 | 
|---|---|---|
| committer | Anand V. Avati <avati@dev.gluster.com> | 2009-11-01 22:23:22 -0800 | 
| commit | f8a56c6322d729fcdb96c754dd421fffb025e3bb (patch) | |
| tree | 428b97a0cd3dbbbb59b461fb1bd8139e1f2a7366 /xlators/features/locks/src/posix.c | |
| parent | b4b20984721e169763a5ac26ffb9353d1ca3568a (diff) | |
features/locks: Do not try to set value in dict when lookup has failed.v3.0.0pre1
lock-count was being set without checking for op_ret from lookup. This would
cause a lot of Critical messages in the log as dict would be NULL in case
of a lookup failure.
Also, removed some trailing white spaces and did some minor re-factoring.
Signed-off-by: Vijay Bellur <vijay@gluster.com>
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 306 (Enhance locks to aid debugging)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=306
Diffstat (limited to 'xlators/features/locks/src/posix.c')
| -rw-r--r-- | xlators/features/locks/src/posix.c | 77 | 
1 files changed, 42 insertions, 35 deletions
diff --git a/xlators/features/locks/src/posix.c b/xlators/features/locks/src/posix.c index c03fbbd865d..95941994e5c 100644 --- a/xlators/features/locks/src/posix.c +++ b/xlators/features/locks/src/posix.c @@ -75,8 +75,8 @@ pl_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  static int -truncate_allowed (pl_inode_t *pl_inode,  -                  transport_t *transport, pid_t client_pid,  +truncate_allowed (pl_inode_t *pl_inode, +                  transport_t *transport, pid_t client_pid,                    off_t offset)  {          posix_lock_t *l = NULL; @@ -119,8 +119,8 @@ truncate_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          local = frame->local;          if (op_ret != 0) { -                gf_log (this->name, GF_LOG_ERROR,  -                        "got error (errno=%d, stderror=%s) from child",  +                gf_log (this->name, GF_LOG_ERROR, +                        "got error (errno=%d, stderror=%s) from child",                          op_errno, strerror (op_errno));                  goto unwind;          } @@ -315,8 +315,8 @@ pl_open (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags,           fd_t *fd, int32_t wbflags)  {          /* why isn't O_TRUNC being handled ? */ -        STACK_WIND (frame, pl_open_cbk,  -                    FIRST_CHILD(this), FIRST_CHILD(this)->fops->open,  +        STACK_WIND (frame, pl_open_cbk, +                    FIRST_CHILD(this), FIRST_CHILD(this)->fops->open,                      loc, flags & ~O_TRUNC, fd, wbflags);          return 0; @@ -341,7 +341,7 @@ pl_create (call_frame_t *frame, xlator_t *this,             loc_t *loc, int32_t flags, mode_t mode, fd_t *fd)  {          STACK_WIND (frame, pl_create_cbk, -                    FIRST_CHILD (this), FIRST_CHILD (this)->fops->create,  +                    FIRST_CHILD (this), FIRST_CHILD (this)->fops->create,                      loc, flags, mode, fd);          return 0;  } @@ -360,7 +360,7 @@ pl_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  }  int -pl_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  +pl_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                 int32_t op_ret, int32_t op_errno, struct stat *prebuf,                 struct stat *postbuf)  { @@ -454,7 +454,7 @@ pl_readv (call_frame_t *frame, xlator_t *this,                  region.fl_end     = offset + size - 1;                  region.transport  = frame->root->trans;                  region.client_pid = frame->root->pid; -     +                  pthread_mutex_lock (&pl_inode->mutex);                  {                          wind_needed = __rw_allowable (pl_inode, ®ion, @@ -501,7 +501,7 @@ pl_readv (call_frame_t *frame, xlator_t *this,          if (wind_needed) { -                STACK_WIND (frame, pl_readv_cbk,  +                STACK_WIND (frame, pl_readv_cbk,                              FIRST_CHILD (this), FIRST_CHILD (this)->fops->readv,                              fd, size, offset);          } @@ -549,7 +549,7 @@ pl_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,                  region.fl_end     = offset + iov_length (vector, count) - 1;                  region.transport  = frame->root->trans;                  region.client_pid = frame->root->pid; -     +                  pthread_mutex_lock (&pl_inode->mutex);                  {                          wind_needed = __rw_allowable (pl_inode, ®ion, @@ -597,7 +597,7 @@ pl_writev (call_frame_t *frame, xlator_t *this, fd_t *fd,          if (wind_needed) -                STACK_WIND (frame, pl_writev_cbk,  +                STACK_WIND (frame, pl_writev_cbk,                              FIRST_CHILD (this), FIRST_CHILD (this)->fops->writev,                              fd, vector, count, offset, iobref); @@ -835,8 +835,9 @@ out:          return count;  } -void pl_entrylk_xattr_fill (xlator_t *this, inode_t *inode,  -                            dict_t *dict) +void +pl_entrylk_xattr_fill (xlator_t *this, inode_t *inode, +                       dict_t *dict)  {          int32_t     count = 0;          int         ret   = -1; @@ -850,8 +851,9 @@ void pl_entrylk_xattr_fill (xlator_t *this, inode_t *inode,  } -void pl_inodelk_xattr_fill (xlator_t *this, inode_t *inode,  -                            dict_t *dict) +void +pl_inodelk_xattr_fill (xlator_t *this, inode_t *inode, +                       dict_t *dict)  {          int32_t     count = 0;          int         ret   = -1; @@ -865,8 +867,9 @@ void pl_inodelk_xattr_fill (xlator_t *this, inode_t *inode,  } -void pl_posixlk_xattr_fill (xlator_t *this, inode_t *inode,  -                            dict_t *dict) +void +pl_posixlk_xattr_fill (xlator_t *this, inode_t *inode, +                       dict_t *dict)  {          int32_t     count = 0;          int         ret   = -1; @@ -897,6 +900,10 @@ pl_lookup_cbk (call_frame_t *frame,                  goto out;          } +        if (op_ret) { +                goto out; +        } +          local = frame->local;          if (local->entrylk_count_req) @@ -963,7 +970,7 @@ pl_lookup (call_frame_t *frame,  out:          if (ret == -1)                  STACK_UNWIND_STRICT (lookup, frame, -1, 0, NULL, NULL, NULL, NULL); -     +  	return 0;  } @@ -981,15 +988,15 @@ pl_dump_inode_priv (xlator_t *this, inode_t *inode)          ret = inode_ctx_get (inode, this, &tmp_pl_inode); -        if (ret != 0)  +        if (ret != 0)                  return ret; -                 +          pl_inode = (pl_inode_t *)(long)tmp_pl_inode; -        if (!pl_inode)  +        if (!pl_inode)                  return -1; -        gf_proc_dump_build_key(key,  +        gf_proc_dump_build_key(key,                                 "xlator.feature.locks.inode",                                 "%ld.mandatory",inode->ino);          gf_proc_dump_write(key, "%d", pl_inode->mandatory); @@ -1008,7 +1015,7 @@ pl_dump_inode (xlator_t *this)  {          assert(this); -         +          if (this->itable) {                  inode_table_dump(this->itable,                                   "xlator.features.locks.inode_table"); @@ -1028,7 +1035,7 @@ init (xlator_t *this)  	data_t                *trace = NULL;          if (!this->children || this->children->next) { -                gf_log (this->name, GF_LOG_CRITICAL,  +                gf_log (this->name, GF_LOG_CRITICAL,                          "FATAL: posix-locks should have exactly one child");                  return -1;          } @@ -1090,21 +1097,21 @@ fini (xlator_t *this)  int -pl_inodelk (call_frame_t *frame, xlator_t *this,  +pl_inodelk (call_frame_t *frame, xlator_t *this,              const char *volume, loc_t *loc, int32_t cmd, struct flock *flock);  int -pl_finodelk (call_frame_t *frame, xlator_t *this,  +pl_finodelk (call_frame_t *frame, xlator_t *this,               const char *volume, fd_t *fd, int32_t cmd, struct flock *flock);  int -pl_entrylk (call_frame_t *frame, xlator_t *this,  -            const char *volume, loc_t *loc, const char *basename,  +pl_entrylk (call_frame_t *frame, xlator_t *this, +            const char *volume, loc_t *loc, const char *basename,              entrylk_cmd cmd, entrylk_type type);  int -pl_fentrylk (call_frame_t *frame, xlator_t *this,  -             const char *volume, fd_t *fd, const char *basename,  +pl_fentrylk (call_frame_t *frame, xlator_t *this, +             const char *volume, fd_t *fd, const char *basename,               entrylk_cmd cmd, entrylk_type type);  struct xlator_fops fops = { @@ -1137,11 +1144,11 @@ struct xlator_cbks cbks = {  struct volume_options options[] = { -        { .key  = { "mandatory-locks", "mandatory" },  -          .type = GF_OPTION_TYPE_BOOL  +        { .key  = { "mandatory-locks", "mandatory" }, +          .type = GF_OPTION_TYPE_BOOL          }, -	{ .key  = { "trace" },  -	  .type = GF_OPTION_TYPE_BOOL  +	{ .key  = { "trace" }, +	  .type = GF_OPTION_TYPE_BOOL  	},          { .key = {NULL} },  };  | 
