diff options
Diffstat (limited to 'xlators/performance/io-threads')
-rw-r--r-- | xlators/performance/io-threads/src/io-threads.c | 1231 |
1 files changed, 565 insertions, 666 deletions
diff --git a/xlators/performance/io-threads/src/io-threads.c b/xlators/performance/io-threads/src/io-threads.c index 1297395d68e..9cb992e0b49 100644 --- a/xlators/performance/io-threads/src/io-threads.c +++ b/xlators/performance/io-threads/src/io-threads.c @@ -37,12 +37,13 @@ typedef void *(*iot_worker_fn)(void*); void _iot_queue (iot_worker_t *worker, iot_request_t *req); iot_request_t * iot_init_request (call_stub_t *stub); void iot_startup_workers (iot_worker_t **workers, int start_idx, int count, - iot_worker_fn workerfunc); + iot_worker_fn workerfunc); void * iot_worker_unordered (void *arg); void * iot_worker_ordered (void *arg); void iot_startup_worker (iot_worker_t *worker, iot_worker_fn workerfunc); void iot_destroy_request (iot_request_t * req); + /* I know this function modularizes things a bit too much, * but it is easier on the eyes to read this than see all that locking, * queueing, and thread firing in the same curly block, as was the @@ -50,8 +51,8 @@ void iot_destroy_request (iot_request_t * req); */ void iot_request_queue_and_thread_fire (iot_worker_t *worker, - iot_worker_fn workerfunc, - iot_request_t *req) + iot_worker_fn workerfunc, + iot_request_t *req) { pthread_mutex_lock (&worker->qlock); { @@ -66,7 +67,6 @@ iot_request_queue_and_thread_fire (iot_worker_t *worker, } - int iot_unordered_request_balancer (iot_conf_t *conf) { @@ -91,12 +91,11 @@ iot_unordered_request_balancer (iot_conf_t *conf) return idx; } + void -iot_schedule_unordered (iot_conf_t *conf, - inode_t *inode, - call_stub_t *stub) +iot_schedule_unordered (iot_conf_t *conf, inode_t *inode, call_stub_t *stub) { - int32_t idx = 0; + int32_t idx = 0; iot_worker_t *selected_worker = NULL; iot_request_t *req = NULL; @@ -105,9 +104,10 @@ iot_schedule_unordered (iot_conf_t *conf, req = iot_init_request (stub); iot_request_queue_and_thread_fire (selected_worker, - iot_worker_unordered, req); + iot_worker_unordered, req); } + /* Only to be used with ordered requests. */ uint64_t @@ -132,6 +132,7 @@ iot_create_inode_worker_assoc (iot_conf_t * conf, inode_t * inode) return idx; } + /* Assumes inode lock is held. */ int iot_ordered_request_balancer (iot_conf_t *conf, inode_t *inode, uint64_t *idx) @@ -158,19 +159,18 @@ iot_ordered_request_balancer (iot_conf_t *conf, inode_t *inode, uint64_t *idx) return ret; } + void -iot_schedule_ordered (iot_conf_t *conf, - inode_t *inode, - call_stub_t *stub) +iot_schedule_ordered (iot_conf_t *conf, inode_t *inode, call_stub_t *stub) { - uint64_t idx = 0; + uint64_t idx = 0; iot_worker_t *selected_worker = NULL; - iot_request_t * req = NULL; - int balstatus = 0; + iot_request_t *req = NULL; + int balstatus = 0; if (inode == NULL) { gf_log (conf->this->name, GF_LOG_ERROR, - "Got NULL inode for ordered request"); + "Got NULL inode for ordered request"); STACK_UNWIND (stub->frame, -1, EINVAL, NULL); call_stub_destroy (stub); return; @@ -201,43 +201,38 @@ unlock_out: UNLOCK (&inode->lock); } -int32_t -iot_lookup_cbk (call_frame_t *frame, - void * cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - inode_t *inode, - struct stat *buf, - dict_t *xattr) + +int +iot_lookup_cbk (call_frame_t *frame, void * cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, + inode_t *inode, struct stat *buf, dict_t *xattr) { STACK_UNWIND (frame, op_ret, op_errno, inode, buf, xattr); return 0; } -int32_t -iot_lookup_wrapper (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - dict_t *xattr_req) + +int +iot_lookup_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, + dict_t *xattr_req) { - STACK_WIND (frame, iot_lookup_cbk, FIRST_CHILD (this), - FIRST_CHILD (this)->fops->lookup, loc, xattr_req); + STACK_WIND (frame, iot_lookup_cbk, + FIRST_CHILD (this), + FIRST_CHILD (this)->fops->lookup, + loc, xattr_req); return 0; } -int32_t -iot_lookup (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - dict_t *xattr_req) + +int +iot_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xattr_req) { call_stub_t *stub = NULL; stub = fop_lookup_stub (frame, iot_lookup_wrapper, loc, xattr_req); if (!stub) { gf_log (this->name, GF_LOG_ERROR, - "cannot get lookup stub"); + "cannot get lookup stub"); STACK_UNWIND (frame, -1, ENOMEM, NULL, NULL, NULL); return 0; } @@ -246,34 +241,30 @@ iot_lookup (call_frame_t *frame, return 0; } -int32_t -iot_chmod_cbk (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct stat *buf) + +int +iot_chmod_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct stat *buf) { STACK_UNWIND (frame, op_ret, op_errno, buf); return 0; } -int32_t -iot_chmod_wrapper (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - mode_t mode) + +int +iot_chmod_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, + mode_t mode) { - STACK_WIND (frame, iot_chmod_cbk, FIRST_CHILD (this), - FIRST_CHILD (this)->fops->chmod, loc, mode); + STACK_WIND (frame, iot_chmod_cbk, + FIRST_CHILD (this), + FIRST_CHILD (this)->fops->chmod, + loc, mode); return 0; } -int32_t -iot_chmod (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - mode_t mode) + +int +iot_chmod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode) { call_stub_t *stub = NULL; fd_t *fd = NULL; @@ -288,43 +279,37 @@ iot_chmod (call_frame_t *frame, fd = fd_lookup (loc->inode, frame->root->pid); if (fd == NULL) iot_schedule_unordered ((iot_conf_t *)this->private, - loc->inode, stub); + loc->inode, stub); else { iot_schedule_ordered ((iot_conf_t *)this->private, loc->inode, - stub); + stub); fd_unref (fd); } return 0; } -int32_t -iot_fchmod_cbk (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct stat *buf) + +int +iot_fchmod_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct stat *buf) { STACK_UNWIND (frame, op_ret, op_errno, buf); return 0; } -int32_t -iot_fchmod_wrapper (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - mode_t mode) + +int +iot_fchmod_wrapper (call_frame_t *frame, xlator_t *this, + fd_t *fd, mode_t mode) { STACK_WIND (frame, iot_fchmod_cbk, FIRST_CHILD (this), - FIRST_CHILD (this)->fops->fchmod, fd, mode); + FIRST_CHILD (this)->fops->fchmod, fd, mode); return 0; } -int32_t -iot_fchmod (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - mode_t mode) + +int +iot_fchmod (call_frame_t *frame, xlator_t *this, fd_t *fd, mode_t mode) { call_stub_t *stub = NULL; @@ -339,36 +324,31 @@ iot_fchmod (call_frame_t *frame, return 0; } -int32_t -iot_chown_cbk (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct stat *buf) + +int +iot_chown_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct stat *buf) { STACK_UNWIND (frame, op_ret, op_errno, buf); return 0; } -int32_t -iot_chown_wrapper (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - uid_t uid, - gid_t gid) + +int +iot_chown_wrapper (call_frame_t *frame, xlator_t *this, + loc_t *loc, uid_t uid, gid_t gid) { - STACK_WIND (frame, iot_chown_cbk, FIRST_CHILD (this), - FIRST_CHILD (this)->fops->chown, loc, uid, gid); + STACK_WIND (frame, iot_chown_cbk, + FIRST_CHILD (this), + FIRST_CHILD (this)->fops->chown, + loc, uid, gid); return 0; } -int32_t -iot_chown (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - uid_t uid, - gid_t gid) + +int +iot_chown (call_frame_t *frame, xlator_t *this, + loc_t *loc, uid_t uid, gid_t gid) { call_stub_t *stub = NULL; fd_t *fd = NULL; @@ -383,46 +363,39 @@ iot_chown (call_frame_t *frame, fd = fd_lookup (loc->inode, frame->root->pid); if (fd == NULL) iot_schedule_unordered ((iot_conf_t *)this->private, - loc->inode, stub); + loc->inode, stub); else { iot_schedule_ordered ((iot_conf_t *)this->private, loc->inode, - stub); + stub); fd_unref (fd); } return 0; } -int32_t -iot_fchown_cbk (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct stat *buf) + +int +iot_fchown_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct stat *buf) { STACK_UNWIND (frame, op_ret, op_errno, buf); return 0; } -int32_t -iot_fchown_wrapper (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - uid_t uid, - gid_t gid) + +int +iot_fchown_wrapper (call_frame_t *frame, xlator_t *this, + fd_t *fd, uid_t uid, gid_t gid) { STACK_WIND (frame, iot_fchown_cbk, FIRST_CHILD (this), - FIRST_CHILD (this)->fops->fchown, fd, uid, gid); + FIRST_CHILD (this)->fops->fchown, fd, uid, gid); return 0; } -int32_t -iot_fchown (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - uid_t uid, - gid_t gid) + +int +iot_fchown (call_frame_t *frame, xlator_t *this, + fd_t *fd, uid_t uid, gid_t gid) { call_stub_t *stub = NULL; @@ -438,33 +411,28 @@ iot_fchown (call_frame_t *frame, return 0; } -int32_t -iot_access_cbk (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno) + +int +iot_access_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno) { STACK_UNWIND (frame, op_ret, op_errno); return 0; } -int32_t -iot_access_wrapper (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - int32_t mask) + +int +iot_access_wrapper (call_frame_t *frame, xlator_t *this, + loc_t *loc, int32_t mask) { STACK_WIND (frame, iot_access_cbk, FIRST_CHILD (this), - FIRST_CHILD (this)->fops->access, loc, mask); + FIRST_CHILD (this)->fops->access, loc, mask); return 0; } -int32_t -iot_access (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - int32_t mask) + +int +iot_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask) { call_stub_t *stub = NULL; @@ -480,34 +448,31 @@ iot_access (call_frame_t *frame, return 0; } -int32_t -iot_readlink_cbk (call_frame_t *frame, - void * cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - const char *path) + +int +iot_readlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, + const char *path) { STACK_UNWIND (frame, op_ret, op_errno, path); return 0; } -int32_t -iot_readlink_wrapper (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - size_t size) + +int +iot_readlink_wrapper (call_frame_t *frame, xlator_t *this, + loc_t *loc, size_t size) { - STACK_WIND (frame, iot_readlink_cbk, FIRST_CHILD (this), - FIRST_CHILD (this)->fops->readlink, loc, size); + STACK_WIND (frame, iot_readlink_cbk, + FIRST_CHILD (this), + FIRST_CHILD (this)->fops->readlink, + loc, size); return 0; } -int32_t -iot_readlink (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - size_t size) + +int +iot_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size) { call_stub_t *stub = NULL; @@ -522,37 +487,30 @@ iot_readlink (call_frame_t *frame, return 0; } -int32_t -iot_mknod_cbk (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - inode_t *inode, - struct stat *buf) + +int +iot_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, + inode_t *inode, struct stat *buf) { STACK_UNWIND (frame, op_ret, op_errno, inode, buf); return 0; } -int32_t -iot_mknod_wrapper (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - mode_t mode, - dev_t rdev) + +int +iot_mknod_wrapper (call_frame_t *frame, xlator_t *this, + loc_t *loc, mode_t mode, dev_t rdev) { STACK_WIND (frame, iot_mknod_cbk, FIRST_CHILD (this), - FIRST_CHILD (this)->fops->mknod, loc, mode, rdev); + FIRST_CHILD (this)->fops->mknod, loc, mode, rdev); return 0; } -int32_t -iot_mknod (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - mode_t mode, - dev_t rdev) + +int +iot_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, + mode_t mode, dev_t rdev) { call_stub_t *stub = NULL; @@ -568,35 +526,29 @@ iot_mknod (call_frame_t *frame, return 0; } -int32_t -iot_mkdir_cbk (call_frame_t *frame, - void * cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - inode_t *inode, - struct stat *buf) + +int +iot_mkdir_cbk (call_frame_t *frame, void * cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, + inode_t *inode, struct stat *buf) { STACK_UNWIND (frame, op_ret, op_errno, inode, buf); return 0; } -int32_t -iot_mkdir_wrapper (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - mode_t mode) + +int +iot_mkdir_wrapper (call_frame_t *frame, xlator_t *this, + loc_t *loc, mode_t mode) { STACK_WIND (frame, iot_mkdir_cbk, FIRST_CHILD (this), - FIRST_CHILD (this)->fops->mkdir, loc, mode); + FIRST_CHILD (this)->fops->mkdir, loc, mode); return 0; } -int32_t -iot_mkdir (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - mode_t mode) + +int +iot_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode) { call_stub_t *stub = NULL; @@ -611,31 +563,27 @@ iot_mkdir (call_frame_t *frame, return 0; } -int32_t -iot_rmdir_cbk (call_frame_t *frame, - void * cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno) + +int +iot_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno) { STACK_UNWIND (frame, op_ret, op_errno); return 0; } -int32_t -iot_rmdir_wrapper (call_frame_t *frame, - xlator_t *this, - loc_t *loc) + +int +iot_rmdir_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc) { STACK_WIND (frame, iot_rmdir_cbk, FIRST_CHILD (this), - FIRST_CHILD (this)->fops->rmdir, loc); + FIRST_CHILD (this)->fops->rmdir, loc); return 0; } -int32_t -iot_rmdir (call_frame_t *frame, - xlator_t *this, - loc_t *loc) + +int +iot_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc) { call_stub_t *stub = NULL; @@ -650,35 +598,30 @@ iot_rmdir (call_frame_t *frame, return 0; } -int32_t -iot_symlink_cbk (call_frame_t *frame, - void * cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - inode_t *inode, - struct stat *buf) + +int +iot_symlink_cbk (call_frame_t *frame, void * cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, + inode_t *inode, struct stat *buf) { STACK_UNWIND (frame, op_ret, op_errno, inode, buf); return 0; } -int32_t -iot_symlink_wrapper (call_frame_t *frame, - xlator_t *this, - const char *linkname, - loc_t *loc) + +int +iot_symlink_wrapper (call_frame_t *frame, xlator_t *this, + const char *linkname, loc_t *loc) { STACK_WIND (frame, iot_symlink_cbk, FIRST_CHILD (this), - FIRST_CHILD (this)->fops->symlink, linkname, loc); + FIRST_CHILD (this)->fops->symlink, linkname, loc); return 0; } -int32_t -iot_symlink (call_frame_t *frame, - xlator_t *this, - const char *linkname, - loc_t *loc) + +int +iot_symlink (call_frame_t *frame, xlator_t *this, const char *linkname, + loc_t *loc) { call_stub_t *stub = NULL; @@ -693,34 +636,29 @@ iot_symlink (call_frame_t *frame, return 0; } -int32_t -iot_rename_cbk (call_frame_t *frame, - void * cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct stat *buf) + +int +iot_rename_cbk (call_frame_t *frame, void * cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct stat *buf) { STACK_UNWIND (frame, op_ret, op_errno, buf); return 0; } -int32_t -iot_rename_wrapper (call_frame_t *frame, - xlator_t *this, - loc_t *oldloc, - loc_t *newloc) + +int +iot_rename_wrapper (call_frame_t *frame, xlator_t *this, + loc_t *oldloc, loc_t *newloc) { STACK_WIND (frame, iot_rename_cbk, FIRST_CHILD (this), - FIRST_CHILD (this)->fops->rename, oldloc, newloc); + FIRST_CHILD (this)->fops->rename, oldloc, newloc); return 0; } -int32_t -iot_rename (call_frame_t *frame, - xlator_t *this, - loc_t *oldloc, - loc_t *newloc) + +int +iot_rename (call_frame_t *frame, xlator_t *this, + loc_t *oldloc, loc_t *newloc) { call_stub_t *stub = NULL; @@ -732,47 +670,40 @@ iot_rename (call_frame_t *frame, } iot_schedule_unordered ((iot_conf_t *)this->private, oldloc->inode, - stub); + stub); return 0; } -int32_t -iot_open_cbk (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - fd_t *fd) + +int +iot_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, fd_t *fd) { STACK_UNWIND (frame, op_ret, op_errno, fd); return 0; } -static int32_t -iot_open_wrapper (call_frame_t * frame, - xlator_t * this, - loc_t *loc, - int32_t flags, - fd_t * fd) + +int +iot_open_wrapper (call_frame_t * frame, xlator_t * this, loc_t *loc, + int32_t flags, fd_t * fd) { STACK_WIND (frame, iot_open_cbk, FIRST_CHILD (this), - FIRST_CHILD (this)->fops->open, loc, flags, fd); + FIRST_CHILD (this)->fops->open, loc, flags, fd); return 0; } -int32_t -iot_open (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - int32_t flags, - fd_t *fd) + +int +iot_open (call_frame_t *frame, xlator_t *this, + loc_t *loc, int32_t flags, fd_t *fd) { call_stub_t *stub = NULL; stub = fop_open_stub (frame, iot_open_wrapper, loc, flags, fd); if (!stub) { gf_log (this->name, GF_LOG_ERROR, - "cannot get open call stub"); + "cannot get open call stub"); STACK_UNWIND (frame, -1, ENOMEM, NULL, 0); return 0; } @@ -782,107 +713,79 @@ iot_open (call_frame_t *frame, } -int32_t -iot_create_cbk (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - fd_t *fd, - inode_t *inode, - struct stat *stbuf) +int +iot_create_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, + fd_t *fd, inode_t *inode, struct stat *stbuf) { STACK_UNWIND (frame, op_ret, op_errno, fd, inode, stbuf); return 0; } -int32_t -iot_create_wrapper (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - int32_t flags, - mode_t mode, - fd_t *fd) -{ - STACK_WIND (frame, - iot_create_cbk, + +int +iot_create_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, + int32_t flags, mode_t mode, fd_t *fd) +{ + STACK_WIND (frame, iot_create_cbk, FIRST_CHILD(this), FIRST_CHILD(this)->fops->create, - loc, - flags, - mode, - fd); + loc, flags, mode, fd); return 0; } -int32_t -iot_create (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - int32_t flags, - mode_t mode, - fd_t *fd) + +int +iot_create (call_frame_t *frame, xlator_t *this, loc_t *loc, + int32_t flags, mode_t mode, fd_t *fd) { call_stub_t *stub = NULL; stub = fop_create_stub (frame, iot_create_wrapper, loc, flags, mode, - fd); + fd); if (!stub) { gf_log (this->name, GF_LOG_ERROR, - "cannot get create call stub"); + "cannot get create call stub"); STACK_UNWIND (frame, -1, ENOMEM, NULL, 0); return 0; } + iot_schedule_unordered ((iot_conf_t *)this->private, loc->inode, stub); return 0; } -int32_t -iot_readv_cbk (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct iovec *vector, - int32_t count, - struct stat *stbuf, - struct iobref *iobref) + +int +iot_readv_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, + struct iovec *vector, int32_t count, + struct stat *stbuf, struct iobref *iobref) { STACK_UNWIND (frame, op_ret, op_errno, vector, count, stbuf, iobref); return 0; } -static int32_t -iot_readv_wrapper (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - size_t size, - off_t offset) + +int +iot_readv_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, + size_t size, off_t offset) { - STACK_WIND (frame, - iot_readv_cbk, + STACK_WIND (frame, iot_readv_cbk, FIRST_CHILD(this), FIRST_CHILD(this)->fops->readv, - fd, - size, - offset); + fd, size, offset); return 0; } -int32_t -iot_readv (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - size_t size, + +int +iot_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, off_t offset) { - call_stub_t *stub; - stub = fop_readv_stub (frame, - iot_readv_wrapper, - fd, - size, - offset); + call_stub_t *stub = NULL; + + stub = fop_readv_stub (frame, iot_readv_wrapper, fd, size, offset); if (!stub) { gf_log (this->name, GF_LOG_ERROR, "cannot get readv call stub"); @@ -894,41 +797,36 @@ iot_readv (call_frame_t *frame, return 0; } -int32_t -iot_flush_cbk (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno) + +int +iot_flush_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno) { STACK_UNWIND (frame, op_ret, op_errno); return 0; } -static int32_t -iot_flush_wrapper (call_frame_t *frame, - xlator_t *this, - fd_t *fd) + +int +iot_flush_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd) { - STACK_WIND (frame, - iot_flush_cbk, + STACK_WIND (frame, iot_flush_cbk, FIRST_CHILD(this), FIRST_CHILD(this)->fops->flush, fd); return 0; } -int32_t -iot_flush (call_frame_t *frame, - xlator_t *this, - fd_t *fd) + +int +iot_flush (call_frame_t *frame, xlator_t *this, fd_t *fd) { - call_stub_t *stub; - stub = fop_flush_stub (frame, - iot_flush_wrapper, - fd); + call_stub_t *stub = NULL; + + stub = fop_flush_stub (frame, iot_flush_wrapper, fd); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot get flush_cbk call stub"); + gf_log (this->name, GF_LOG_ERROR, + "cannot get flush_cbk call stub"); STACK_UNWIND (frame, -1, ENOMEM); return 0; } @@ -937,45 +835,37 @@ iot_flush (call_frame_t *frame, return 0; } -int32_t -iot_fsync_cbk (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno) + +int +iot_fsync_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno) { STACK_UNWIND (frame, op_ret, op_errno); return 0; } -static int32_t -iot_fsync_wrapper (call_frame_t *frame, - xlator_t *this, - fd_t *fd, + +int +iot_fsync_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t datasync) { - STACK_WIND (frame, - iot_fsync_cbk, + STACK_WIND (frame, iot_fsync_cbk, FIRST_CHILD (this), FIRST_CHILD (this)->fops->fsync, - fd, - datasync); + fd, datasync); return 0; } -int32_t -iot_fsync (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - int32_t datasync) + +int +iot_fsync (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t datasync) { - call_stub_t *stub; - stub = fop_fsync_stub (frame, - iot_fsync_wrapper, - fd, - datasync); + call_stub_t *stub = NULL; + + stub = fop_fsync_stub (frame, iot_fsync_wrapper, fd, datasync); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot get fsync_cbk call stub"); + gf_log (this->name, GF_LOG_ERROR, + "cannot get fsync_cbk call stub"); STACK_UNWIND (frame, -1, ENOMEM); return 0; } @@ -984,55 +874,44 @@ iot_fsync (call_frame_t *frame, return 0; } -int32_t -iot_writev_cbk (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, + +int +iot_writev_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct stat *stbuf) { STACK_UNWIND (frame, op_ret, op_errno, stbuf); return 0; } -static int32_t -iot_writev_wrapper (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - struct iovec *vector, - int32_t count, - off_t offset, - struct iobref *iobref) + +int +iot_writev_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, + struct iovec *vector, int32_t count, + off_t offset, struct iobref *iobref) { - STACK_WIND (frame, - iot_writev_cbk, + STACK_WIND (frame, iot_writev_cbk, FIRST_CHILD(this), FIRST_CHILD(this)->fops->writev, - fd, - vector, - count, - offset, - iobref); + fd, vector, count, offset, iobref); return 0; } -int32_t -iot_writev (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - struct iovec *vector, - int32_t count, - off_t offset, + +int +iot_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, + struct iovec *vector, int32_t count, off_t offset, struct iobref *iobref) { - call_stub_t *stub; + call_stub_t *stub = NULL; + stub = fop_writev_stub (frame, iot_writev_wrapper, fd, vector, count, offset, iobref); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot get writev call stub"); - STACK_UNWIND (frame, -1, ENOMEM); + gf_log (this->name, GF_LOG_ERROR, + "cannot get writev call stub"); + STACK_UNWIND (frame, -1, ENOMEM, NULL); return 0; } @@ -1043,49 +922,37 @@ iot_writev (call_frame_t *frame, int32_t -iot_lk_cbk (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct flock *flock) +iot_lk_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct flock *flock) { STACK_UNWIND (frame, op_ret, op_errno, flock); return 0; } -static int32_t -iot_lk_wrapper (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - int32_t cmd, - struct flock *flock) +int +iot_lk_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, + int32_t cmd, struct flock *flock) { - STACK_WIND (frame, - iot_lk_cbk, + STACK_WIND (frame, iot_lk_cbk, FIRST_CHILD(this), FIRST_CHILD(this)->fops->lk, - fd, - cmd, - flock); + fd, cmd, flock); return 0; } -int32_t -iot_lk (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - int32_t cmd, +int +iot_lk (call_frame_t *frame, xlator_t *this, fd_t *fd, int32_t cmd, struct flock *flock) { - call_stub_t *stub; - stub = fop_lk_stub (frame, iot_lk_wrapper, - fd, cmd, flock); + call_stub_t *stub = NULL; + + stub = fop_lk_stub (frame, iot_lk_wrapper, fd, cmd, flock); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot get fop_lk call stub"); + gf_log (this->name, GF_LOG_ERROR, + "cannot get fop_lk call stub"); STACK_UNWIND (frame, -1, ENOMEM, NULL); return 0; } @@ -1095,45 +962,36 @@ iot_lk (call_frame_t *frame, } -int32_t -iot_stat_cbk (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct stat *buf) +int +iot_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct stat *buf) { STACK_UNWIND (frame, op_ret, op_errno, buf); return 0; } -static int32_t -iot_stat_wrapper (call_frame_t *frame, - xlator_t *this, - loc_t *loc) +int +iot_stat_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc) { - STACK_WIND (frame, - iot_stat_cbk, + STACK_WIND (frame, iot_stat_cbk, FIRST_CHILD(this), FIRST_CHILD(this)->fops->stat, loc); return 0; } -int32_t -iot_stat (call_frame_t *frame, - xlator_t *this, - loc_t *loc) + +int +iot_stat (call_frame_t *frame, xlator_t *this, loc_t *loc) { - call_stub_t *stub; - fd_t *fd = NULL; + call_stub_t *stub = NULL; + fd_t *fd = NULL; - stub = fop_stat_stub (frame, - iot_stat_wrapper, - loc); + stub = fop_stat_stub (frame, iot_stat_wrapper, loc); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot get fop_stat call stub"); + gf_log (this->name, GF_LOG_ERROR, + "cannot get fop_stat call stub"); STACK_UNWIND (frame, -1, ENOMEM, NULL); return 0; } @@ -1143,10 +1001,10 @@ iot_stat (call_frame_t *frame, */ if (fd == NULL) iot_schedule_unordered ((iot_conf_t *)this->private, - loc->inode, stub); + loc->inode, stub); else { iot_schedule_ordered ((iot_conf_t *)this->private, loc->inode, - stub); + stub); fd_unref (fd); } @@ -1154,42 +1012,35 @@ iot_stat (call_frame_t *frame, } -int32_t -iot_fstat_cbk (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct stat *buf) +int +iot_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct stat *buf) { STACK_UNWIND (frame, op_ret, op_errno, buf); return 0; } -static int32_t -iot_fstat_wrapper (call_frame_t *frame, - xlator_t *this, - fd_t *fd) + +int +iot_fstat_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd) { - STACK_WIND (frame, - iot_fstat_cbk, + STACK_WIND (frame, iot_fstat_cbk, FIRST_CHILD(this), FIRST_CHILD(this)->fops->fstat, fd); return 0; } -int32_t -iot_fstat (call_frame_t *frame, - xlator_t *this, - fd_t *fd) + +int +iot_fstat (call_frame_t *frame, xlator_t *this, fd_t *fd) { - call_stub_t *stub; - stub = fop_fstat_stub (frame, - iot_fstat_wrapper, - fd); + call_stub_t *stub = NULL; + + stub = fop_fstat_stub (frame, iot_fstat_wrapper, fd); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot get fop_fstat call stub"); + gf_log (this->name, GF_LOG_ERROR, + "cannot get fop_fstat call stub"); STACK_UNWIND (frame, -1, ENOMEM, NULL); return 0; } @@ -1199,48 +1050,39 @@ iot_fstat (call_frame_t *frame, return 0; } -int32_t -iot_truncate_cbk (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct stat *buf) + +int +iot_truncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct stat *buf) { STACK_UNWIND (frame, op_ret, op_errno, buf); return 0; } -static int32_t -iot_truncate_wrapper (call_frame_t *frame, - xlator_t *this, - loc_t *loc, + +int +iot_truncate_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset) { - STACK_WIND (frame, - iot_truncate_cbk, + STACK_WIND (frame, iot_truncate_cbk, FIRST_CHILD(this), FIRST_CHILD(this)->fops->truncate, - loc, - offset); + loc, offset); return 0; } -int32_t -iot_truncate (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - off_t offset) + +int +iot_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset) { call_stub_t *stub; - fd_t *fd = NULL; + fd_t *fd = NULL; + + stub = fop_truncate_stub (frame, iot_truncate_wrapper, loc, offset); - stub = fop_truncate_stub (frame, - iot_truncate_wrapper, - loc, - offset); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot get fop_stat call stub"); + gf_log (this->name, GF_LOG_ERROR, + "cannot get fop_stat call stub"); STACK_UNWIND (frame, -1, ENOMEM, NULL); return 0; } @@ -1248,56 +1090,47 @@ iot_truncate (call_frame_t *frame, fd = fd_lookup (loc->inode, frame->root->pid); if (fd == NULL) iot_schedule_unordered ((iot_conf_t *)this->private, - loc->inode, stub); + loc->inode, stub); else { iot_schedule_ordered ((iot_conf_t *)this->private, loc->inode, - stub); + stub); fd_unref (fd); } return 0; } -int32_t -iot_ftruncate_cbk (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - struct stat *buf) + +int +iot_ftruncate_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct stat *buf) { STACK_UNWIND (frame, op_ret, op_errno, buf); return 0; } -static int32_t -iot_ftruncate_wrapper (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - off_t offset) + +int +iot_ftruncate_wrapper (call_frame_t *frame, xlator_t *this, + fd_t *fd, off_t offset) { - STACK_WIND (frame, - iot_ftruncate_cbk, + STACK_WIND (frame, iot_ftruncate_cbk, FIRST_CHILD(this), FIRST_CHILD(this)->fops->ftruncate, - fd, - offset); + fd, offset); return 0; } -int32_t -iot_ftruncate (call_frame_t *frame, - xlator_t *this, - fd_t *fd, - off_t offset) + +int +iot_ftruncate (call_frame_t *frame, xlator_t *this, fd_t *fd, off_t offset) { call_stub_t *stub; - stub = fop_ftruncate_stub (frame, - iot_ftruncate_wrapper, - fd, - offset); + + stub = fop_ftruncate_stub (frame, iot_ftruncate_wrapper, fd, offset); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot get fop_ftruncate call stub"); + gf_log (this->name, GF_LOG_ERROR, + "cannot get fop_ftruncate call stub"); STACK_UNWIND (frame, -1, ENOMEM, NULL); return 0; } @@ -1306,49 +1139,40 @@ iot_ftruncate (call_frame_t *frame, return 0; } -int32_t -iot_utimens_cbk (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, + +int +iot_utimens_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct stat *buf) { STACK_UNWIND (frame, op_ret, op_errno, buf); return 0; } -static int32_t -iot_utimens_wrapper (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - struct timespec tv[2]) + +int +iot_utimens_wrapper (call_frame_t *frame, xlator_t *this, + loc_t *loc, struct timespec tv[2]) { - STACK_WIND (frame, - iot_utimens_cbk, + STACK_WIND (frame, iot_utimens_cbk, FIRST_CHILD(this), FIRST_CHILD(this)->fops->utimens, - loc, - tv); - - return 0; + loc, tv); + return 0; } -int32_t -iot_utimens (call_frame_t *frame, - xlator_t *this, - loc_t *loc, + +int +iot_utimens (call_frame_t *frame, xlator_t *this, loc_t *loc, struct timespec tv[2]) { call_stub_t *stub; - fd_t *fd = NULL; + fd_t *fd = NULL; - stub = fop_utimens_stub (frame, - iot_utimens_wrapper, - loc, - tv); + stub = fop_utimens_stub (frame, iot_utimens_wrapper, loc, tv); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot get fop_utimens call stub"); + gf_log (this->name, GF_LOG_ERROR, + "cannot get fop_utimens call stub"); STACK_UNWIND (frame, -1, ENOMEM, NULL); return 0; } @@ -1356,9 +1180,10 @@ iot_utimens (call_frame_t *frame, fd = fd_lookup (loc->inode, frame->root->pid); if (fd == NULL) iot_schedule_unordered ((iot_conf_t *)this->private, - loc->inode, stub); + loc->inode, stub); else { - iot_schedule_ordered ((iot_conf_t *)this->private, loc->inode, stub); + iot_schedule_ordered ((iot_conf_t *)this->private, loc->inode, + stub); fd_unref (fd); } @@ -1366,49 +1191,39 @@ iot_utimens (call_frame_t *frame, } -int32_t -iot_checksum_cbk (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno, - uint8_t *file_checksum, - uint8_t *dir_checksum) +int +iot_checksum_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, + uint8_t *file_checksum, uint8_t *dir_checksum) { STACK_UNWIND (frame, op_ret, op_errno, file_checksum, dir_checksum); return 0; } -static int32_t -iot_checksum_wrapper (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - int32_t flags) + +int +iot_checksum_wrapper (call_frame_t *frame, xlator_t *this, + loc_t *loc, int32_t flags) { - STACK_WIND (frame, - iot_checksum_cbk, + STACK_WIND (frame, iot_checksum_cbk, FIRST_CHILD(this), FIRST_CHILD(this)->fops->checksum, - loc, - flags); + loc, flags); return 0; } -int32_t -iot_checksum (call_frame_t *frame, - xlator_t *this, - loc_t *loc, - int32_t flags) + +int +iot_checksum (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags) { call_stub_t *stub = NULL; - stub = fop_checksum_stub (frame, - iot_checksum_wrapper, - loc, - flags); + stub = fop_checksum_stub (frame, iot_checksum_wrapper, loc, flags); + if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot get fop_checksum call stub"); + gf_log (this->name, GF_LOG_ERROR, + "cannot get fop_checksum call stub"); STACK_UNWIND (frame, -1, ENOMEM, NULL, NULL); return 0; } @@ -1418,24 +1233,19 @@ iot_checksum (call_frame_t *frame, } -int32_t -iot_unlink_cbk (call_frame_t *frame, - void *cookie, - xlator_t *this, - int32_t op_ret, - int32_t op_errno) +int +iot_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno) { STACK_UNWIND (frame, op_ret, op_errno); return 0; } -static int32_t -iot_unlink_wrapper (call_frame_t *frame, - xlator_t *this, - loc_t *loc) + +int +iot_unlink_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc) { - STACK_WIND (frame, - iot_unlink_cbk, + STACK_WIND (frame, iot_unlink_cbk, FIRST_CHILD(this), FIRST_CHILD(this)->fops->unlink, loc); @@ -1443,15 +1253,15 @@ iot_unlink_wrapper (call_frame_t *frame, return 0; } -int32_t -iot_unlink (call_frame_t *frame, - xlator_t *this, - loc_t *loc) + +int +iot_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc) { call_stub_t *stub = NULL; stub = fop_unlink_stub (frame, iot_unlink_wrapper, loc); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot get fop_unlink call stub"); + gf_log (this->name, GF_LOG_ERROR, + "cannot get fop_unlink call stub"); STACK_UNWIND (frame, -1, ENOMEM); return 0; } @@ -1460,24 +1270,27 @@ iot_unlink (call_frame_t *frame, return 0; } + int iot_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, inode_t *inode, - struct stat *buf) + int32_t op_ret, int32_t op_errno, inode_t *inode, + struct stat *buf) { STACK_UNWIND (frame, op_ret, op_errno, inode, buf); return 0; } + int iot_link_wrapper (call_frame_t *frame, xlator_t *this, loc_t *old, loc_t *new) { STACK_WIND (frame, iot_link_cbk, FIRST_CHILD (this), - FIRST_CHILD (this)->fops->link, old, new); + FIRST_CHILD (this)->fops->link, old, new); return 0; } + int iot_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc) { @@ -1496,22 +1309,25 @@ iot_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc) return 0; } + int iot_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, fd_t *fd) + int32_t op_ret, int32_t op_errno, fd_t *fd) { STACK_UNWIND (frame, op_ret, op_errno, fd); return 0; } + int iot_opendir_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd) { STACK_WIND (frame, iot_opendir_cbk, FIRST_CHILD (this), - FIRST_CHILD (this)->fops->opendir, loc, fd); + FIRST_CHILD (this)->fops->opendir, loc, fd); return 0; } + int iot_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd) { @@ -1529,23 +1345,26 @@ iot_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd) return 0; } + int iot_fsyncdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno) + int32_t op_ret, int32_t op_errno) { STACK_UNWIND (frame, op_ret, op_errno); return 0; } + int iot_fsyncdir_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, int datasync) { STACK_WIND (frame, iot_fsyncdir_cbk, FIRST_CHILD (this), - FIRST_CHILD (this)->fops->fsyncdir, fd, datasync); + FIRST_CHILD (this)->fops->fsyncdir, fd, datasync); return 0; } + int iot_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, int datasync) { @@ -1562,14 +1381,16 @@ iot_fsyncdir (call_frame_t *frame, xlator_t *this, fd_t *fd, int datasync) return 0; } + int iot_statfs_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct statvfs *buf) + int32_t op_ret, int32_t op_errno, struct statvfs *buf) { STACK_UNWIND (frame, op_ret, op_errno, buf); return 0; } + int iot_statfs_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc) { @@ -1578,6 +1399,7 @@ iot_statfs_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc) return 0; } + int iot_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc) { @@ -1594,6 +1416,7 @@ iot_statfs (call_frame_t *frame, xlator_t *this, loc_t *loc) return 0; } + int iot_setxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, int32_t op_errno) @@ -1602,6 +1425,7 @@ iot_setxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, return 0; } + int iot_setxattr_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *dict, int32_t flags) @@ -1611,6 +1435,7 @@ iot_setxattr_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, return 0; } + int iot_setxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *dict, int32_t flags) @@ -1638,6 +1463,7 @@ iot_setxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *dict, return 0; } + int iot_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, int32_t op_errno, dict_t *dict) @@ -1646,6 +1472,7 @@ iot_getxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, return 0; } + int iot_getxattr_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, const char *name) @@ -1655,6 +1482,7 @@ iot_getxattr_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, return 0; } + int iot_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, const char *name) @@ -1671,23 +1499,27 @@ iot_getxattr (call_frame_t *frame, xlator_t *this, loc_t *loc, fd = fd_lookup (loc->inode, frame->root->pid); if (!fd) - iot_schedule_unordered ((iot_conf_t *)this->private, loc->inode, stub); + iot_schedule_unordered ((iot_conf_t *)this->private, + loc->inode, stub); else { - iot_schedule_ordered ((iot_conf_t *)this->private, loc->inode, stub); + iot_schedule_ordered ((iot_conf_t *)this->private, loc->inode, + stub); fd_unref (fd); } return 0; } + int iot_fgetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *dict) + int32_t op_ret, int32_t op_errno, dict_t *dict) { STACK_UNWIND (frame, op_ret, op_errno, dict); return 0; } + int iot_fgetxattr_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, const char *name) @@ -1697,6 +1529,7 @@ iot_fgetxattr_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, return 0; } + int iot_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, const char *name) @@ -1714,26 +1547,29 @@ iot_fgetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, return 0; } + int iot_fsetxattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno) + int32_t op_ret, int32_t op_errno) { STACK_UNWIND (frame, op_ret, op_errno); return 0; } + int iot_fsetxattr_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *dict, int32_t flags) { STACK_WIND (frame, iot_fsetxattr_cbk, FIRST_CHILD (this), - FIRST_CHILD (this)->fops->fsetxattr, fd, dict, flags); + FIRST_CHILD (this)->fops->fsetxattr, fd, dict, flags); return 0; } + int iot_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *dict, - int32_t flags) + int32_t flags) { call_stub_t *stub = NULL; @@ -1749,32 +1585,35 @@ iot_fsetxattr (call_frame_t *frame, xlator_t *this, fd_t *fd, dict_t *dict, return 0; } + int iot_removexattr_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno) + int32_t op_ret, int32_t op_errno) { STACK_UNWIND (frame, op_ret, op_errno); return 0; } + int iot_removexattr_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, - const char *name) + const char *name) { STACK_WIND (frame, iot_removexattr_cbk, FIRST_CHILD (this), - FIRST_CHILD (this)->fops->removexattr, loc, name); + FIRST_CHILD (this)->fops->removexattr, loc, name); return 0; } + int iot_removexattr (call_frame_t *frame, xlator_t *this, loc_t *loc, - const char *name) + const char *name) { call_stub_t *stub = NULL; fd_t *fd = NULL; stub = fop_removexattr_stub (frame, iot_removexattr_wrapper, loc, - name); + name); if (!stub) { gf_log (this->name, GF_LOG_ERROR,"cannot get removexattr fop"); STACK_UNWIND (frame, -1, ENOMEM); @@ -1783,9 +1622,11 @@ iot_removexattr (call_frame_t *frame, xlator_t *this, loc_t *loc, fd = fd_lookup (loc->inode, frame->root->pid); if (!fd) - iot_schedule_unordered ((iot_conf_t *)this->private, loc->inode, stub); + iot_schedule_unordered ((iot_conf_t *)this->private, + loc->inode, stub); else { - iot_schedule_ordered ((iot_conf_t *)this->private, loc->inode, stub); + iot_schedule_ordered ((iot_conf_t *)this->private, + loc->inode, stub); fd_unref (fd); } @@ -1801,6 +1642,7 @@ iot_readdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, return 0; } + int iot_readdir_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, off_t offset) @@ -1810,6 +1652,7 @@ iot_readdir_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, return 0; } + int iot_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, off_t offset) @@ -1827,26 +1670,29 @@ iot_readdir (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, return 0; } + int iot_xattrop_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, dict_t *xattr) + int32_t op_ret, int32_t op_errno, dict_t *xattr) { STACK_UNWIND (frame, op_ret, op_errno, xattr); return 0; } + int iot_xattrop_wrapper (call_frame_t *frame, xlator_t *this, loc_t *loc, - gf_xattrop_flags_t optype, dict_t *xattr) + gf_xattrop_flags_t optype, dict_t *xattr) { STACK_WIND (frame, iot_xattrop_cbk, FIRST_CHILD (this), - FIRST_CHILD (this)->fops->xattrop, loc, optype, xattr); + FIRST_CHILD (this)->fops->xattrop, loc, optype, xattr); return 0; } + int iot_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc, - gf_xattrop_flags_t optype, dict_t *xattr) + gf_xattrop_flags_t optype, dict_t *xattr) { call_stub_t *stub = NULL; fd_t *fd = NULL; @@ -1855,25 +1701,63 @@ iot_xattrop (call_frame_t *frame, xlator_t *this, loc_t *loc, xattr); if (!stub) { gf_log (this->name, GF_LOG_ERROR, "cannot get xattrop stub"); - STACK_UNWIND (frame, -1, ENOMEM); + STACK_UNWIND (frame, -1, ENOMEM, NULL); return 0; } fd = fd_lookup (loc->inode, frame->root->pid); if (!fd) - iot_schedule_unordered ((iot_conf_t *)this->private, loc->inode, stub); + iot_schedule_unordered ((iot_conf_t *)this->private, + loc->inode, stub); else { - iot_schedule_ordered ((iot_conf_t *)this->private, loc->inode, stub); + iot_schedule_ordered ((iot_conf_t *)this->private, + loc->inode, stub); fd_unref (fd); } return 0; } + +int +iot_fxattrop_cbk (call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, dict_t *xattr) +{ + STACK_UNWIND (frame, op_ret, op_errno, xattr); + return 0; +} + +int +iot_fxattrop_wrapper (call_frame_t *frame, xlator_t *this, fd_t *fd, + gf_xattrop_flags_t optype, dict_t *xattr) +{ + STACK_WIND (frame, iot_fxattrop_cbk, FIRST_CHILD (this), + FIRST_CHILD (this)->fops->fxattrop, fd, optype, xattr); + return 0; +} + +int +iot_fxattrop (call_frame_t *frame, xlator_t *this, fd_t *fd, + gf_xattrop_flags_t optype, dict_t *xattr) +{ + call_stub_t *stub = NULL; + + stub = fop_fxattrop_stub (frame, iot_fxattrop_wrapper, fd, optype, + xattr); + if (!stub) { + gf_log (this->name, GF_LOG_ERROR, "cannot get fxattrop stub"); + STACK_UNWIND (frame, -1, ENOMEM, NULL); + return 0; + } + + iot_schedule_ordered ((iot_conf_t *)this->private, fd->inode, stub); + return 0; +} + + /* Must be called with worker lock held */ void -_iot_queue (iot_worker_t *worker, - iot_request_t *req) +_iot_queue (iot_worker_t *worker, iot_request_t *req) { list_add_tail (&req->list, &worker->rqlist); @@ -1882,6 +1766,7 @@ _iot_queue (iot_worker_t *worker, pthread_cond_broadcast (&worker->dq_cond); } + iot_request_t * iot_init_request (call_stub_t *stub) { @@ -1894,6 +1779,7 @@ iot_init_request (call_stub_t *stub) return req; } + void iot_destroy_request (iot_request_t * req) { @@ -1903,11 +1789,12 @@ iot_destroy_request (iot_request_t * req) FREE (req); } + /* Must be called with worker lock held. */ gf_boolean_t iot_can_ordered_exit (iot_worker_t * worker) { - gf_boolean_t allow_exit = _gf_false; + gf_boolean_t allow_exit = _gf_false; iot_conf_t *conf = NULL; conf = worker->conf; @@ -1920,6 +1807,7 @@ iot_can_ordered_exit (iot_worker_t * worker) return allow_exit; } + /* Must be called with worker lock held. */ gf_boolean_t iot_ordered_exit (iot_worker_t *worker) @@ -1935,6 +1823,7 @@ iot_ordered_exit (iot_worker_t *worker) return allow_exit; } + int iot_ordered_request_wait (iot_worker_t * worker) { @@ -1951,7 +1840,7 @@ iot_ordered_request_wait (iot_worker_t * worker) */ ts.tv_nsec = skew_usec_idle_time (tv.tv_usec) * 1000; waitres = pthread_cond_timedwait (&worker->dq_cond, &worker->qlock, - &ts); + &ts); if (waitres == ETIMEDOUT) if (iot_ordered_exit (worker)) retstat = -1; @@ -1959,12 +1848,13 @@ iot_ordered_request_wait (iot_worker_t * worker) return retstat; } + call_stub_t * iot_dequeue_ordered (iot_worker_t *worker) { call_stub_t *stub = NULL; iot_request_t *req = NULL; - int waitstat = 0; + int waitstat = 0; pthread_mutex_lock (&worker->qlock); { @@ -1993,6 +1883,7 @@ out: return stub; } + void * iot_worker_ordered (void *arg) { @@ -2013,11 +1904,12 @@ iot_worker_ordered (void *arg) return NULL; } + /* Must be called with worker lock held. */ gf_boolean_t iot_can_unordered_exit (iot_worker_t * worker) { - gf_boolean_t allow_exit = _gf_false; + gf_boolean_t allow_exit = _gf_false; iot_conf_t *conf = NULL; conf = worker->conf; @@ -2030,6 +1922,7 @@ iot_can_unordered_exit (iot_worker_t * worker) return allow_exit; } + /* Must be called with worker lock held. */ gf_boolean_t iot_unordered_exit (iot_worker_t *worker) @@ -2062,7 +1955,7 @@ iot_unordered_request_wait (iot_worker_t * worker) */ ts.tv_nsec = skew_usec_idle_time (tv.tv_usec) * 1000; waitres = pthread_cond_timedwait (&worker->dq_cond, &worker->qlock, - &ts); + &ts); if (waitres == ETIMEDOUT) if (iot_unordered_exit (worker)) retstat = -1; @@ -2076,7 +1969,7 @@ iot_dequeue_unordered (iot_worker_t *worker) { call_stub_t *stub= NULL; iot_request_t *req = NULL; - int waitstat = 0; + int waitstat = 0; pthread_mutex_lock (&worker->qlock); { @@ -2126,18 +2019,19 @@ iot_worker_unordered (void *arg) } -static iot_worker_t ** +iot_worker_t ** allocate_worker_array (int count) { - iot_worker_t ** warr = NULL; + iot_worker_t **warr = NULL; - warr = CALLOC (count, sizeof(iot_worker_t *)); + warr = CALLOC (count, sizeof (iot_worker_t *)); ERR_ABORT (warr); return warr; } -static iot_worker_t * + +iot_worker_t * allocate_worker (iot_conf_t * conf) { iot_worker_t *wrk = NULL; @@ -2154,13 +2048,13 @@ allocate_worker (iot_conf_t * conf) return wrk; } -static void -allocate_workers (iot_conf_t *conf, - iot_worker_t ** workers, - int start_alloc_idx, - int count) + +void +allocate_workers (iot_conf_t *conf, iot_worker_t **workers, + int start_alloc_idx, int count) { - int i, end_count; + int i; + int end_count; end_count = count + start_alloc_idx; for (i = start_alloc_idx; i < end_count; i++) { @@ -2169,6 +2063,7 @@ allocate_workers (iot_conf_t *conf, } } + void iot_startup_worker (iot_worker_t *worker, iot_worker_fn workerfunc) { @@ -2180,7 +2075,7 @@ iot_startup_worker (iot_worker_t *worker, iot_worker_fn workerfunc) void iot_startup_workers (iot_worker_t **workers, int start_idx, int count, - iot_worker_fn workerfunc) + iot_worker_fn workerfunc) { int i = 0; int end_idx = 0; @@ -2191,7 +2086,8 @@ iot_startup_workers (iot_worker_t **workers, int start_idx, int count, } -static void + +void set_stack_size (iot_conf_t *conf) { int err = 0; @@ -2205,7 +2101,8 @@ set_stack_size (iot_conf_t *conf) } } -static void + +void workers_init (iot_conf_t *conf) { /* Initialize un-ordered workers */ @@ -2224,7 +2121,7 @@ workers_init (iot_conf_t *conf) } -int32_t +int init (xlator_t *this) { iot_conf_t *conf = NULL; @@ -2235,8 +2132,7 @@ init (xlator_t *this) int min_threads, max_threads; if (!this->children || this->children->next) { - gf_log ("io-threads", - GF_LOG_ERROR, + gf_log ("io-threads", GF_LOG_ERROR, "FATAL: iot not configured with exactly one child"); return -1; } @@ -2336,9 +2232,11 @@ init (xlator_t *this) conf->o_idle_time = IOT_DEFAULT_IDLE; conf->o_scaling = autoscaling; - gf_log (this->name, GF_LOG_DEBUG, "io-threads: Autoscaling: %s, " - "min_threads: %d, max_threads: %d", - (autoscaling) ? "on":"off", min_threads, max_threads); + gf_log (this->name, GF_LOG_DEBUG, + "io-threads: Autoscaling: %s, " + "min_threads: %d, max_threads: %d", + (autoscaling) ? "on":"off", min_threads, max_threads); + conf->this = this; workers_init (conf); @@ -2346,6 +2244,7 @@ init (xlator_t *this) return 0; } + void fini (xlator_t *this) { |