diff options
| author | Amar Tumballi <amar@gluster.com> | 2012-02-06 17:49:14 +0530 | 
|---|---|---|
| committer | Anand Avati <avati@redhat.com> | 2012-02-14 01:09:02 -0800 | 
| commit | 0e6df0100e13123fe38f28c5a090777e894d8f52 (patch) | |
| tree | 517c60cc953302172cb51f22f4b7aa52e557c1e9 /xlators/features/quiesce/src | |
| parent | e17ac220e4bff53fb89f5bea636acb61e347cf50 (diff) | |
core: add an extra flag to readv()/writev() API
needed to implement a proper handling of open flag alterations
using fcntl() on fd.
Change-Id: Ic280d5db6f1dc0418d5c439abb8db1d3ac21ced0
Signed-off-by: Amar Tumballi <amar@gluster.com>
BUG: 782265
Reviewed-on: http://review.gluster.com/2723
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Anand Avati <avati@redhat.com>
Diffstat (limited to 'xlators/features/quiesce/src')
| -rw-r--r-- | xlators/features/quiesce/src/quiesce.c | 20 | ||||
| -rw-r--r-- | xlators/features/quiesce/src/quiesce.h | 1 | 
2 files changed, 13 insertions, 8 deletions
diff --git a/xlators/features/quiesce/src/quiesce.c b/xlators/features/quiesce/src/quiesce.c index 57b2cdeacb0..1b150b21558 100644 --- a/xlators/features/quiesce/src/quiesce.c +++ b/xlators/features/quiesce/src/quiesce.c @@ -323,7 +323,8 @@ quiesce_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this,          if ((op_ret == -1) && (op_errno == ENOTCONN)) {                  /* Re-transmit (by putting in the queue) */                  stub = fop_readv_stub (frame, default_readv_resume, -                                       local->fd, local->size, local->offset); +                                       local->fd, local->size, local->offset, +                                       local->io_flag);                  if (!stub) {                          STACK_UNWIND_STRICT (readv, frame, -1, ENOMEM,                                               NULL, 0, NULL, NULL); @@ -700,7 +701,8 @@ quiesce_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this,                  /* Re-transmit (by putting in the queue) */                  stub = fop_writev_stub (frame, default_writev_resume,                                          local->fd, local->vector, local->flag, -                                        local->offset, local->iobref); +                                        local->offset, local->io_flags, +                                        local->iobref);                  if (!stub) {                          STACK_UNWIND_STRICT (writev, frame, -1, ENOMEM,                                               NULL, NULL); @@ -1786,7 +1788,7 @@ quiesce_writev (call_frame_t *frame,  		fd_t *fd,  		struct iovec *vector,  		int32_t count, -		off_t off, +		off_t off, uint32_t flags,                  struct iobref *iobref)  {  	quiesce_priv_t *priv = NULL; @@ -1802,13 +1804,13 @@ quiesce_writev (call_frame_t *frame,                              fd,                              vector,                              count, -                            off, +                            off, flags,                              iobref);  	        return 0;          }          stub = fop_writev_stub (frame, default_writev_resume, -                                fd, vector, count, off, iobref); +                                fd, vector, count, off, flags, iobref);          if (!stub) {                  STACK_UNWIND_STRICT (writev, frame, -1, ENOMEM, NULL, NULL);                  return 0; @@ -1824,7 +1826,7 @@ quiesce_readv (call_frame_t *frame,  	       xlator_t *this,  	       fd_t *fd,  	       size_t size, -	       off_t offset) +	       off_t offset, uint32_t flags)  {  	quiesce_priv_t *priv = NULL;          call_stub_t    *stub = NULL; @@ -1837,6 +1839,7 @@ quiesce_readv (call_frame_t *frame,                  local->fd = fd_ref (fd);                  local->size = size;                  local->offset = offset; +                local->io_flag = flags;                  frame->local = local;                  STACK_WIND (frame, @@ -1845,11 +1848,12 @@ quiesce_readv (call_frame_t *frame,                              FIRST_CHILD(this)->fops->readv,                              fd,                              size, -                            offset); +                            offset, flags);  	        return 0;          } -        stub = fop_readv_stub (frame, default_readv_resume, fd, size, offset); +        stub = fop_readv_stub (frame, default_readv_resume, fd, size, offset, +                               flags);          if (!stub) {                  STACK_UNWIND_STRICT (readv, frame, -1, ENOMEM,                                       NULL, 0, NULL, NULL); diff --git a/xlators/features/quiesce/src/quiesce.h b/xlators/features/quiesce/src/quiesce.h index 32b1935d979..1adb70ebe1f 100644 --- a/xlators/features/quiesce/src/quiesce.h +++ b/xlators/features/quiesce/src/quiesce.h @@ -55,6 +55,7 @@ typedef struct {          entrylk_type        type;          gf_xattrop_flags_t  xattrop_flags;          int32_t             wbflags; +        uint32_t            io_flag;  } quiesce_local_t;  #endif  | 
