diff options
| author | Anand Avati <avati@redhat.com> | 2013-04-28 12:22:54 -0700 | 
|---|---|---|
| committer | Vijay Bellur <vbellur@redhat.com> | 2013-06-08 14:51:04 -0700 | 
| commit | 40b3bf9c15d4144fa768df061fbbbd15f9e8c8fc (patch) | |
| tree | 67d542a7980b758a86606dcf75d7f0d50669847c /libglusterfs/src/syncop.c | |
| parent | 9f6cb68802c197cc9b788a589c97c8bb71be2804 (diff) | |
gfapi: link inodes in relevant entry FOPs
Do not let inode linking to happen only in lookup(). While
that works, it is inefficient.
Change-Id: I51bbfb6255ec4324ab17ff00566375f49d120c06
BUG: 953694
Signed-off-by: Anand Avati <avati@redhat.com>
Reviewed-on: http://review.gluster.org/5162
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'libglusterfs/src/syncop.c')
| -rw-r--r-- | libglusterfs/src/syncop.c | 32 | 
1 files changed, 28 insertions, 4 deletions
diff --git a/libglusterfs/src/syncop.c b/libglusterfs/src/syncop.c index 9dbce8d542c..ba8c84f26c8 100644 --- a/libglusterfs/src/syncop.c +++ b/libglusterfs/src/syncop.c @@ -1433,6 +1433,9 @@ syncop_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          args->op_ret   = op_ret;          args->op_errno = op_errno; +	if (buf) +		args->iatt1 = *buf; +          __wake (args);          return 0; @@ -1440,7 +1443,7 @@ syncop_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  syncop_create (xlator_t *subvol, loc_t *loc, int32_t flags, mode_t mode, -               fd_t *fd, dict_t *xdata) +               fd_t *fd, dict_t *xdata, struct iatt *iatt)  {          struct syncargs args = {0, }; @@ -1448,6 +1451,9 @@ syncop_create (xlator_t *subvol, loc_t *loc, int32_t flags, mode_t mode,                  loc, flags, mode, 0, fd, xdata);          errno = args.op_errno; +	if (iatt) +		*iatt = args.iatt1; +          return args.op_ret;  } @@ -1744,6 +1750,8 @@ syncop_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          args->op_ret   = op_ret;          args->op_errno = op_errno; +	if (buf) +		args->iatt1 = *buf;          __wake (args); @@ -1751,7 +1759,8 @@ syncop_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  }  int -syncop_symlink (xlator_t *subvol, loc_t *loc, const char *newpath, dict_t *dict) +syncop_symlink (xlator_t *subvol, loc_t *loc, const char *newpath, dict_t *dict, +		struct iatt *iatt)  {          struct syncargs args = {0, }; @@ -1759,6 +1768,9 @@ syncop_symlink (xlator_t *subvol, loc_t *loc, const char *newpath, dict_t *dict)                  newpath, loc, 0, dict);          errno = args.op_errno; +	if (iatt) +		*iatt = args.iatt1; +          return args.op_ret;  } @@ -1812,6 +1824,9 @@ syncop_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          args->op_ret   = op_ret;          args->op_errno = op_errno; +	if (buf) +		args->iatt1 = *buf; +          __wake (args);          return 0; @@ -1819,7 +1834,7 @@ syncop_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int  syncop_mknod (xlator_t *subvol, loc_t *loc, mode_t mode, dev_t rdev, -              dict_t *dict) +              dict_t *dict, struct iatt *iatt)  {          struct syncargs args = {0, }; @@ -1827,6 +1842,9 @@ syncop_mknod (xlator_t *subvol, loc_t *loc, mode_t mode, dev_t rdev,                  loc, mode, rdev, 0, dict);          errno = args.op_errno; +	if (iatt) +		*iatt = args.iatt1; +          return args.op_ret;  } @@ -1844,6 +1862,8 @@ syncop_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          args->op_ret   = op_ret;          args->op_errno = op_errno; +	if (buf) +		args->iatt1 = *buf;          __wake (args); @@ -1852,7 +1872,8 @@ syncop_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,  int -syncop_mkdir (xlator_t *subvol, loc_t *loc, mode_t mode, dict_t *dict) +syncop_mkdir (xlator_t *subvol, loc_t *loc, mode_t mode, dict_t *dict, +	      struct iatt *iatt)  {          struct syncargs args = {0, }; @@ -1860,6 +1881,9 @@ syncop_mkdir (xlator_t *subvol, loc_t *loc, mode_t mode, dict_t *dict)                  loc, mode, 0, dict);          errno = args.op_errno; +	if (iatt) +		*iatt = args.iatt1; +          return args.op_ret;  }  | 
