summaryrefslogtreecommitdiffstats
path: root/libglusterfs
diff options
context:
space:
mode:
Diffstat (limited to 'libglusterfs')
-rw-r--r--libglusterfs/src/call-stub.c34
-rw-r--r--libglusterfs/src/call-stub.h10
-rw-r--r--libglusterfs/src/defaults.c12
-rw-r--r--libglusterfs/src/defaults.h3
-rw-r--r--libglusterfs/src/xlator.h7
5 files changed, 39 insertions, 27 deletions
diff --git a/libglusterfs/src/call-stub.c b/libglusterfs/src/call-stub.c
index 8a090ba83..439fd5711 100644
--- a/libglusterfs/src/call-stub.c
+++ b/libglusterfs/src/call-stub.c
@@ -1078,7 +1078,8 @@ fop_readv_cbk_stub (call_frame_t *frame,
int32_t op_errno,
struct iovec *vector,
int32_t count,
- struct stat *stbuf)
+ struct stat *stbuf,
+ struct iobref *iobref)
{
call_stub_t *stub = NULL;
@@ -1095,8 +1096,7 @@ fop_readv_cbk_stub (call_frame_t *frame,
stub->args.readv_cbk.vector = iov_dup (vector, count);
stub->args.readv_cbk.count = count;
stub->args.readv_cbk.stbuf = *stbuf;
- stub->args.readv_cbk.rsp_refs =
- dict_ref (frame->root->rsp_refs);
+ stub->args.readv_cbk.iobref = iobref_ref (iobref);
}
out:
return stub;
@@ -1109,7 +1109,8 @@ fop_writev_stub (call_frame_t *frame,
fd_t *fd,
struct iovec *vector,
int32_t count,
- off_t off)
+ off_t off,
+ struct iobref *iobref)
{
call_stub_t *stub = NULL;
@@ -1125,9 +1126,7 @@ fop_writev_stub (call_frame_t *frame,
stub->args.writev.vector = iov_dup (vector, count);
stub->args.writev.count = count;
stub->args.writev.off = off;
-
- if (frame->root->req_refs)
- stub->args.writev.req_refs = dict_ref (frame->root->req_refs);
+ stub->args.writev.iobref = iobref_ref (iobref);
out:
return stub;
}
@@ -2406,7 +2405,8 @@ call_resume_wind (call_stub_t *stub)
stub->args.writev.fd,
stub->args.writev.vector,
stub->args.writev.count,
- stub->args.writev.off);
+ stub->args.writev.off,
+ stub->args.writev.iobref);
break;
}
@@ -2978,7 +2978,8 @@ call_resume_unwind (call_stub_t *stub)
stub->args.readv_cbk.op_errno,
stub->args.readv_cbk.vector,
stub->args.readv_cbk.count,
- &stub->args.readv_cbk.stbuf);
+ &stub->args.readv_cbk.stbuf,
+ stub->args.readv_cbk.iobref);
else
stub->args.readv_cbk.fn (stub->frame,
stub->frame->cookie,
@@ -2987,7 +2988,8 @@ call_resume_unwind (call_stub_t *stub)
stub->args.readv_cbk.op_errno,
stub->args.readv_cbk.vector,
stub->args.readv_cbk.count,
- &stub->args.readv_cbk.stbuf);
+ &stub->args.readv_cbk.stbuf,
+ stub->args.readv_cbk.iobref);
}
break;
@@ -3644,12 +3646,12 @@ call_stub_destroy_wind (call_stub_t *stub)
case GF_FOP_WRITE:
{
- dict_t *refs = stub->args.writev.req_refs;
+ struct iobref *iobref = stub->args.writev.iobref;
if (stub->args.writev.fd)
fd_unref (stub->args.writev.fd);
FREE (stub->args.writev.vector);
- if (refs)
- dict_unref (refs);
+ if (iobref)
+ iobref_unref (iobref);
break;
}
@@ -3971,11 +3973,11 @@ call_stub_destroy_unwind (call_stub_t *stub)
case GF_FOP_READ:
{
if (stub->args.readv_cbk.op_ret >= 0) {
- dict_t *refs = stub->args.readv_cbk.rsp_refs;
+ struct iobref *iobref = stub->args.readv_cbk.iobref;
FREE (stub->args.readv_cbk.vector);
- if (refs) {
- dict_unref (refs);
+ if (iobref) {
+ iobref_unref (iobref);
}
}
}
diff --git a/libglusterfs/src/call-stub.h b/libglusterfs/src/call-stub.h
index a970897bb..4a8db9c5f 100644
--- a/libglusterfs/src/call-stub.h
+++ b/libglusterfs/src/call-stub.h
@@ -309,7 +309,7 @@ typedef struct {
struct iovec *vector;
int32_t count;
struct stat stbuf;
- dict_t *rsp_refs;
+ struct iobref *iobref;
} readv_cbk;
/* writev */
@@ -319,7 +319,7 @@ typedef struct {
struct iovec *vector;
int32_t count;
off_t off;
- dict_t *req_refs;
+ struct iobref *iobref;
} writev;
struct {
fop_writev_cbk_t fn;
@@ -905,7 +905,8 @@ fop_readv_cbk_stub (call_frame_t *frame,
int32_t op_errno,
struct iovec *vector,
int32_t count,
- struct stat *stbuf);
+ struct stat *stbuf,
+ struct iobref *iobref);
call_stub_t *
fop_writev_stub (call_frame_t *frame,
@@ -913,7 +914,8 @@ fop_writev_stub (call_frame_t *frame,
fd_t *fd,
struct iovec *vector,
int32_t count,
- off_t off);
+ off_t off,
+ struct iobref *iobref);
call_stub_t *
fop_writev_cbk_stub (call_frame_t *frame,
diff --git a/libglusterfs/src/defaults.c b/libglusterfs/src/defaults.c
index 724f5a792..ca7c34b3a 100644
--- a/libglusterfs/src/defaults.c
+++ b/libglusterfs/src/defaults.c
@@ -641,14 +641,16 @@ default_readv_cbk (call_frame_t *frame,
int32_t op_errno,
struct iovec *vector,
int32_t count,
- struct stat *stbuf)
+ struct stat *stbuf,
+ struct iobref *iobref)
{
STACK_UNWIND (frame,
op_ret,
op_errno,
vector,
count,
- stbuf);
+ stbuf,
+ iobref);
return 0;
}
@@ -691,7 +693,8 @@ default_writev (call_frame_t *frame,
fd_t *fd,
struct iovec *vector,
int32_t count,
- off_t off)
+ off_t off,
+ struct iobref *iobref)
{
STACK_WIND (frame,
default_writev_cbk,
@@ -700,7 +703,8 @@ default_writev (call_frame_t *frame,
fd,
vector,
count,
- off);
+ off,
+ iobref);
return 0;
}
diff --git a/libglusterfs/src/defaults.h b/libglusterfs/src/defaults.h
index 98e15c5bf..a61bdff75 100644
--- a/libglusterfs/src/defaults.h
+++ b/libglusterfs/src/defaults.h
@@ -165,7 +165,8 @@ int32_t default_writev (call_frame_t *frame,
fd_t *fd,
struct iovec *vector,
int32_t count,
- off_t offset);
+ off_t offset,
+ struct iobref *iobref);
int32_t default_flush (call_frame_t *frame,
xlator_t *this,
diff --git a/libglusterfs/src/xlator.h b/libglusterfs/src/xlator.h
index fe50c8147..654e334e7 100644
--- a/libglusterfs/src/xlator.h
+++ b/libglusterfs/src/xlator.h
@@ -57,6 +57,7 @@ typedef int32_t (*event_notify_fn_t) (xlator_t *this,
#include "list.h"
#include "gf-dirent.h"
#include "stack.h"
+#include "iobuf.h"
#include "inode.h"
#include "fd.h"
@@ -290,7 +291,8 @@ typedef int32_t (*fop_readv_cbk_t) (call_frame_t *frame,
int32_t op_errno,
struct iovec *vector,
int32_t count,
- struct stat *stbuf);
+ struct stat *stbuf,
+ struct iobref *iobref);
typedef int32_t (*fop_writev_cbk_t) (call_frame_t *frame,
void *cookie,
@@ -559,7 +561,8 @@ typedef int32_t (*fop_writev_t) (call_frame_t *frame,
fd_t *fd,
struct iovec *vector,
int32_t count,
- off_t offset);
+ off_t offset,
+ struct iobref *iobref);
typedef int32_t (*fop_flush_t) (call_frame_t *frame,
xlator_t *this,