summaryrefslogtreecommitdiffstats
path: root/xlators/features/sdfs
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/features/sdfs')
-rw-r--r--xlators/features/sdfs/src/sdfs.c2188
1 files changed, 1062 insertions, 1126 deletions
diff --git a/xlators/features/sdfs/src/sdfs.c b/xlators/features/sdfs/src/sdfs.c
index 57c1cbb581b..5dbe0653cbc 100644
--- a/xlators/features/sdfs/src/sdfs.c
+++ b/xlators/features/sdfs/src/sdfs.c
@@ -11,1514 +11,1450 @@
#include "sdfs.h"
static int
-sdfs_frame_return (call_frame_t *frame)
+sdfs_frame_return(call_frame_t *frame)
{
- sdfs_local_t *local = NULL;
+ sdfs_local_t *local = NULL;
- if (!frame)
- return -1;
+ if (!frame)
+ return -1;
- local = frame->local;
+ local = frame->local;
- return GF_ATOMIC_DEC (local->call_cnt);
+ return GF_ATOMIC_DEC(local->call_cnt);
}
static void
-sdfs_lock_free (sdfs_entry_lock_t *entrylk)
+sdfs_lock_free(sdfs_entry_lock_t *entrylk)
{
- if (entrylk == NULL)
- goto out;
+ if (entrylk == NULL)
+ goto out;
- loc_wipe (&entrylk->parent_loc);
- GF_FREE (entrylk->basename);
+ loc_wipe(&entrylk->parent_loc);
+ GF_FREE(entrylk->basename);
out:
- return;
+ return;
}
static void
-sdfs_lock_array_free (sdfs_lock_t *lock)
+sdfs_lock_array_free(sdfs_lock_t *lock)
{
- sdfs_entry_lock_t *entrylk = NULL;
- int i = 0;
+ sdfs_entry_lock_t *entrylk = NULL;
+ int i = 0;
- if (lock == NULL)
- goto out;
+ if (lock == NULL)
+ goto out;
- for (i = 0; i < lock->lock_count; i++) {
- entrylk = &lock->entrylk[i];
- sdfs_lock_free (entrylk);
- }
+ for (i = 0; i < lock->lock_count; i++) {
+ entrylk = &lock->entrylk[i];
+ sdfs_lock_free(entrylk);
+ }
out:
- return;
+ return;
}
static void
-sdfs_local_cleanup (sdfs_local_t *local)
+sdfs_local_cleanup(sdfs_local_t *local)
{
- if (!local)
- return;
+ if (!local)
+ return;
- loc_wipe (&local->loc);
- loc_wipe (&local->parent_loc);
+ loc_wipe(&local->loc);
+ loc_wipe(&local->parent_loc);
- if (local->stub) {
- call_stub_destroy (local->stub);
- local->stub = NULL;
- }
+ if (local->stub) {
+ call_stub_destroy(local->stub);
+ local->stub = NULL;
+ }
- sdfs_lock_array_free (local->lock);
- GF_FREE (local->lock);
+ sdfs_lock_array_free(local->lock);
+ GF_FREE(local->lock);
- mem_put (local);
+ mem_put(local);
}
static int
-sdfs_build_parent_loc (loc_t *parent, loc_t *child)
+sdfs_build_parent_loc(loc_t *parent, loc_t *child)
{
- int ret = -1;
- char *path = NULL;
-
- if (!child->parent) {
- goto out;
- }
- parent->inode = inode_ref (child->parent);
- path = gf_strdup (child->path);
- if (!path) {
- ret = -ENOMEM;
- goto out;
- }
-
- parent->path = dirname(path);
- if (!parent->path) {
- goto out;
- }
-
- gf_uuid_copy (parent->gfid, child->pargfid);
- return 0;
+ int ret = -1;
+ char *path = NULL;
+
+ if (!child->parent) {
+ goto out;
+ }
+ parent->inode = inode_ref(child->parent);
+ path = gf_strdup(child->path);
+ if (!path) {
+ ret = -ENOMEM;
+ goto out;
+ }
+
+ parent->path = dirname(path);
+ if (!parent->path) {
+ goto out;
+ }
+
+ gf_uuid_copy(parent->gfid, child->pargfid);
+ return 0;
out:
- GF_FREE (path);
- return ret;
+ GF_FREE(path);
+ return ret;
}
static sdfs_local_t *
-sdfs_local_init (call_frame_t *frame, xlator_t *this)
+sdfs_local_init(call_frame_t *frame, xlator_t *this)
{
- sdfs_local_t *local = NULL;
+ sdfs_local_t *local = NULL;
- local = mem_get0 (this->local_pool);
- if (!local)
- goto out;
+ local = mem_get0(this->local_pool);
+ if (!local)
+ goto out;
- frame->local = local;
+ frame->local = local;
out:
- return local;
+ return local;
}
static int
-sdfs_get_new_frame_common (call_frame_t *frame, call_frame_t **new_frame)
+sdfs_get_new_frame_common(call_frame_t *frame, call_frame_t **new_frame)
{
- int ret = -1;
- sdfs_local_t *local = NULL;
- client_t *client = NULL;
+ int ret = -1;
+ sdfs_local_t *local = NULL;
+ client_t *client = NULL;
- *new_frame = copy_frame (frame);
- if (!*new_frame) {
- goto err;
- }
+ *new_frame = copy_frame(frame);
+ if (!*new_frame) {
+ goto err;
+ }
- client = frame->root->client;
- gf_client_ref (client);
- (*new_frame)->root->client = client;
+ client = frame->root->client;
+ gf_client_ref(client);
+ (*new_frame)->root->client = client;
- local = sdfs_local_init (*new_frame, THIS);
- if (!local) {
- goto err;
- }
+ local = sdfs_local_init(*new_frame, THIS);
+ if (!local) {
+ goto err;
+ }
- local->main_frame = frame;
+ local->main_frame = frame;
- ret = 0;
+ ret = 0;
err:
- if ((ret == -1) && (*new_frame)) {
- SDFS_STACK_DESTROY ((*new_frame));
- *new_frame = NULL;
- }
+ if ((ret == -1) && (*new_frame)) {
+ SDFS_STACK_DESTROY((*new_frame));
+ *new_frame = NULL;
+ }
- return ret;
+ return ret;
}
static int
-sdfs_get_new_frame (call_frame_t *frame, loc_t *loc, call_frame_t **new_frame)
+sdfs_get_new_frame(call_frame_t *frame, loc_t *loc, call_frame_t **new_frame)
{
- int ret = -1;
- sdfs_local_t *local = NULL;
+ int ret = -1;
+ sdfs_local_t *local = NULL;
- ret = sdfs_get_new_frame_common (frame, new_frame);
- if (ret < 0) {
- goto err;
- }
+ ret = sdfs_get_new_frame_common(frame, new_frame);
+ if (ret < 0) {
+ goto err;
+ }
- local = (*new_frame)->local;
+ local = (*new_frame)->local;
- ret = sdfs_build_parent_loc (&local->parent_loc, loc);
- if (ret) {
- goto err;
- }
+ ret = sdfs_build_parent_loc(&local->parent_loc, loc);
+ if (ret) {
+ goto err;
+ }
- ret = loc_copy (&local->loc, loc);
- if (ret == -1) {
- goto err;
- }
+ ret = loc_copy(&local->loc, loc);
+ if (ret == -1) {
+ goto err;
+ }
- ret = 0;
+ ret = 0;
err:
- if ((ret < 0) && (*new_frame != NULL)) {
- SDFS_STACK_DESTROY ((*new_frame));
- *new_frame = NULL;
- }
+ if ((ret < 0) && (*new_frame != NULL)) {
+ SDFS_STACK_DESTROY((*new_frame));
+ *new_frame = NULL;
+ }
- return ret;
+ return ret;
}
static int
-sdfs_get_new_frame_readdirp (call_frame_t *frame, fd_t *fd,
- call_frame_t **new_frame)
+sdfs_get_new_frame_readdirp(call_frame_t *frame, fd_t *fd,
+ call_frame_t **new_frame)
{
- int ret = -1;
- sdfs_local_t *local = NULL;
+ int ret = -1;
+ sdfs_local_t *local = NULL;
- ret = sdfs_get_new_frame_common (frame, new_frame);
- if (ret < 0) {
- goto err;
- }
+ ret = sdfs_get_new_frame_common(frame, new_frame);
+ if (ret < 0) {
+ goto err;
+ }
- local = (*new_frame)->local;
- local->parent_loc.inode = inode_ref (fd->inode);
- gf_uuid_copy (local->parent_loc.gfid, fd->inode->gfid);
+ local = (*new_frame)->local;
+ local->parent_loc.inode = inode_ref(fd->inode);
+ gf_uuid_copy(local->parent_loc.gfid, fd->inode->gfid);
- ret = 0;
+ ret = 0;
err:
- return ret;
+ return ret;
}
int
-sdfs_entrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
- int32_t op_ret, int32_t op_errno, dict_t *xdata)
+sdfs_entrylk_cbk(call_frame_t *frame, void *cookie, xlator_t *this,
+ int32_t op_ret, int32_t op_errno, dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- call_stub_t *stub = NULL;
+ sdfs_local_t *local = NULL;
+ call_stub_t *stub = NULL;
- local = frame->local;
+ local = frame->local;
- local->op_ret = op_ret;
- local->op_errno = op_errno;
+ local->op_ret = op_ret;
+ local->op_errno = op_errno;
- if (local->stub) {
- stub = local->stub;
- local->stub = NULL;
- call_resume (stub);
- } else {
- if (op_ret < 0)
- gf_msg (this->name, GF_LOG_ERROR, 0,
- SDFS_MSG_ENTRYLK_ERROR,
- "Unlocking entry lock failed for %s",
- local->loc.name);
-
- SDFS_STACK_DESTROY (frame);
- }
+ if (local->stub) {
+ stub = local->stub;
+ local->stub = NULL;
+ call_resume(stub);
+ } else {
+ if (op_ret < 0)
+ gf_msg(this->name, GF_LOG_ERROR, 0, SDFS_MSG_ENTRYLK_ERROR,
+ "Unlocking entry lock failed for %s", local->loc.name);
- return 0;
+ SDFS_STACK_DESTROY(frame);
+ }
+
+ return 0;
}
int
-sdfs_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
- int32_t op_ret, int32_t op_errno, inode_t *inode,
- struct iatt *stbuf, struct iatt *preparent,
- struct iatt *postparent, dict_t *xdata)
+sdfs_mkdir_cbk(call_frame_t *frame, void *cookie, xlator_t *this,
+ int32_t op_ret, int32_t op_errno, inode_t *inode,
+ struct iatt *stbuf, struct iatt *preparent,
+ struct iatt *postparent, dict_t *xdata)
{
- sdfs_local_t *local = NULL;
+ sdfs_local_t *local = NULL;
- local = frame->local;
+ local = frame->local;
- STACK_UNWIND_STRICT (mkdir, local->main_frame, op_ret, op_errno, inode,
- stbuf, preparent, postparent, xdata);
+ STACK_UNWIND_STRICT(mkdir, local->main_frame, op_ret, op_errno, inode,
+ stbuf, preparent, postparent, xdata);
- local->main_frame = NULL;
- STACK_WIND (frame, sdfs_entrylk_cbk, FIRST_CHILD (this),
- FIRST_CHILD(this)->fops->entrylk,
- this->name, &local->parent_loc, local->loc.name,
- ENTRYLK_UNLOCK, ENTRYLK_WRLCK, xdata);
- return 0;
+ local->main_frame = NULL;
+ STACK_WIND(frame, sdfs_entrylk_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->entrylk, this->name, &local->parent_loc,
+ local->loc.name, ENTRYLK_UNLOCK, ENTRYLK_WRLCK, xdata);
+ return 0;
}
int
-sdfs_mkdir_helper (call_frame_t *frame, xlator_t *this, loc_t *loc,
- mode_t mode, mode_t umask, dict_t *xdata)
+sdfs_mkdir_helper(call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,
+ mode_t umask, dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- char gfid[GF_UUID_BUF_SIZE] = {0};
- int op_errno = -1;
+ sdfs_local_t *local = NULL;
+ char gfid[GF_UUID_BUF_SIZE] = {0};
+ int op_errno = -1;
- local = frame->local;
+ local = frame->local;
- gf_uuid_unparse(loc->pargfid, gfid);
+ gf_uuid_unparse(loc->pargfid, gfid);
- if (local->op_ret < 0) {
- gf_msg (this->name, GF_LOG_ERROR, 0,
- SDFS_MSG_ENTRYLK_ERROR,
- "Acquiring entry lock failed for directory %s "
- "with parent gfid %s", local->loc.name, gfid);
- op_errno = local->op_errno;
- goto err;
- }
+ if (local->op_ret < 0) {
+ gf_msg(this->name, GF_LOG_ERROR, 0, SDFS_MSG_ENTRYLK_ERROR,
+ "Acquiring entry lock failed for directory %s "
+ "with parent gfid %s",
+ local->loc.name, gfid);
+ op_errno = local->op_errno;
+ goto err;
+ }
- STACK_WIND (frame, sdfs_mkdir_cbk, FIRST_CHILD(this),
- FIRST_CHILD(this)->fops->mkdir, loc,
- mode, umask, xdata);
+ STACK_WIND(frame, sdfs_mkdir_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->mkdir, loc, mode, umask, xdata);
- return 0;
+ return 0;
err:
- STACK_UNWIND_STRICT (mkdir, local->main_frame, -1, op_errno,
- NULL, NULL, NULL, NULL, NULL);
+ STACK_UNWIND_STRICT(mkdir, local->main_frame, -1, op_errno, NULL, NULL,
+ NULL, NULL, NULL);
- local->main_frame = NULL;
- SDFS_STACK_DESTROY (frame);
- return 0;
+ local->main_frame = NULL;
+ SDFS_STACK_DESTROY(frame);
+ return 0;
}
int
-sdfs_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,
- mode_t umask, dict_t *xdata)
+sdfs_mkdir(call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,
+ mode_t umask, dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- call_frame_t *new_frame = NULL;
- call_stub_t *stub = NULL;
- int op_errno = 0;
-
- if (-1 == sdfs_get_new_frame (frame, loc, &new_frame)) {
- op_errno = ENOMEM;
- goto err;
- }
-
- stub = fop_mkdir_stub (new_frame, sdfs_mkdir_helper, loc, mode,
- umask, xdata);
- if (!stub) {
- op_errno = ENOMEM;
- goto err;
- }
-
- local = new_frame->local;
- local->stub = stub;
-
- STACK_WIND (new_frame, sdfs_entrylk_cbk,
- FIRST_CHILD (this),
- FIRST_CHILD(this)->fops->entrylk,
- this->name, &local->parent_loc, local->loc.name,
- ENTRYLK_LOCK, ENTRYLK_WRLCK, xdata);
-
- return 0;
+ sdfs_local_t *local = NULL;
+ call_frame_t *new_frame = NULL;
+ call_stub_t *stub = NULL;
+ int op_errno = 0;
+
+ if (-1 == sdfs_get_new_frame(frame, loc, &new_frame)) {
+ op_errno = ENOMEM;
+ goto err;
+ }
+
+ stub = fop_mkdir_stub(new_frame, sdfs_mkdir_helper, loc, mode, umask,
+ xdata);
+ if (!stub) {
+ op_errno = ENOMEM;
+ goto err;
+ }
+
+ local = new_frame->local;
+ local->stub = stub;
+
+ STACK_WIND(new_frame, sdfs_entrylk_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->entrylk, this->name, &local->parent_loc,
+ local->loc.name, ENTRYLK_LOCK, ENTRYLK_WRLCK, xdata);
+
+ return 0;
err:
- STACK_UNWIND_STRICT (mkdir, frame, -1, op_errno, NULL, NULL,
- NULL, NULL, NULL);
+ STACK_UNWIND_STRICT(mkdir, frame, -1, op_errno, NULL, NULL, NULL, NULL,
+ NULL);
- if (new_frame)
- SDFS_STACK_DESTROY (new_frame);
+ if (new_frame)
+ SDFS_STACK_DESTROY(new_frame);
- return 0;
+ return 0;
}
int
-sdfs_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
- int32_t op_ret, int32_t op_errno, struct iatt *preparent,
- struct iatt *postparent, dict_t *xdata)
+sdfs_rmdir_cbk(call_frame_t *frame, void *cookie, xlator_t *this,
+ int32_t op_ret, int32_t op_errno, struct iatt *preparent,
+ struct iatt *postparent, dict_t *xdata)
{
- sdfs_local_t *local = NULL;
+ sdfs_local_t *local = NULL;
- local = frame->local;
+ local = frame->local;
- STACK_UNWIND_STRICT (rmdir, local->main_frame, op_ret, op_errno,
- preparent, postparent, xdata);
+ STACK_UNWIND_STRICT(rmdir, local->main_frame, op_ret, op_errno, preparent,
+ postparent, xdata);
- local->main_frame = NULL;
- STACK_WIND (frame, sdfs_entrylk_cbk, FIRST_CHILD (this),
- FIRST_CHILD(this)->fops->entrylk,
- this->name, &local->parent_loc, local->loc.name,
- ENTRYLK_UNLOCK, ENTRYLK_WRLCK, xdata);
- return 0;
+ local->main_frame = NULL;
+ STACK_WIND(frame, sdfs_entrylk_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->entrylk, this->name, &local->parent_loc,
+ local->loc.name, ENTRYLK_UNLOCK, ENTRYLK_WRLCK, xdata);
+ return 0;
}
int
-sdfs_rmdir_helper (call_frame_t *frame, xlator_t *this, loc_t *loc,
- int flags, dict_t *xdata)
+sdfs_rmdir_helper(call_frame_t *frame, xlator_t *this, loc_t *loc, int flags,
+ dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- char gfid[GF_UUID_BUF_SIZE] = {0};
+ sdfs_local_t *local = NULL;
+ char gfid[GF_UUID_BUF_SIZE] = {0};
- local = frame->local;
+ local = frame->local;
- gf_uuid_unparse(loc->pargfid, gfid);
+ gf_uuid_unparse(loc->pargfid, gfid);
- if (local->op_ret < 0) {
- gf_msg (this->name, GF_LOG_ERROR, 0,
- SDFS_MSG_ENTRYLK_ERROR,
- "Acquiring entry lock failed for directory %s "
- "with parent gfid %s", local->loc.name, gfid);
- goto err;
- }
+ if (local->op_ret < 0) {
+ gf_msg(this->name, GF_LOG_ERROR, 0, SDFS_MSG_ENTRYLK_ERROR,
+ "Acquiring entry lock failed for directory %s "
+ "with parent gfid %s",
+ local->loc.name, gfid);
+ goto err;
+ }
- STACK_WIND (frame, sdfs_rmdir_cbk, FIRST_CHILD(this),
- FIRST_CHILD(this)->fops->rmdir, loc,
- flags, xdata);
+ STACK_WIND(frame, sdfs_rmdir_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->rmdir, loc, flags, xdata);
- return 0;
+ return 0;
err:
- STACK_UNWIND_STRICT (rmdir, local->main_frame, -1, local->op_errno,
- NULL, NULL, NULL);
+ STACK_UNWIND_STRICT(rmdir, local->main_frame, -1, local->op_errno, NULL,
+ NULL, NULL);
- local->main_frame = NULL;
- SDFS_STACK_DESTROY (frame);
- return 0;
+ local->main_frame = NULL;
+ SDFS_STACK_DESTROY(frame);
+ return 0;
}
int
-sdfs_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags,
- dict_t *xdata)
+sdfs_rmdir(call_frame_t *frame, xlator_t *this, loc_t *loc, int flags,
+ dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- call_frame_t *new_frame = NULL;
- call_stub_t *stub = NULL;
- int op_errno = 0;
-
- if (-1 == sdfs_get_new_frame (frame, loc, &new_frame)) {
- op_errno = ENOMEM;
- goto err;
- }
-
- stub = fop_rmdir_stub (new_frame, sdfs_rmdir_helper, loc, flags, xdata);
- if (!stub) {
- op_errno = ENOMEM;
- goto err;
- }
-
- local = new_frame->local;
- local->stub = stub;
-
- STACK_WIND (new_frame, sdfs_entrylk_cbk,
- FIRST_CHILD (this),
- FIRST_CHILD(this)->fops->entrylk,
- this->name, &local->parent_loc, local->loc.name,
- ENTRYLK_LOCK, ENTRYLK_WRLCK, xdata);
-
- return 0;
+ sdfs_local_t *local = NULL;
+ call_frame_t *new_frame = NULL;
+ call_stub_t *stub = NULL;
+ int op_errno = 0;
+
+ if (-1 == sdfs_get_new_frame(frame, loc, &new_frame)) {
+ op_errno = ENOMEM;
+ goto err;
+ }
+
+ stub = fop_rmdir_stub(new_frame, sdfs_rmdir_helper, loc, flags, xdata);
+ if (!stub) {
+ op_errno = ENOMEM;
+ goto err;
+ }
+
+ local = new_frame->local;
+ local->stub = stub;
+
+ STACK_WIND(new_frame, sdfs_entrylk_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->entrylk, this->name, &local->parent_loc,
+ local->loc.name, ENTRYLK_LOCK, ENTRYLK_WRLCK, xdata);
+
+ return 0;
err:
- STACK_UNWIND_STRICT (rmdir, frame, -1, op_errno, NULL, NULL,
- NULL);
+ STACK_UNWIND_STRICT(rmdir, frame, -1, op_errno, NULL, NULL, NULL);
- if (new_frame)
- SDFS_STACK_DESTROY (new_frame);
+ if (new_frame)
+ SDFS_STACK_DESTROY(new_frame);
- return 0;
+ return 0;
}
int
-sdfs_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 iatt *stbuf,
- struct iatt *preparent, struct iatt *postparent,
- dict_t *xdata)
+sdfs_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 iatt *stbuf, struct iatt *preparent,
+ struct iatt *postparent, dict_t *xdata)
{
- sdfs_local_t *local = NULL;
+ sdfs_local_t *local = NULL;
- local = frame->local;
+ local = frame->local;
- STACK_UNWIND_STRICT (create, local->main_frame, op_ret, op_errno, fd,
- inode, stbuf, preparent, postparent, xdata);
+ STACK_UNWIND_STRICT(create, local->main_frame, op_ret, op_errno, fd, inode,
+ stbuf, preparent, postparent, xdata);
- local->main_frame = NULL;
- STACK_WIND (frame, sdfs_entrylk_cbk, FIRST_CHILD (this),
- FIRST_CHILD(this)->fops->entrylk,
- this->name, &local->parent_loc, local->loc.name,
- ENTRYLK_UNLOCK, ENTRYLK_WRLCK, xdata);
- return 0;
+ local->main_frame = NULL;
+ STACK_WIND(frame, sdfs_entrylk_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->entrylk, this->name, &local->parent_loc,
+ local->loc.name, ENTRYLK_UNLOCK, ENTRYLK_WRLCK, xdata);
+ return 0;
}
int
-sdfs_create_helper (call_frame_t *frame, xlator_t *this, loc_t *loc,
- int32_t flags, mode_t mode, mode_t umask, fd_t *fd,
- dict_t *xdata)
+sdfs_create_helper(call_frame_t *frame, xlator_t *this, loc_t *loc,
+ int32_t flags, mode_t mode, mode_t umask, fd_t *fd,
+ dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- char gfid[GF_UUID_BUF_SIZE] = {0};
+ sdfs_local_t *local = NULL;
+ char gfid[GF_UUID_BUF_SIZE] = {0};
- local = frame->local;
+ local = frame->local;
- gf_uuid_unparse(loc->pargfid, gfid);
+ gf_uuid_unparse(loc->pargfid, gfid);
- if (local->op_ret < 0) {
- gf_msg (this->name, GF_LOG_ERROR, 0,
- SDFS_MSG_ENTRYLK_ERROR,
- "Acquiring entry lock failed for directory %s "
- "with parent gfid %s", local->loc.name, gfid);
- goto err;
- }
+ if (local->op_ret < 0) {
+ gf_msg(this->name, GF_LOG_ERROR, 0, SDFS_MSG_ENTRYLK_ERROR,
+ "Acquiring entry lock failed for directory %s "
+ "with parent gfid %s",
+ local->loc.name, gfid);
+ goto err;
+ }
- STACK_WIND (frame, sdfs_create_cbk, FIRST_CHILD(this),
- FIRST_CHILD(this)->fops->create, loc, flags,
- mode, umask, fd, xdata);
+ STACK_WIND(frame, sdfs_create_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->create, loc, flags, mode, umask, fd,
+ xdata);
- return 0;
+ return 0;
err:
- STACK_UNWIND_STRICT (create, local->main_frame, -1, local->op_errno,
- NULL, NULL, NULL, NULL, NULL, NULL);
+ STACK_UNWIND_STRICT(create, local->main_frame, -1, local->op_errno, NULL,
+ NULL, NULL, NULL, NULL, NULL);
- local->main_frame = NULL;
- SDFS_STACK_DESTROY (frame);
- return 0;
+ local->main_frame = NULL;
+ SDFS_STACK_DESTROY(frame);
+ return 0;
}
int
-sdfs_create (call_frame_t *frame, xlator_t *this, loc_t *loc,
- int32_t flags, mode_t mode, mode_t umask,
- fd_t *fd, dict_t *xdata)
+sdfs_create(call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags,
+ mode_t mode, mode_t umask, fd_t *fd, dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- call_frame_t *new_frame = NULL;
- call_stub_t *stub = NULL;
- int op_errno = 0;
-
- if (-1 == sdfs_get_new_frame (frame, loc, &new_frame)) {
- op_errno = ENOMEM;
- goto err;
- }
-
- stub = fop_create_stub (new_frame, sdfs_create_helper, loc,
- flags, mode, umask, fd, xdata);
- if (!stub) {
- op_errno = ENOMEM;
- goto err;
- }
-
- local = new_frame->local;
- local->stub = stub;
-
- STACK_WIND (new_frame, sdfs_entrylk_cbk,
- FIRST_CHILD (this),
- FIRST_CHILD(this)->fops->entrylk,
- this->name, &local->parent_loc, local->loc.name,
- ENTRYLK_LOCK, ENTRYLK_WRLCK, xdata);
-
- return 0;
+ sdfs_local_t *local = NULL;
+ call_frame_t *new_frame = NULL;
+ call_stub_t *stub = NULL;
+ int op_errno = 0;
+
+ if (-1 == sdfs_get_new_frame(frame, loc, &new_frame)) {
+ op_errno = ENOMEM;
+ goto err;
+ }
+
+ stub = fop_create_stub(new_frame, sdfs_create_helper, loc, flags, mode,
+ umask, fd, xdata);
+ if (!stub) {
+ op_errno = ENOMEM;
+ goto err;
+ }
+
+ local = new_frame->local;
+ local->stub = stub;
+
+ STACK_WIND(new_frame, sdfs_entrylk_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->entrylk, this->name, &local->parent_loc,
+ local->loc.name, ENTRYLK_LOCK, ENTRYLK_WRLCK, xdata);
+
+ return 0;
err:
- STACK_UNWIND_STRICT (create, frame, -1, op_errno, NULL, NULL,
- NULL, NULL, NULL, NULL);
+ STACK_UNWIND_STRICT(create, frame, -1, op_errno, NULL, NULL, NULL, NULL,
+ NULL, NULL);
- if (new_frame)
- SDFS_STACK_DESTROY (new_frame);
+ if (new_frame)
+ SDFS_STACK_DESTROY(new_frame);
- return 0;
+ return 0;
}
int
-sdfs_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
- int32_t op_ret, int32_t op_errno, struct iatt *preparent,
- struct iatt *postparent, dict_t *xdata)
+sdfs_unlink_cbk(call_frame_t *frame, void *cookie, xlator_t *this,
+ int32_t op_ret, int32_t op_errno, struct iatt *preparent,
+ struct iatt *postparent, dict_t *xdata)
{
- sdfs_local_t *local = NULL;
+ sdfs_local_t *local = NULL;
- local = frame->local;
+ local = frame->local;
- STACK_UNWIND_STRICT (unlink, local->main_frame, op_ret, op_errno,
- preparent, postparent, xdata);
+ STACK_UNWIND_STRICT(unlink, local->main_frame, op_ret, op_errno, preparent,
+ postparent, xdata);
- local->main_frame = NULL;
- STACK_WIND (frame, sdfs_entrylk_cbk, FIRST_CHILD (this),
- FIRST_CHILD(this)->fops->entrylk,
- this->name, &local->parent_loc, local->loc.name,
- ENTRYLK_UNLOCK, ENTRYLK_WRLCK, xdata);
- return 0;
+ local->main_frame = NULL;
+ STACK_WIND(frame, sdfs_entrylk_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->entrylk, this->name, &local->parent_loc,
+ local->loc.name, ENTRYLK_UNLOCK, ENTRYLK_WRLCK, xdata);
+ return 0;
}
int
-sdfs_unlink_helper (call_frame_t *frame, xlator_t *this, loc_t *loc,
- int flags, dict_t *xdata)
+sdfs_unlink_helper(call_frame_t *frame, xlator_t *this, loc_t *loc, int flags,
+ dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- char gfid[GF_UUID_BUF_SIZE] = {0};
+ sdfs_local_t *local = NULL;
+ char gfid[GF_UUID_BUF_SIZE] = {0};
- local = frame->local;
+ local = frame->local;
- gf_uuid_unparse(loc->pargfid, gfid);
+ gf_uuid_unparse(loc->pargfid, gfid);
- if (local->op_ret < 0) {
- gf_msg (this->name, GF_LOG_ERROR, 0,
- SDFS_MSG_ENTRYLK_ERROR,
- "Acquiring entry lock failed for directory %s "
- "with parent gfid %s", local->loc.name, gfid);
- goto err;
- }
+ if (local->op_ret < 0) {
+ gf_msg(this->name, GF_LOG_ERROR, 0, SDFS_MSG_ENTRYLK_ERROR,
+ "Acquiring entry lock failed for directory %s "
+ "with parent gfid %s",
+ local->loc.name, gfid);
+ goto err;
+ }
- STACK_WIND (frame, sdfs_unlink_cbk, FIRST_CHILD(this),
- FIRST_CHILD(this)->fops->unlink, loc, flags, xdata);
+ STACK_WIND(frame, sdfs_unlink_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->unlink, loc, flags, xdata);
- return 0;
+ return 0;
err:
- STACK_UNWIND_STRICT (unlink, local->main_frame, -1, local->op_errno,
- NULL, NULL, NULL);
+ STACK_UNWIND_STRICT(unlink, local->main_frame, -1, local->op_errno, NULL,
+ NULL, NULL);
- local->main_frame = NULL;
- SDFS_STACK_DESTROY (frame);
- return 0;
+ local->main_frame = NULL;
+ SDFS_STACK_DESTROY(frame);
+ return 0;
}
int
-sdfs_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc,
- int flags, dict_t *xdata)
+sdfs_unlink(call_frame_t *frame, xlator_t *this, loc_t *loc, int flags,
+ dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- call_frame_t *new_frame = NULL;
- call_stub_t *stub = NULL;
- int op_errno = 0;
-
- if (-1 == sdfs_get_new_frame (frame, loc, &new_frame)) {
- op_errno = ENOMEM;
- goto err;
- }
-
- stub = fop_unlink_stub (new_frame, sdfs_unlink_helper, loc,
- flags, xdata);
- if (!stub) {
- op_errno = ENOMEM;
- goto err;
- }
-
- local = new_frame->local;
- local->stub = stub;
-
- STACK_WIND (new_frame, sdfs_entrylk_cbk,
- FIRST_CHILD (this),
- FIRST_CHILD(this)->fops->entrylk,
- this->name, &local->parent_loc, local->loc.name,
- ENTRYLK_LOCK, ENTRYLK_WRLCK, xdata);
-
- return 0;
+ sdfs_local_t *local = NULL;
+ call_frame_t *new_frame = NULL;
+ call_stub_t *stub = NULL;
+ int op_errno = 0;
+
+ if (-1 == sdfs_get_new_frame(frame, loc, &new_frame)) {
+ op_errno = ENOMEM;
+ goto err;
+ }
+
+ stub = fop_unlink_stub(new_frame, sdfs_unlink_helper, loc, flags, xdata);
+ if (!stub) {
+ op_errno = ENOMEM;
+ goto err;
+ }
+
+ local = new_frame->local;
+ local->stub = stub;
+
+ STACK_WIND(new_frame, sdfs_entrylk_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->entrylk, this->name, &local->parent_loc,
+ local->loc.name, ENTRYLK_LOCK, ENTRYLK_WRLCK, xdata);
+
+ return 0;
err:
- STACK_UNWIND_STRICT (unlink, frame, -1, op_errno, NULL, NULL,
- NULL);
+ STACK_UNWIND_STRICT(unlink, frame, -1, op_errno, NULL, NULL, NULL);
- if (new_frame)
- SDFS_STACK_DESTROY (new_frame);
+ if (new_frame)
+ SDFS_STACK_DESTROY(new_frame);
- return 0;
+ return 0;
}
int
-sdfs_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
- int32_t op_ret, int32_t op_errno, inode_t *inode,
- struct iatt *stbuf, struct iatt *preparent,
- struct iatt *postparent, dict_t *xdata)
+sdfs_symlink_cbk(call_frame_t *frame, void *cookie, xlator_t *this,
+ int32_t op_ret, int32_t op_errno, inode_t *inode,
+ struct iatt *stbuf, struct iatt *preparent,
+ struct iatt *postparent, dict_t *xdata)
{
- sdfs_local_t *local = NULL;
+ sdfs_local_t *local = NULL;
- local = frame->local;
+ local = frame->local;
- STACK_UNWIND_STRICT (link, local->main_frame, op_ret, op_errno, inode,
- stbuf, preparent, postparent, xdata);
+ STACK_UNWIND_STRICT(link, local->main_frame, op_ret, op_errno, inode, stbuf,
+ preparent, postparent, xdata);
- local->main_frame = NULL;
- STACK_WIND (frame, sdfs_entrylk_cbk, FIRST_CHILD (this),
- FIRST_CHILD(this)->fops->entrylk,
- this->name, &local->parent_loc, local->loc.name,
- ENTRYLK_UNLOCK, ENTRYLK_WRLCK, xdata);
- return 0;
+ local->main_frame = NULL;
+ STACK_WIND(frame, sdfs_entrylk_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->entrylk, this->name, &local->parent_loc,
+ local->loc.name, ENTRYLK_UNLOCK, ENTRYLK_WRLCK, xdata);
+ return 0;
}
int
-sdfs_symlink_helper (call_frame_t *frame, xlator_t *this,
- const char *linkname, loc_t *loc, mode_t umask,
- dict_t *xdata)
+sdfs_symlink_helper(call_frame_t *frame, xlator_t *this, const char *linkname,
+ loc_t *loc, mode_t umask, dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- char gfid[GF_UUID_BUF_SIZE] = {0};
+ sdfs_local_t *local = NULL;
+ char gfid[GF_UUID_BUF_SIZE] = {0};
- local = frame->local;
+ local = frame->local;
- gf_uuid_unparse(loc->pargfid, gfid);
+ gf_uuid_unparse(loc->pargfid, gfid);
- if (local->op_ret < 0) {
- gf_msg (this->name, GF_LOG_ERROR, 0,
- SDFS_MSG_ENTRYLK_ERROR,
- "Acquiring entry lock failed for directory %s "
- "with parent gfid %s", local->loc.name, gfid);
- goto err;
- }
+ if (local->op_ret < 0) {
+ gf_msg(this->name, GF_LOG_ERROR, 0, SDFS_MSG_ENTRYLK_ERROR,
+ "Acquiring entry lock failed for directory %s "
+ "with parent gfid %s",
+ local->loc.name, gfid);
+ goto err;
+ }
- STACK_WIND (frame, sdfs_symlink_cbk, FIRST_CHILD(this),
- FIRST_CHILD(this)->fops->symlink, linkname, loc,
- umask, xdata);
+ STACK_WIND(frame, sdfs_symlink_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->symlink, linkname, loc, umask, xdata);
- return 0;
+ return 0;
err:
- STACK_UNWIND_STRICT (link, local->main_frame, -1, local->op_errno,
- NULL, NULL, NULL, NULL, NULL);
+ STACK_UNWIND_STRICT(link, local->main_frame, -1, local->op_errno, NULL,
+ NULL, NULL, NULL, NULL);
- local->main_frame = NULL;
- SDFS_STACK_DESTROY (frame);
- return 0;
+ local->main_frame = NULL;
+ SDFS_STACK_DESTROY(frame);
+ return 0;
}
int
-sdfs_symlink (call_frame_t *frame, xlator_t *this, const char *linkname,
- loc_t *loc, mode_t umask, dict_t *xdata)
+sdfs_symlink(call_frame_t *frame, xlator_t *this, const char *linkname,
+ loc_t *loc, mode_t umask, dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- call_frame_t *new_frame = NULL;
- call_stub_t *stub = NULL;
- int op_errno = 0;
-
- if (-1 == sdfs_get_new_frame (frame, loc, &new_frame)) {
- op_errno = ENOMEM;
- goto err;
- }
-
- stub = fop_symlink_stub (new_frame, sdfs_symlink_helper, linkname, loc,
- umask, xdata);
- if (!stub) {
- op_errno = ENOMEM;
- goto err;
- }
-
- local = new_frame->local;
- local->stub = stub;
-
- STACK_WIND (new_frame, sdfs_entrylk_cbk,
- FIRST_CHILD (this),
- FIRST_CHILD(this)->fops->entrylk,
- this->name, &local->parent_loc, local->loc.name,
- ENTRYLK_LOCK, ENTRYLK_WRLCK, xdata);
-
- return 0;
+ sdfs_local_t *local = NULL;
+ call_frame_t *new_frame = NULL;
+ call_stub_t *stub = NULL;
+ int op_errno = 0;
+
+ if (-1 == sdfs_get_new_frame(frame, loc, &new_frame)) {
+ op_errno = ENOMEM;
+ goto err;
+ }
+
+ stub = fop_symlink_stub(new_frame, sdfs_symlink_helper, linkname, loc,
+ umask, xdata);
+ if (!stub) {
+ op_errno = ENOMEM;
+ goto err;
+ }
+
+ local = new_frame->local;
+ local->stub = stub;
+
+ STACK_WIND(new_frame, sdfs_entrylk_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->entrylk, this->name, &local->parent_loc,
+ local->loc.name, ENTRYLK_LOCK, ENTRYLK_WRLCK, xdata);
+
+ return 0;
err:
- STACK_UNWIND_STRICT (link, frame, -1, op_errno, NULL, NULL,
- NULL, NULL, NULL);
+ STACK_UNWIND_STRICT(link, frame, -1, op_errno, NULL, NULL, NULL, NULL,
+ NULL);
- if (new_frame)
- SDFS_STACK_DESTROY (new_frame);
+ if (new_frame)
+ SDFS_STACK_DESTROY(new_frame);
- return 0;
+ return 0;
}
int
-sdfs_common_entrylk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
- int32_t op_ret, int32_t op_errno, dict_t *xdata)
+sdfs_common_entrylk_cbk(call_frame_t *frame, void *cookie, xlator_t *this,
+ int32_t op_ret, int32_t op_errno, dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- int this_call_cnt = 0;
- int lk_index = 0;
- sdfs_lock_t *locks = NULL;
- call_stub_t *stub = NULL;
-
- local = frame->local;
- locks = local->lock;
- lk_index = (long) cookie;
-
- if (op_ret < 0) {
- local->op_ret = op_ret;
- local->op_errno = op_errno;
- } else {
- locks->entrylk->locked[lk_index] = _gf_true;
- }
+ sdfs_local_t *local = NULL;
+ int this_call_cnt = 0;
+ int lk_index = 0;
+ sdfs_lock_t *locks = NULL;
+ call_stub_t *stub = NULL;
- this_call_cnt = sdfs_frame_return (frame);
- if (this_call_cnt > 0) {
- gf_log (this->name, GF_LOG_DEBUG,
- "As there are more callcnt (%d) returning without WIND",
- this_call_cnt);
- return 0;
- }
-
- if (local->stub) {
- stub = local->stub;
- local->stub = NULL;
- call_resume (stub);
- } else {
- if (local->op_ret < 0)
- gf_msg (this->name, GF_LOG_ERROR, 0,
- SDFS_MSG_ENTRYLK_ERROR,
- "unlocking entry lock failed ");
- SDFS_STACK_DESTROY (frame);
- }
+ local = frame->local;
+ locks = local->lock;
+ lk_index = (long)cookie;
+ if (op_ret < 0) {
+ local->op_ret = op_ret;
+ local->op_errno = op_errno;
+ } else {
+ locks->entrylk->locked[lk_index] = _gf_true;
+ }
+
+ this_call_cnt = sdfs_frame_return(frame);
+ if (this_call_cnt > 0) {
+ gf_log(this->name, GF_LOG_DEBUG,
+ "As there are more callcnt (%d) returning without WIND",
+ this_call_cnt);
return 0;
+ }
+
+ if (local->stub) {
+ stub = local->stub;
+ local->stub = NULL;
+ call_resume(stub);
+ } else {
+ if (local->op_ret < 0)
+ gf_msg(this->name, GF_LOG_ERROR, 0, SDFS_MSG_ENTRYLK_ERROR,
+ "unlocking entry lock failed ");
+ SDFS_STACK_DESTROY(frame);
+ }
+
+ return 0;
}
int
-sdfs_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
- int32_t op_ret, int32_t op_errno,
- inode_t *inode, struct iatt *stbuf, struct iatt *preparent,
- struct iatt *postparent, dict_t *xdata)
+sdfs_link_cbk(call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret,
+ int32_t op_errno, inode_t *inode, struct iatt *stbuf,
+ struct iatt *preparent, struct iatt *postparent, dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- sdfs_lock_t *lock = NULL;
- int i = 0;
- int lock_count = 0;
-
- local = frame->local;
- lock = local->lock;
-
- STACK_UNWIND_STRICT (link, local->main_frame, op_ret, op_errno, inode,
- stbuf, preparent, postparent, xdata);
-
- local->main_frame = NULL;
- lock_count = lock->lock_count;
- for (i = 0; i < lock_count; i++) {
- STACK_WIND_COOKIE (frame, sdfs_common_entrylk_cbk,
- (void *)(long) i,
- FIRST_CHILD (this),
- FIRST_CHILD(this)->fops->entrylk,
- this->name, &lock->entrylk[i].parent_loc,
- lock->entrylk[i].basename,
- ENTRYLK_UNLOCK, ENTRYLK_WRLCK, xdata);
- }
-
- return 0;
+ sdfs_local_t *local = NULL;
+ sdfs_lock_t *lock = NULL;
+ int i = 0;
+ int lock_count = 0;
+
+ local = frame->local;
+ lock = local->lock;
+
+ STACK_UNWIND_STRICT(link, local->main_frame, op_ret, op_errno, inode, stbuf,
+ preparent, postparent, xdata);
+
+ local->main_frame = NULL;
+ lock_count = lock->lock_count;
+ for (i = 0; i < lock_count; i++) {
+ STACK_WIND_COOKIE(frame, sdfs_common_entrylk_cbk, (void *)(long)i,
+ FIRST_CHILD(this), FIRST_CHILD(this)->fops->entrylk,
+ this->name, &lock->entrylk[i].parent_loc,
+ lock->entrylk[i].basename, ENTRYLK_UNLOCK,
+ ENTRYLK_WRLCK, xdata);
+ }
+
+ return 0;
}
int
-sdfs_link_helper (call_frame_t *frame, xlator_t *this, loc_t *oldloc,
- loc_t *newloc, dict_t *xdata)
+sdfs_link_helper(call_frame_t *frame, xlator_t *this, loc_t *oldloc,
+ loc_t *newloc, dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- sdfs_lock_t *locks = NULL;
- gf_boolean_t stack_destroy = _gf_true;
- int lock_count = 0;
- int i = 0;
-
- local = frame->local;
- locks = local->lock;
-
- if (local->op_ret < 0) {
- gf_msg (this->name, GF_LOG_ERROR, 0,
- SDFS_MSG_ENTRYLK_ERROR,
- "Acquiring entry lock failed");
- goto err;
- }
+ sdfs_local_t *local = NULL;
+ sdfs_lock_t *locks = NULL;
+ gf_boolean_t stack_destroy = _gf_true;
+ int lock_count = 0;
+ int i = 0;
- STACK_WIND (frame, sdfs_link_cbk, FIRST_CHILD(this),
- FIRST_CHILD(this)->fops->link, oldloc, newloc,
- xdata);
+ local = frame->local;
+ locks = local->lock;
- return 0;
-err:
- STACK_UNWIND_STRICT (link, local->main_frame, -1, local->op_errno,
- NULL, NULL, NULL, NULL, NULL);
+ if (local->op_ret < 0) {
+ gf_msg(this->name, GF_LOG_ERROR, 0, SDFS_MSG_ENTRYLK_ERROR,
+ "Acquiring entry lock failed");
+ goto err;
+ }
- local->main_frame = NULL;
- for (i = 0; i < locks->lock_count && locks->entrylk->locked[i]; i++) {
- lock_count++;
- }
- GF_ATOMIC_INIT (local->call_cnt, lock_count);
-
- for (i = 0; i < lock_count; i++) {
- if (!locks->entrylk->locked[i]) {
- lock_count++;
- continue;
- }
-
- stack_destroy = _gf_false;
- STACK_WIND (frame, sdfs_common_entrylk_cbk,
- FIRST_CHILD (this),
- FIRST_CHILD(this)->fops->entrylk,
- this->name, &locks->entrylk[i].parent_loc,
- locks->entrylk[i].basename,
- ENTRYLK_UNLOCK, ENTRYLK_WRLCK, xdata);
+ STACK_WIND(frame, sdfs_link_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->link, oldloc, newloc, xdata);
+
+ return 0;
+err:
+ STACK_UNWIND_STRICT(link, local->main_frame, -1, local->op_errno, NULL,
+ NULL, NULL, NULL, NULL);
+
+ local->main_frame = NULL;
+ for (i = 0; i < locks->lock_count && locks->entrylk->locked[i]; i++) {
+ lock_count++;
+ }
+ GF_ATOMIC_INIT(local->call_cnt, lock_count);
+
+ for (i = 0; i < lock_count; i++) {
+ if (!locks->entrylk->locked[i]) {
+ lock_count++;
+ continue;
}
- if (stack_destroy)
- SDFS_STACK_DESTROY (frame);
+ stack_destroy = _gf_false;
+ STACK_WIND(frame, sdfs_common_entrylk_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->entrylk, this->name,
+ &locks->entrylk[i].parent_loc, locks->entrylk[i].basename,
+ ENTRYLK_UNLOCK, ENTRYLK_WRLCK, xdata);
+ }
- return 0;
+ if (stack_destroy)
+ SDFS_STACK_DESTROY(frame);
+
+ return 0;
}
static int
-sdfs_init_entry_lock (sdfs_entry_lock_t *lock, loc_t *loc)
+sdfs_init_entry_lock(sdfs_entry_lock_t *lock, loc_t *loc)
{
- int ret = 0;
+ int ret = 0;
- ret = sdfs_build_parent_loc (&lock->parent_loc, loc);
- if (ret)
- return -1;
+ ret = sdfs_build_parent_loc(&lock->parent_loc, loc);
+ if (ret)
+ return -1;
- lock->basename = gf_strdup (loc->name);
- if (!lock->basename)
- return -1;
+ lock->basename = gf_strdup(loc->name);
+ if (!lock->basename)
+ return -1;
- return 0;
+ return 0;
}
int
-sdfs_entry_lock_cmp (const void *l1, const void *l2)
+sdfs_entry_lock_cmp(const void *l1, const void *l2)
{
- const sdfs_entry_lock_t *r1 = l1;
- const sdfs_entry_lock_t *r2 = l2;
- int ret = 0;
- uuid_t gfid1 = {0};
- uuid_t gfid2 = {0};
-
- loc_gfid ((loc_t *)&r1->parent_loc, gfid1);
- loc_gfid ((loc_t *)&r2->parent_loc, gfid2);
- ret = gf_uuid_compare (gfid1, gfid2);
- /*Entrylks with NULL basename are the 'smallest'*/
- if (ret == 0) {
- if (!r1->basename)
- return -1;
- if (!r2->basename)
- return 1;
- ret = strcmp (r1->basename, r2->basename);
- }
-
- if (ret <= 0)
- return -1;
- else
- return 1;
+ const sdfs_entry_lock_t *r1 = l1;
+ const sdfs_entry_lock_t *r2 = l2;
+ int ret = 0;
+ uuid_t gfid1 = {0};
+ uuid_t gfid2 = {0};
+
+ loc_gfid((loc_t *)&r1->parent_loc, gfid1);
+ loc_gfid((loc_t *)&r2->parent_loc, gfid2);
+ ret = gf_uuid_compare(gfid1, gfid2);
+ /*Entrylks with NULL basename are the 'smallest'*/
+ if (ret == 0) {
+ if (!r1->basename)
+ return -1;
+ if (!r2->basename)
+ return 1;
+ ret = strcmp(r1->basename, r2->basename);
+ }
+
+ if (ret <= 0)
+ return -1;
+ else
+ return 1;
}
int
-sdfs_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc,
- loc_t *newloc, dict_t *xdata)
+sdfs_link(call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc,
+ dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- call_frame_t *new_frame = NULL;
- call_stub_t *stub = NULL;
- sdfs_lock_t *lock = NULL;
- client_t *client = NULL;
- int ret = 0;
- int op_errno = ENOMEM;
-
- new_frame = copy_frame (frame);
- if (!new_frame) {
- op_errno = ENOMEM;
- goto err;
- }
-
- gf_client_ref (client);
- new_frame->root->client = client;
- local = sdfs_local_init (new_frame, this);
- if (!local) {
- op_errno = ENOMEM;
- goto err;
- }
-
- local->main_frame = frame;
-
- lock = GF_CALLOC (1, sizeof (*lock), gf_common_mt_char);
- if (!lock)
- goto err;
-
- local->lock = lock;
-
- ret = sdfs_init_entry_lock (&lock->entrylk[0], newloc);
- if (ret)
- goto err;
-
- ++lock->lock_count;
-
- local->lock = lock;
- GF_ATOMIC_INIT (local->call_cnt, lock->lock_count);
-
- ret = loc_copy (&local->loc, newloc);
- if (ret == -1) {
- op_errno = ENOMEM;
- goto err;
- }
-
- stub = fop_link_stub (new_frame, sdfs_link_helper, oldloc,
- newloc, xdata);
- if (!stub) {
- op_errno = ENOMEM;
- goto err;
- }
-
- local->stub = stub;
-
- STACK_WIND_COOKIE (new_frame, sdfs_common_entrylk_cbk,
- 0, FIRST_CHILD (this),
- FIRST_CHILD(this)->fops->entrylk,
- this->name, &lock->entrylk[0].parent_loc,
- lock->entrylk[0].basename, ENTRYLK_LOCK,
- ENTRYLK_WRLCK, xdata);
-
- return 0;
+ sdfs_local_t *local = NULL;
+ call_frame_t *new_frame = NULL;
+ call_stub_t *stub = NULL;
+ sdfs_lock_t *lock = NULL;
+ client_t *client = NULL;
+ int ret = 0;
+ int op_errno = ENOMEM;
+
+ new_frame = copy_frame(frame);
+ if (!new_frame) {
+ op_errno = ENOMEM;
+ goto err;
+ }
+
+ gf_client_ref(client);
+ new_frame->root->client = client;
+ local = sdfs_local_init(new_frame, this);
+ if (!local) {
+ op_errno = ENOMEM;
+ goto err;
+ }
+
+ local->main_frame = frame;
+
+ lock = GF_CALLOC(1, sizeof(*lock), gf_common_mt_char);
+ if (!lock)
+ goto err;
+
+ local->lock = lock;
+
+ ret = sdfs_init_entry_lock(&lock->entrylk[0], newloc);
+ if (ret)
+ goto err;
+
+ ++lock->lock_count;
+
+ local->lock = lock;
+ GF_ATOMIC_INIT(local->call_cnt, lock->lock_count);
+
+ ret = loc_copy(&local->loc, newloc);
+ if (ret == -1) {
+ op_errno = ENOMEM;
+ goto err;
+ }
+
+ stub = fop_link_stub(new_frame, sdfs_link_helper, oldloc, newloc, xdata);
+ if (!stub) {
+ op_errno = ENOMEM;
+ goto err;
+ }
+
+ local->stub = stub;
+
+ STACK_WIND_COOKIE(new_frame, sdfs_common_entrylk_cbk, 0, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->entrylk, this->name,
+ &lock->entrylk[0].parent_loc, lock->entrylk[0].basename,
+ ENTRYLK_LOCK, ENTRYLK_WRLCK, xdata);
+
+ return 0;
err:
- STACK_UNWIND_STRICT (link, frame, -1, op_errno, NULL, NULL,
- NULL, NULL, NULL);
+ STACK_UNWIND_STRICT(link, frame, -1, op_errno, NULL, NULL, NULL, NULL,
+ NULL);
- if (new_frame)
- SDFS_STACK_DESTROY (new_frame);
+ if (new_frame)
+ SDFS_STACK_DESTROY(new_frame);
- return 0;
+ return 0;
}
int
-sdfs_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
- int32_t op_ret, int32_t op_errno, inode_t *inode,
- struct iatt *stbuf, struct iatt *preparent,
- struct iatt *postparent, dict_t *xdata)
+sdfs_mknod_cbk(call_frame_t *frame, void *cookie, xlator_t *this,
+ int32_t op_ret, int32_t op_errno, inode_t *inode,
+ struct iatt *stbuf, struct iatt *preparent,
+ struct iatt *postparent, dict_t *xdata)
{
- sdfs_local_t *local = NULL;
+ sdfs_local_t *local = NULL;
- local = frame->local;
+ local = frame->local;
- STACK_UNWIND_STRICT (mknod, local->main_frame, op_ret, op_errno, inode,
- stbuf, preparent, postparent, xdata);
+ STACK_UNWIND_STRICT(mknod, local->main_frame, op_ret, op_errno, inode,
+ stbuf, preparent, postparent, xdata);
- local->main_frame = NULL;
- STACK_WIND (frame, sdfs_entrylk_cbk, FIRST_CHILD (this),
- FIRST_CHILD(this)->fops->entrylk,
- this->name, &local->parent_loc, local->loc.name,
- ENTRYLK_UNLOCK, ENTRYLK_WRLCK, xdata);
- return 0;
+ local->main_frame = NULL;
+ STACK_WIND(frame, sdfs_entrylk_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->entrylk, this->name, &local->parent_loc,
+ local->loc.name, ENTRYLK_UNLOCK, ENTRYLK_WRLCK, xdata);
+ return 0;
}
int
-sdfs_mknod_helper (call_frame_t *frame, xlator_t *this, loc_t *loc,
- mode_t mode, dev_t rdev, mode_t umask, dict_t *xdata)
+sdfs_mknod_helper(call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,
+ dev_t rdev, mode_t umask, dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- char gfid[GF_UUID_BUF_SIZE] = {0};
+ sdfs_local_t *local = NULL;
+ char gfid[GF_UUID_BUF_SIZE] = {0};
- local = frame->local;
+ local = frame->local;
- gf_uuid_unparse(loc->pargfid, gfid);
+ gf_uuid_unparse(loc->pargfid, gfid);
- if (local->op_ret < 0) {
- gf_msg (this->name, GF_LOG_ERROR, 0,
- SDFS_MSG_ENTRYLK_ERROR,
- "Acquiring entry lock failed for directory %s "
- "with parent gfid %s", local->loc.name, gfid);
- goto err;
- }
+ if (local->op_ret < 0) {
+ gf_msg(this->name, GF_LOG_ERROR, 0, SDFS_MSG_ENTRYLK_ERROR,
+ "Acquiring entry lock failed for directory %s "
+ "with parent gfid %s",
+ local->loc.name, gfid);
+ goto err;
+ }
- STACK_WIND (frame, sdfs_mknod_cbk, FIRST_CHILD(this),
- FIRST_CHILD(this)->fops->mknod, loc, mode, rdev,
- umask, xdata);
+ STACK_WIND(frame, sdfs_mknod_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->mknod, loc, mode, rdev, umask, xdata);
- return 0;
+ return 0;
err:
- STACK_UNWIND_STRICT (mknod, local->main_frame, -1, local->op_errno,
- NULL, NULL, NULL, NULL, NULL);
+ STACK_UNWIND_STRICT(mknod, local->main_frame, -1, local->op_errno, NULL,
+ NULL, NULL, NULL, NULL);
- local->main_frame = NULL;
- SDFS_STACK_DESTROY (frame);
- return 0;
+ local->main_frame = NULL;
+ SDFS_STACK_DESTROY(frame);
+ return 0;
}
int
-sdfs_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,
- dev_t rdev, mode_t umask, dict_t *xdata)
+sdfs_mknod(call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode,
+ dev_t rdev, mode_t umask, dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- call_frame_t *new_frame = NULL;
- call_stub_t *stub = NULL;
- int op_errno = 0;
-
- if (-1 == sdfs_get_new_frame (frame, loc, &new_frame)) {
- op_errno = ENOMEM;
- goto err;
- }
-
- stub = fop_mknod_stub (new_frame, sdfs_mknod_helper, loc, mode,
- rdev, umask, xdata);
- if (!stub) {
- op_errno = ENOMEM;
- goto err;
- }
-
- local = new_frame->local;
- local->stub = stub;
-
- STACK_WIND (new_frame, sdfs_entrylk_cbk,
- FIRST_CHILD (this),
- FIRST_CHILD(this)->fops->entrylk,
- this->name, &local->parent_loc, local->loc.name,
- ENTRYLK_LOCK, ENTRYLK_WRLCK, xdata);
-
- return 0;
+ sdfs_local_t *local = NULL;
+ call_frame_t *new_frame = NULL;
+ call_stub_t *stub = NULL;
+ int op_errno = 0;
+
+ if (-1 == sdfs_get_new_frame(frame, loc, &new_frame)) {
+ op_errno = ENOMEM;
+ goto err;
+ }
+
+ stub = fop_mknod_stub(new_frame, sdfs_mknod_helper, loc, mode, rdev, umask,
+ xdata);
+ if (!stub) {
+ op_errno = ENOMEM;
+ goto err;
+ }
+
+ local = new_frame->local;
+ local->stub = stub;
+
+ STACK_WIND(new_frame, sdfs_entrylk_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->entrylk, this->name, &local->parent_loc,
+ local->loc.name, ENTRYLK_LOCK, ENTRYLK_WRLCK, xdata);
+
+ return 0;
err:
- STACK_UNWIND_STRICT (mknod, frame, -1, op_errno, NULL, NULL,
- NULL, NULL, NULL);
+ STACK_UNWIND_STRICT(mknod, frame, -1, op_errno, NULL, NULL, NULL, NULL,
+ NULL);
- if (new_frame)
- SDFS_STACK_DESTROY (new_frame);
+ if (new_frame)
+ SDFS_STACK_DESTROY(new_frame);
- return 0;
+ return 0;
}
int
-sdfs_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
- int32_t op_ret, int32_t op_errno, struct iatt *stbuf,
- struct iatt *preoldparent, struct iatt *postoldparent,
- struct iatt *prenewparent, struct iatt *postnewparent,
- dict_t *xdata)
+sdfs_rename_cbk(call_frame_t *frame, void *cookie, xlator_t *this,
+ int32_t op_ret, int32_t op_errno, struct iatt *stbuf,
+ struct iatt *preoldparent, struct iatt *postoldparent,
+ struct iatt *prenewparent, struct iatt *postnewparent,
+ dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- sdfs_lock_t *lock = NULL;
- int i = 0;
- int call_cnt = 0;
-
- local = frame->local;
- lock = local->lock;
- GF_ATOMIC_INIT (local->call_cnt, lock->lock_count);
-
- STACK_UNWIND_STRICT (rename, local->main_frame, op_ret, op_errno, stbuf,
- preoldparent, postoldparent, prenewparent,
- postnewparent, xdata);
-
- local->main_frame = NULL;
- call_cnt = GF_ATOMIC_GET (local->call_cnt);
-
- for (i = 0; i < call_cnt; i++) {
- STACK_WIND_COOKIE (frame, sdfs_common_entrylk_cbk,
- (void *)(long) i,
- FIRST_CHILD (this),
- FIRST_CHILD(this)->fops->entrylk,
- this->name, &lock->entrylk[i].parent_loc,
- lock->entrylk[i].basename,
- ENTRYLK_UNLOCK, ENTRYLK_WRLCK, xdata);
- }
-
- return 0;
+ sdfs_local_t *local = NULL;
+ sdfs_lock_t *lock = NULL;
+ int i = 0;
+ int call_cnt = 0;
+
+ local = frame->local;
+ lock = local->lock;
+ GF_ATOMIC_INIT(local->call_cnt, lock->lock_count);
+
+ STACK_UNWIND_STRICT(rename, local->main_frame, op_ret, op_errno, stbuf,
+ preoldparent, postoldparent, prenewparent,
+ postnewparent, xdata);
+
+ local->main_frame = NULL;
+ call_cnt = GF_ATOMIC_GET(local->call_cnt);
+
+ for (i = 0; i < call_cnt; i++) {
+ STACK_WIND_COOKIE(frame, sdfs_common_entrylk_cbk, (void *)(long)i,
+ FIRST_CHILD(this), FIRST_CHILD(this)->fops->entrylk,
+ this->name, &lock->entrylk[i].parent_loc,
+ lock->entrylk[i].basename, ENTRYLK_UNLOCK,
+ ENTRYLK_WRLCK, xdata);
+ }
+
+ return 0;
}
int
-sdfs_rename_helper (call_frame_t *frame, xlator_t *this, loc_t *oldloc,
- loc_t *newloc, dict_t *xdata)
+sdfs_rename_helper(call_frame_t *frame, xlator_t *this, loc_t *oldloc,
+ loc_t *newloc, dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- sdfs_lock_t *lock = NULL;
- gf_boolean_t stack_destroy = _gf_true;
- int lock_count = 0;
- int i = 0;
-
- local = frame->local;
- lock = local->lock;
-
- if (local->op_ret < 0) {
- gf_msg (this->name, GF_LOG_ERROR, 0,
- SDFS_MSG_ENTRYLK_ERROR,
- "Acquiring entry lock failed ");
- goto err;
- }
+ sdfs_local_t *local = NULL;
+ sdfs_lock_t *lock = NULL;
+ gf_boolean_t stack_destroy = _gf_true;
+ int lock_count = 0;
+ int i = 0;
- STACK_WIND (frame, sdfs_rename_cbk, FIRST_CHILD(this),
- FIRST_CHILD(this)->fops->rename, oldloc, newloc,
- xdata);
+ local = frame->local;
+ lock = local->lock;
- return 0;
+ if (local->op_ret < 0) {
+ gf_msg(this->name, GF_LOG_ERROR, 0, SDFS_MSG_ENTRYLK_ERROR,
+ "Acquiring entry lock failed ");
+ goto err;
+ }
-err:
- STACK_UNWIND_STRICT (rename, local->main_frame, -1, local->op_errno,
- NULL, NULL, NULL, NULL, NULL, NULL);
+ STACK_WIND(frame, sdfs_rename_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->rename, oldloc, newloc, xdata);
- local->main_frame = NULL;
- for (i = 0; i < lock->lock_count && lock->entrylk->locked[i]; i++) {
- lock_count++;
- }
- GF_ATOMIC_INIT (local->call_cnt, lock_count);
-
- for (i = 0; i < lock_count; i++) {
- if (!lock->entrylk->locked[i]) {
- lock_count++;
- continue;
- }
- stack_destroy = _gf_false;
- STACK_WIND (frame, sdfs_common_entrylk_cbk,
- FIRST_CHILD (this),
- FIRST_CHILD(this)->fops->entrylk,
- this->name, &lock->entrylk[i].parent_loc,
- lock->entrylk[i].basename,
- ENTRYLK_UNLOCK, ENTRYLK_WRLCK, xdata);
+ return 0;
+
+err:
+ STACK_UNWIND_STRICT(rename, local->main_frame, -1, local->op_errno, NULL,
+ NULL, NULL, NULL, NULL, NULL);
+
+ local->main_frame = NULL;
+ for (i = 0; i < lock->lock_count && lock->entrylk->locked[i]; i++) {
+ lock_count++;
+ }
+ GF_ATOMIC_INIT(local->call_cnt, lock_count);
+
+ for (i = 0; i < lock_count; i++) {
+ if (!lock->entrylk->locked[i]) {
+ lock_count++;
+ continue;
}
+ stack_destroy = _gf_false;
+ STACK_WIND(frame, sdfs_common_entrylk_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->entrylk, this->name,
+ &lock->entrylk[i].parent_loc, lock->entrylk[i].basename,
+ ENTRYLK_UNLOCK, ENTRYLK_WRLCK, xdata);
+ }
- if (stack_destroy)
- SDFS_STACK_DESTROY (frame);
+ if (stack_destroy)
+ SDFS_STACK_DESTROY(frame);
- return 0;
+ return 0;
}
int
-sdfs_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc,
- loc_t *newloc, dict_t *xdata)
+sdfs_rename(call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc,
+ dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- sdfs_lock_t *lock = NULL;
- call_frame_t *new_frame = NULL;
- call_stub_t *stub = NULL;
- client_t *client = NULL;
- int ret = 0;
- int op_errno = ENOMEM;
- int i = 0;
- int call_cnt = 0;
-
- new_frame = copy_frame (frame);
- if (!new_frame) {
- op_errno = ENOMEM;
- goto err;
- }
-
- gf_client_ref (client);
- new_frame->root->client = client;
- local = sdfs_local_init (new_frame, this);
- if (!local) {
- op_errno = ENOMEM;
- goto err;
- }
-
- local->main_frame = frame;
-
- lock = GF_CALLOC (1, sizeof (*lock), gf_common_mt_char);
- if (!lock)
- goto err;
-
- local->lock = lock;
-
- ret = sdfs_init_entry_lock (&lock->entrylk[0], oldloc);
- if (ret)
- goto err;
- lock->entrylk->locked[0] = _gf_false;
-
- ++lock->lock_count;
-
- ret = sdfs_init_entry_lock (&lock->entrylk[1], newloc);
- if (ret)
- goto err;
- lock->entrylk->locked[1] = _gf_false;
-
- ++lock->lock_count;
-
- qsort (lock->entrylk, lock->lock_count, sizeof (*lock->entrylk),
- sdfs_entry_lock_cmp);
-
- local->lock = lock;
- GF_ATOMIC_INIT (local->call_cnt, lock->lock_count);
-
- stub = fop_rename_stub (new_frame, sdfs_rename_helper, oldloc,
- newloc, xdata);
- if (!stub) {
- op_errno = ENOMEM;
- goto err;
- }
-
- local->stub = stub;
- call_cnt = GF_ATOMIC_GET (local->call_cnt);
- for (i = 0; i < call_cnt; i++) {
- STACK_WIND_COOKIE (new_frame, sdfs_common_entrylk_cbk,
- (void *)(long) i,
- FIRST_CHILD (this),
- FIRST_CHILD(this)->fops->entrylk,
- this->name, &lock->entrylk[i].parent_loc,
- lock->entrylk[i].basename,
- ENTRYLK_LOCK, ENTRYLK_WRLCK, xdata);
- }
-
- return 0;
+ sdfs_local_t *local = NULL;
+ sdfs_lock_t *lock = NULL;
+ call_frame_t *new_frame = NULL;
+ call_stub_t *stub = NULL;
+ client_t *client = NULL;
+ int ret = 0;
+ int op_errno = ENOMEM;
+ int i = 0;
+ int call_cnt = 0;
+
+ new_frame = copy_frame(frame);
+ if (!new_frame) {
+ op_errno = ENOMEM;
+ goto err;
+ }
+
+ gf_client_ref(client);
+ new_frame->root->client = client;
+ local = sdfs_local_init(new_frame, this);
+ if (!local) {
+ op_errno = ENOMEM;
+ goto err;
+ }
+
+ local->main_frame = frame;
+
+ lock = GF_CALLOC(1, sizeof(*lock), gf_common_mt_char);
+ if (!lock)
+ goto err;
+
+ local->lock = lock;
+
+ ret = sdfs_init_entry_lock(&lock->entrylk[0], oldloc);
+ if (ret)
+ goto err;
+ lock->entrylk->locked[0] = _gf_false;
+
+ ++lock->lock_count;
+
+ ret = sdfs_init_entry_lock(&lock->entrylk[1], newloc);
+ if (ret)
+ goto err;
+ lock->entrylk->locked[1] = _gf_false;
+
+ ++lock->lock_count;
+
+ qsort(lock->entrylk, lock->lock_count, sizeof(*lock->entrylk),
+ sdfs_entry_lock_cmp);
+
+ local->lock = lock;
+ GF_ATOMIC_INIT(local->call_cnt, lock->lock_count);
+
+ stub = fop_rename_stub(new_frame, sdfs_rename_helper, oldloc, newloc,
+ xdata);
+ if (!stub) {
+ op_errno = ENOMEM;
+ goto err;
+ }
+
+ local->stub = stub;
+ call_cnt = GF_ATOMIC_GET(local->call_cnt);
+ for (i = 0; i < call_cnt; i++) {
+ STACK_WIND_COOKIE(new_frame, sdfs_common_entrylk_cbk, (void *)(long)i,
+ FIRST_CHILD(this), FIRST_CHILD(this)->fops->entrylk,
+ this->name, &lock->entrylk[i].parent_loc,
+ lock->entrylk[i].basename, ENTRYLK_LOCK,
+ ENTRYLK_WRLCK, xdata);
+ }
+
+ return 0;
err:
- STACK_UNWIND_STRICT (rename, frame, -1, op_errno, NULL, NULL,
- NULL, NULL, NULL, NULL);
+ STACK_UNWIND_STRICT(rename, frame, -1, op_errno, NULL, NULL, NULL, NULL,
+ NULL, NULL);
- if (new_frame)
- SDFS_STACK_DESTROY (new_frame);
+ if (new_frame)
+ SDFS_STACK_DESTROY(new_frame);
- return 0;
+ return 0;
}
int
-sdfs_lookup_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
- int32_t op_ret, int32_t op_errno, inode_t *inode,
- struct iatt *stbuf, dict_t *xdata,
- struct iatt *postparent)
+sdfs_lookup_cbk(call_frame_t *frame, void *cookie, xlator_t *this,
+ int32_t op_ret, int32_t op_errno, inode_t *inode,
+ struct iatt *stbuf, dict_t *xdata, struct iatt *postparent)
{
- sdfs_local_t *local = NULL;
+ sdfs_local_t *local = NULL;
- local = frame->local;
+ local = frame->local;
- if (!local->loc.parent) {
- sdfs_local_cleanup (local);
- frame->local = NULL;
- STACK_UNWIND_STRICT (lookup, frame, op_ret, op_errno,
- inode, stbuf, xdata, postparent);
- return 0;
- }
+ if (!local->loc.parent) {
+ sdfs_local_cleanup(local);
+ frame->local = NULL;
+ STACK_UNWIND_STRICT(lookup, frame, op_ret, op_errno, inode, stbuf,
+ xdata, postparent);
+ return 0;
+ }
- STACK_UNWIND_STRICT (lookup, local->main_frame, op_ret, op_errno, inode,
- stbuf, xdata, postparent);
+ STACK_UNWIND_STRICT(lookup, local->main_frame, op_ret, op_errno, inode,
+ stbuf, xdata, postparent);
- local->main_frame = NULL;
- STACK_WIND (frame, sdfs_entrylk_cbk, FIRST_CHILD (this),
- FIRST_CHILD(this)->fops->entrylk,
- this->name, &local->parent_loc, local->loc.name,
- ENTRYLK_UNLOCK, ENTRYLK_RDLCK, xdata);
- return 0;
+ local->main_frame = NULL;
+ STACK_WIND(frame, sdfs_entrylk_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->entrylk, this->name, &local->parent_loc,
+ local->loc.name, ENTRYLK_UNLOCK, ENTRYLK_RDLCK, xdata);
+ return 0;
}
int
-sdfs_lookup_helper (call_frame_t *frame, xlator_t *this, loc_t *loc,
- dict_t *xdata)
+sdfs_lookup_helper(call_frame_t *frame, xlator_t *this, loc_t *loc,
+ dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- char gfid[GF_UUID_BUF_SIZE] = {0};
+ sdfs_local_t *local = NULL;
+ char gfid[GF_UUID_BUF_SIZE] = {0};
- local = frame->local;
+ local = frame->local;
- gf_uuid_unparse(loc->pargfid, gfid);
+ gf_uuid_unparse(loc->pargfid, gfid);
- if (local->op_ret < 0) {
- gf_msg (this->name, GF_LOG_ERROR, 0,
- SDFS_MSG_ENTRYLK_ERROR,
- "Acquiring entry lock failed for directory %s "
- "with parent gfid %s", local->loc.name, gfid);
- goto err;
- }
+ if (local->op_ret < 0) {
+ gf_msg(this->name, GF_LOG_ERROR, 0, SDFS_MSG_ENTRYLK_ERROR,
+ "Acquiring entry lock failed for directory %s "
+ "with parent gfid %s",
+ local->loc.name, gfid);
+ goto err;
+ }
- STACK_WIND (frame, sdfs_lookup_cbk, FIRST_CHILD(this),
- FIRST_CHILD(this)->fops->lookup, loc, xdata);
+ STACK_WIND(frame, sdfs_lookup_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->lookup, loc, xdata);
- return 0;
+ return 0;
err:
- STACK_UNWIND_STRICT (lookup, local->main_frame, -1, local->op_errno,
- NULL, NULL, NULL, NULL);
- local->main_frame = NULL;
+ STACK_UNWIND_STRICT(lookup, local->main_frame, -1, local->op_errno, NULL,
+ NULL, NULL, NULL);
+ local->main_frame = NULL;
- SDFS_STACK_DESTROY (frame);
- return 0;
+ SDFS_STACK_DESTROY(frame);
+ return 0;
}
int
-sdfs_lookup (call_frame_t *frame, xlator_t *this, loc_t *loc,
- dict_t *xdata)
+sdfs_lookup(call_frame_t *frame, xlator_t *this, loc_t *loc, dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- call_frame_t *new_frame = NULL;
- call_stub_t *stub = NULL;
- int op_errno = 0;
-
- if (!loc->parent) {
- local = sdfs_local_init (frame, this);
- if (!local) {
- op_errno = ENOMEM;
- goto err;
- }
-
- STACK_WIND_TAIL(frame, FIRST_CHILD(this),
- FIRST_CHILD(this)->fops->lookup,
- loc, xdata);
- return 0;
- }
+ sdfs_local_t *local = NULL;
+ call_frame_t *new_frame = NULL;
+ call_stub_t *stub = NULL;
+ int op_errno = 0;
- if (-1 == sdfs_get_new_frame (frame, loc, &new_frame)) {
- op_errno = ENOMEM;
- goto err;
+ if (!loc->parent) {
+ local = sdfs_local_init(frame, this);
+ if (!local) {
+ op_errno = ENOMEM;
+ goto err;
}
- stub = fop_lookup_stub (new_frame, sdfs_lookup_helper, loc,
- xdata);
- if (!stub) {
- op_errno = ENOMEM;
- goto err;
- }
+ STACK_WIND_TAIL(frame, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->lookup, loc, xdata);
+ return 0;
+ }
- local = new_frame->local;
- local->stub = stub;
+ if (-1 == sdfs_get_new_frame(frame, loc, &new_frame)) {
+ op_errno = ENOMEM;
+ goto err;
+ }
- STACK_WIND (new_frame, sdfs_entrylk_cbk,
- FIRST_CHILD (this),
- FIRST_CHILD(this)->fops->entrylk,
- this->name, &local->parent_loc, local->loc.name,
- ENTRYLK_LOCK, ENTRYLK_RDLCK, xdata);
+ stub = fop_lookup_stub(new_frame, sdfs_lookup_helper, loc, xdata);
+ if (!stub) {
+ op_errno = ENOMEM;
+ goto err;
+ }
- return 0;
+ local = new_frame->local;
+ local->stub = stub;
+
+ STACK_WIND(new_frame, sdfs_entrylk_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->entrylk, this->name, &local->parent_loc,
+ local->loc.name, ENTRYLK_LOCK, ENTRYLK_RDLCK, xdata);
+
+ return 0;
err:
- STACK_UNWIND_STRICT (lookup, frame, -1, op_errno, NULL, NULL,
- NULL, NULL);
+ STACK_UNWIND_STRICT(lookup, frame, -1, op_errno, NULL, NULL, NULL, NULL);
- if (new_frame)
- SDFS_STACK_DESTROY (new_frame);
+ if (new_frame)
+ SDFS_STACK_DESTROY(new_frame);
- return 0;
+ return 0;
}
int32_t
-sdfs_readdirp_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
- int32_t op_ret, int32_t op_errno, gf_dirent_t *entries,
- dict_t *xdata)
+sdfs_readdirp_cbk(call_frame_t *frame, void *cookie, xlator_t *this,
+ int32_t op_ret, int32_t op_errno, gf_dirent_t *entries,
+ dict_t *xdata)
{
- sdfs_local_t *local = NULL;
+ sdfs_local_t *local = NULL;
- local = frame->local;
- STACK_UNWIND_STRICT (readdirp, local->main_frame, op_ret, op_errno,
- entries, xdata);
+ local = frame->local;
+ STACK_UNWIND_STRICT(readdirp, local->main_frame, op_ret, op_errno, entries,
+ xdata);
- local->main_frame = NULL;
- STACK_WIND (frame, sdfs_entrylk_cbk, FIRST_CHILD (this),
- FIRST_CHILD(this)->fops->entrylk,
- this->name, &local->parent_loc, NULL,
- ENTRYLK_UNLOCK, ENTRYLK_RDLCK, xdata);
- return 0;
+ local->main_frame = NULL;
+ STACK_WIND(frame, sdfs_entrylk_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->entrylk, this->name, &local->parent_loc,
+ NULL, ENTRYLK_UNLOCK, ENTRYLK_RDLCK, xdata);
+ return 0;
}
int32_t
-sdfs_readdirp_helper (call_frame_t *frame, xlator_t *this, fd_t *fd,
- size_t size, off_t off, dict_t *xdata)
+sdfs_readdirp_helper(call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,
+ off_t off, dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- char gfid[GF_UUID_BUF_SIZE] = {0};
+ sdfs_local_t *local = NULL;
+ char gfid[GF_UUID_BUF_SIZE] = {0};
- local = frame->local;
+ local = frame->local;
- gf_uuid_unparse(fd->inode->gfid, gfid);
+ gf_uuid_unparse(fd->inode->gfid, gfid);
- if (local->op_ret < 0) {
- gf_msg (this->name, GF_LOG_ERROR, 0,
- SDFS_MSG_ENTRYLK_ERROR,
- "Acquiring entry lock failed for directory %s "
- "with parent gfid %s", local->loc.name, gfid);
- goto err;
- }
+ if (local->op_ret < 0) {
+ gf_msg(this->name, GF_LOG_ERROR, 0, SDFS_MSG_ENTRYLK_ERROR,
+ "Acquiring entry lock failed for directory %s "
+ "with parent gfid %s",
+ local->loc.name, gfid);
+ goto err;
+ }
- STACK_WIND (frame, sdfs_readdirp_cbk, FIRST_CHILD(this),
- FIRST_CHILD(this)->fops->readdirp, fd, size, off, xdata);
+ STACK_WIND(frame, sdfs_readdirp_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->readdirp, fd, size, off, xdata);
- return 0;
+ return 0;
err:
- STACK_UNWIND_STRICT (readdirp, local->main_frame, -1, local->op_errno,
- NULL, NULL);
+ STACK_UNWIND_STRICT(readdirp, local->main_frame, -1, local->op_errno, NULL,
+ NULL);
- local->main_frame = NULL;
+ local->main_frame = NULL;
- SDFS_STACK_DESTROY (frame);
- return 0;
+ SDFS_STACK_DESTROY(frame);
+ return 0;
}
int32_t
-sdfs_readdirp (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,
- off_t off, dict_t *xdata)
+sdfs_readdirp(call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size,
+ off_t off, dict_t *xdata)
{
- sdfs_local_t *local = NULL;
- call_frame_t *new_frame = NULL;
- call_stub_t *stub = NULL;
- int op_errno = 0;
-
- if (-1 == sdfs_get_new_frame_readdirp (frame, fd, &new_frame)) {
- op_errno = ENOMEM;
- goto err;
- }
+ sdfs_local_t *local = NULL;
+ call_frame_t *new_frame = NULL;
+ call_stub_t *stub = NULL;
+ int op_errno = 0;
- stub = fop_readdirp_stub (new_frame, sdfs_readdirp_helper, fd, size,
- off, xdata);
- if (!stub) {
- op_errno = ENOMEM;
- goto err;
- }
+ if (-1 == sdfs_get_new_frame_readdirp(frame, fd, &new_frame)) {
+ op_errno = ENOMEM;
+ goto err;
+ }
- local = new_frame->local;
- local->stub = stub;
+ stub = fop_readdirp_stub(new_frame, sdfs_readdirp_helper, fd, size, off,
+ xdata);
+ if (!stub) {
+ op_errno = ENOMEM;
+ goto err;
+ }
- STACK_WIND (new_frame, sdfs_entrylk_cbk,
- FIRST_CHILD (this),
- FIRST_CHILD(this)->fops->entrylk,
- this->name, &local->parent_loc, NULL,
- ENTRYLK_LOCK, ENTRYLK_RDLCK, xdata);
+ local = new_frame->local;
+ local->stub = stub;
- return 0;
+ STACK_WIND(new_frame, sdfs_entrylk_cbk, FIRST_CHILD(this),
+ FIRST_CHILD(this)->fops->entrylk, this->name, &local->parent_loc,
+ NULL, ENTRYLK_LOCK, ENTRYLK_RDLCK, xdata);
+
+ return 0;
err:
- STACK_UNWIND_STRICT (readdirp, frame, -1, op_errno, NULL, NULL);
+ STACK_UNWIND_STRICT(readdirp, frame, -1, op_errno, NULL, NULL);
- if (new_frame)
- SDFS_STACK_DESTROY (new_frame);
+ if (new_frame)
+ SDFS_STACK_DESTROY(new_frame);
- return 0;
+ return 0;
}
int
-init (xlator_t *this)
+init(xlator_t *this)
{
- int ret = -1;
+ int ret = -1;
- if (!this->children || this->children->next) {
- gf_log (this->name, GF_LOG_ERROR,
- "'dentry-fop-serializer' not configured with exactly one child");
- goto out;
- }
+ if (!this->children || this->children->next) {
+ gf_log(this->name, GF_LOG_ERROR,
+ "'dentry-fop-serializer' not configured with exactly one child");
+ goto out;
+ }
- if (!this->parents) {
- gf_log (this->name, GF_LOG_WARNING,
- "dangling volume. check volfile ");
- }
+ if (!this->parents) {
+ gf_log(this->name, GF_LOG_WARNING, "dangling volume. check volfile ");
+ }
- this->local_pool = mem_pool_new (sdfs_local_t, 512);
- if (!this->local_pool) {
- goto out;
- }
+ this->local_pool = mem_pool_new(sdfs_local_t, 512);
+ if (!this->local_pool) {
+ goto out;
+ }
- GF_OPTION_INIT ("pass-through", this->pass_through, bool, out);
+ GF_OPTION_INIT("pass-through", this->pass_through, bool, out);
- ret = 0;
+ ret = 0;
out:
- return ret;
+ return ret;
}
int
-reconfigure (xlator_t *this, dict_t *options)
+reconfigure(xlator_t *this, dict_t *options)
{
- int ret = -1;
+ int ret = -1;
- GF_OPTION_RECONF ("pass-through", this->pass_through, options, bool,
- out);
+ GF_OPTION_RECONF("pass-through", this->pass_through, options, bool, out);
- ret = 0;
- out:
- return ret;
+ ret = 0;
+out:
+ return ret;
}
int
-fini (xlator_t *this)
+fini(xlator_t *this)
{
- mem_pool_destroy (this->local_pool);
+ mem_pool_destroy(this->local_pool);
- return 0;
+ return 0;
}
-
struct xlator_fops fops = {
- .mkdir = sdfs_mkdir,
- .rmdir = sdfs_rmdir,
- .create = sdfs_create,
- .unlink = sdfs_unlink,
- .symlink = sdfs_symlink,
- .link = sdfs_link,
- .mknod = sdfs_mknod,
- .rename = sdfs_rename,
- .lookup = sdfs_lookup,
- .readdirp = sdfs_readdirp,
+ .mkdir = sdfs_mkdir,
+ .rmdir = sdfs_rmdir,
+ .create = sdfs_create,
+ .unlink = sdfs_unlink,
+ .symlink = sdfs_symlink,
+ .link = sdfs_link,
+ .mknod = sdfs_mknod,
+ .rename = sdfs_rename,
+ .lookup = sdfs_lookup,
+ .readdirp = sdfs_readdirp,
};
struct xlator_cbks cbks;
struct volume_options options[] = {
- { .key = {"pass-through"},
- .type = GF_OPTION_TYPE_BOOL,
- .default_value = "false",
- .op_version = {GD_OP_VERSION_4_1_0},
- .flags = OPT_FLAG_SETTABLE | OPT_FLAG_DOC | OPT_FLAG_CLIENT_OPT,
- .tags = {"sdfs"},
- .description = "Enable/Disable dentry serialize functionality"
- },
- { .key = {NULL} },
+ {.key = {"pass-through"},
+ .type = GF_OPTION_TYPE_BOOL,
+ .default_value = "false",
+ .op_version = {GD_OP_VERSION_4_1_0},
+ .flags = OPT_FLAG_SETTABLE | OPT_FLAG_DOC | OPT_FLAG_CLIENT_OPT,
+ .tags = {"sdfs"},
+ .description = "Enable/Disable dentry serialize functionality"},
+ {.key = {NULL}},
};