diff options
Diffstat (limited to 'xlators/nfs/server/src/nfs-inodes.c')
-rw-r--r-- | xlators/nfs/server/src/nfs-inodes.c | 764 |
1 files changed, 369 insertions, 395 deletions
diff --git a/xlators/nfs/server/src/nfs-inodes.c b/xlators/nfs/server/src/nfs-inodes.c index 91703c70a1f..9999e884ffa 100644 --- a/xlators/nfs/server/src/nfs-inodes.c +++ b/xlators/nfs/server/src/nfs-inodes.c @@ -18,588 +18,562 @@ #include <libgen.h> -#define inodes_nfl_to_prog_data(nflocal, pcbk, fram) \ - do { \ - nflocal = fram->local; \ - fram->local = nflocal->proglocal; \ - *VOID(&pcbk) = nflocal->progcbk; \ - nfs_fop_local_wipe (nflocal->nfsx, nflocal); \ - } while (0) \ +#define inodes_nfl_to_prog_data(nflocal, pcbk, fram) \ + do { \ + nflocal = fram->local; \ + fram->local = nflocal->proglocal; \ + *VOID(&pcbk) = nflocal->progcbk; \ + nfs_fop_local_wipe(nflocal->nfsx, nflocal); \ + } while (0) void -nfl_inodes_init (struct nfs_fop_local *nfl, inode_t *inode, inode_t *parent, - inode_t *newparent, const char *name, const char *newname) +nfl_inodes_init(struct nfs_fop_local *nfl, inode_t *inode, inode_t *parent, + inode_t *newparent, const char *name, const char *newname) { - if (!nfl) - return; + if (!nfl) + return; - if (inode) - nfl->inode = inode_ref (inode); + if (inode) + nfl->inode = inode_ref(inode); - if (parent) - nfl->parent = inode_ref (parent); + if (parent) + nfl->parent = inode_ref(parent); - if (newparent) - nfl->newparent = inode_ref (newparent); + if (newparent) + nfl->newparent = inode_ref(newparent); - if (name) - snprintf (nfl->path, NFS_NAME_MAX, "%s", name); + if (name) + snprintf(nfl->path, NFS_NAME_MAX, "%s", name); - if (newname) - snprintf (nfl->newpath, NFS_NAME_MAX, "%s", newname); - return; + if (newname) + snprintf(nfl->newpath, NFS_NAME_MAX, "%s", newname); + return; } - int32_t -nfs_inode_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 *buf, struct iatt *preparent, - struct iatt *postparent, dict_t *xdata) +nfs_inode_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 *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata) { - struct nfs_fop_local *nfl = frame->local; - fop_create_cbk_t progcbk = NULL; - inode_t *linked_inode = NULL; + struct nfs_fop_local *nfl = frame->local; + fop_create_cbk_t progcbk = NULL; + inode_t *linked_inode = NULL; - if (op_ret == -1) - goto do_not_link; + if (op_ret == -1) + goto do_not_link; - linked_inode = inode_link (inode, nfl->parent, nfl->path, buf); + linked_inode = inode_link(inode, nfl->parent, nfl->path, buf); do_not_link: - /* NFS does not need it, upper layers should not expect the pointer to - * be a valid fd. - */ - fd_unref (fd); - - inodes_nfl_to_prog_data (nfl, progcbk, frame); - if (progcbk) - progcbk (frame, cookie, this, op_ret, op_errno, fd, inode, buf, - preparent, postparent, xdata); - - if (linked_inode) { - inode_lookup (linked_inode); - inode_unref (linked_inode); - } - - return 0; + /* NFS does not need it, upper layers should not expect the pointer to + * be a valid fd. + */ + fd_unref(fd); + + inodes_nfl_to_prog_data(nfl, progcbk, frame); + if (progcbk) + progcbk(frame, cookie, this, op_ret, op_errno, fd, inode, buf, + preparent, postparent, xdata); + + if (linked_inode) { + inode_lookup(linked_inode); + inode_unref(linked_inode); + } + + return 0; } - int -nfs_inode_create (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, - loc_t *pathloc, int flags, int mode, fop_create_cbk_t cbk, - void *local) +nfs_inode_create(xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc, + int flags, int mode, fop_create_cbk_t cbk, void *local) { - struct nfs_fop_local *nfl = NULL; - int ret = -EFAULT; - fd_t *newfd = NULL; - - if ((!nfsx) || (!xl) || (!pathloc) || (!nfu)) - return ret; - - nfs_fop_handle_local_init (NULL, nfsx, nfl, cbk, local, ret, err); - - newfd = fd_create (pathloc->inode, 0); - if (!newfd) { - gf_msg (GF_NFS, GF_LOG_ERROR, ENOMEM, NFS_MSG_NO_MEMORY, - "Failed to create new fd"); - ret = -ENOMEM; - goto wipe_nfl; - } - - /* The parent and base name will be needed to link the new inode - * into the inode table. - */ - nfl_inodes_init (nfl, pathloc->inode, pathloc->parent, NULL, - pathloc->name, NULL); - ret = nfs_fop_create (nfsx, xl, nfu, pathloc, flags, mode, newfd, - nfs_inode_create_cbk, nfl); + struct nfs_fop_local *nfl = NULL; + int ret = -EFAULT; + fd_t *newfd = NULL; + + if ((!nfsx) || (!xl) || (!pathloc) || (!nfu)) + return ret; + + nfs_fop_handle_local_init(NULL, nfsx, nfl, cbk, local, ret, err); + + newfd = fd_create(pathloc->inode, 0); + if (!newfd) { + gf_msg(GF_NFS, GF_LOG_ERROR, ENOMEM, NFS_MSG_NO_MEMORY, + "Failed to create new fd"); + ret = -ENOMEM; + goto wipe_nfl; + } + + /* The parent and base name will be needed to link the new inode + * into the inode table. + */ + nfl_inodes_init(nfl, pathloc->inode, pathloc->parent, NULL, pathloc->name, + NULL); + ret = nfs_fop_create(nfsx, xl, nfu, pathloc, flags, mode, newfd, + nfs_inode_create_cbk, nfl); wipe_nfl: - if (ret < 0) - nfs_fop_local_wipe (xl, nfl); + if (ret < 0) + nfs_fop_local_wipe(xl, nfl); err: - return ret; + return ret; } - int32_t -nfs_inode_mkdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, inode_t *inode, - struct iatt *buf, struct iatt *preparent, - struct iatt *postparent, dict_t *xdata) +nfs_inode_mkdir_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, inode_t *inode, + struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata) { - struct nfs_fop_local *nfl = frame->local; - fop_mkdir_cbk_t progcbk = NULL; - inode_t *linked_inode = NULL; + struct nfs_fop_local *nfl = frame->local; + fop_mkdir_cbk_t progcbk = NULL; + inode_t *linked_inode = NULL; - if (op_ret == -1) - goto do_not_link; + if (op_ret == -1) + goto do_not_link; - linked_inode = inode_link (inode, nfl->parent, nfl->path, buf); + linked_inode = inode_link(inode, nfl->parent, nfl->path, buf); do_not_link: - inodes_nfl_to_prog_data (nfl, progcbk, frame); - if (progcbk) - progcbk (frame, cookie, this, op_ret, op_errno, inode, buf, - preparent, postparent, xdata); + inodes_nfl_to_prog_data(nfl, progcbk, frame); + if (progcbk) + progcbk(frame, cookie, this, op_ret, op_errno, inode, buf, preparent, + postparent, xdata); - if (linked_inode) { - inode_lookup (linked_inode); - inode_unref (linked_inode); - } + if (linked_inode) { + inode_lookup(linked_inode); + inode_unref(linked_inode); + } - return 0; + return 0; } - int -nfs_inode_mkdir (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc, - int mode, fop_mkdir_cbk_t cbk, void *local) +nfs_inode_mkdir(xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc, + int mode, fop_mkdir_cbk_t cbk, void *local) { - struct nfs_fop_local *nfl = NULL; - int ret = -EFAULT; + struct nfs_fop_local *nfl = NULL; + int ret = -EFAULT; - if ((!nfsx) || (!xl) || (!pathloc) || (!nfu)) - return ret; + if ((!nfsx) || (!xl) || (!pathloc) || (!nfu)) + return ret; - nfs_fop_handle_local_init (NULL, nfsx, nfl, cbk, local, ret, err); - nfl_inodes_init (nfl, pathloc->inode, pathloc->parent, NULL, - pathloc->name, NULL); - ret = nfs_fop_mkdir (nfsx, xl, nfu, pathloc, mode, nfs_inode_mkdir_cbk, - nfl); - if (ret < 0) - nfs_fop_local_wipe (nfsx, nfl); + nfs_fop_handle_local_init(NULL, nfsx, nfl, cbk, local, ret, err); + nfl_inodes_init(nfl, pathloc->inode, pathloc->parent, NULL, pathloc->name, + NULL); + ret = nfs_fop_mkdir(nfsx, xl, nfu, pathloc, mode, nfs_inode_mkdir_cbk, nfl); + if (ret < 0) + nfs_fop_local_wipe(nfsx, nfl); err: - return ret; + return ret; } - int32_t -nfs_inode_open_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, fd_t *fd, dict_t *xdata) +nfs_inode_open_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, fd_t *fd, dict_t *xdata) { - - struct nfs_fop_local *nfl = NULL; - fop_open_cbk_t progcbk = NULL; - - if ((op_ret == -1) && (fd)) - fd_unref (fd); - /* Not needed here since the fd is cached in higher layers and the bind - * must happen atomically when the fd gets added to the fd LRU. - */ -/* else - fd_bind (fd); -*/ - inodes_nfl_to_prog_data (nfl, progcbk, frame); - if (progcbk) - progcbk (frame, cookie, this, op_ret, op_errno, fd, xdata); - return 0; + struct nfs_fop_local *nfl = NULL; + fop_open_cbk_t progcbk = NULL; + + if ((op_ret == -1) && (fd)) + fd_unref(fd); + /* Not needed here since the fd is cached in higher layers and the bind + * must happen atomically when the fd gets added to the fd LRU. + */ + /* else + fd_bind (fd); + */ + inodes_nfl_to_prog_data(nfl, progcbk, frame); + if (progcbk) + progcbk(frame, cookie, this, op_ret, op_errno, fd, xdata); + return 0; } - int -nfs_inode_open (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *loc, - int32_t flags, fop_open_cbk_t cbk, void *local) +nfs_inode_open(xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *loc, + int32_t flags, fop_open_cbk_t cbk, void *local) { - struct nfs_fop_local *nfl = NULL; - fd_t *newfd = NULL; - int ret = -EFAULT; + struct nfs_fop_local *nfl = NULL; + fd_t *newfd = NULL; + int ret = -EFAULT; - if ((!nfsx) || (!xl) || (!loc) || (!nfu)) - return ret; + if ((!nfsx) || (!xl) || (!loc) || (!nfu)) + return ret; - newfd = fd_create (loc->inode, 0); - if (!newfd) { - gf_msg (GF_NFS, GF_LOG_ERROR, ENOMEM, NFS_MSG_NO_MEMORY, - "Failed to create fd"); - ret = -ENOMEM; - goto err; - } + newfd = fd_create(loc->inode, 0); + if (!newfd) { + gf_msg(GF_NFS, GF_LOG_ERROR, ENOMEM, NFS_MSG_NO_MEMORY, + "Failed to create fd"); + ret = -ENOMEM; + goto err; + } - nfs_fop_handle_local_init (NULL, nfsx, nfl, cbk, local, ret, fd_err); - ret = nfs_fop_open (nfsx, xl, nfu, loc, flags, newfd, - nfs_inode_open_cbk, nfl); + nfs_fop_handle_local_init(NULL, nfsx, nfl, cbk, local, ret, fd_err); + ret = nfs_fop_open(nfsx, xl, nfu, loc, flags, newfd, nfs_inode_open_cbk, + nfl); - if (ret < 0) - nfs_fop_local_wipe (xl, nfl); + if (ret < 0) + nfs_fop_local_wipe(xl, nfl); fd_err: - if (ret < 0) - if (newfd) - fd_unref (newfd); + if (ret < 0) + if (newfd) + fd_unref(newfd); err: - return ret; + return ret; } - - int32_t -nfs_inode_rename_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, struct iatt *buf, - struct iatt *preoldparent, struct iatt *postoldparent, - struct iatt *prenewparent, struct iatt *postnewparent, - dict_t *xdata) +nfs_inode_rename_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, struct iatt *buf, + struct iatt *preoldparent, struct iatt *postoldparent, + struct iatt *prenewparent, struct iatt *postnewparent, + dict_t *xdata) { - struct nfs_fop_local *nfl = NULL; - fop_rename_cbk_t progcbk = NULL; + struct nfs_fop_local *nfl = NULL; + fop_rename_cbk_t progcbk = NULL; - nfl = frame->local; - if (op_ret == -1) - goto do_not_link; + nfl = frame->local; + if (op_ret == -1) + goto do_not_link; - inode_rename (this->itable, nfl->parent, nfl->path, nfl->newparent, - nfl->newpath, nfl->inode, buf); + inode_rename(this->itable, nfl->parent, nfl->path, nfl->newparent, + nfl->newpath, nfl->inode, buf); do_not_link: - inodes_nfl_to_prog_data (nfl, progcbk, frame); - if (progcbk) - progcbk (frame, cookie, this, op_ret, op_errno, buf, - preoldparent, postoldparent, prenewparent, - postnewparent, xdata); - return 0; + inodes_nfl_to_prog_data(nfl, progcbk, frame); + if (progcbk) + progcbk(frame, cookie, this, op_ret, op_errno, buf, preoldparent, + postoldparent, prenewparent, postnewparent, xdata); + return 0; } - int -nfs_inode_rename (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *oldloc, - loc_t *newloc, fop_rename_cbk_t cbk, void *local) +nfs_inode_rename(xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *oldloc, + loc_t *newloc, fop_rename_cbk_t cbk, void *local) { - struct nfs_fop_local *nfl = NULL; - int ret = -EFAULT; + struct nfs_fop_local *nfl = NULL; + int ret = -EFAULT; - if ((!nfsx) || (!xl) || (!oldloc) || (!newloc)) - return ret; + if ((!nfsx) || (!xl) || (!oldloc) || (!newloc)) + return ret; - nfs_fop_handle_local_init (NULL, nfsx, nfl, cbk, local, ret, err); - nfl_inodes_init (nfl, oldloc->inode, oldloc->parent, newloc->parent, - oldloc->name, newloc->name); - ret = nfs_fop_rename (nfsx,xl, nfu, oldloc, newloc, nfs_inode_rename_cbk - , nfl); + nfs_fop_handle_local_init(NULL, nfsx, nfl, cbk, local, ret, err); + nfl_inodes_init(nfl, oldloc->inode, oldloc->parent, newloc->parent, + oldloc->name, newloc->name); + ret = nfs_fop_rename(nfsx, xl, nfu, oldloc, newloc, nfs_inode_rename_cbk, + nfl); err: - if (ret < 0) - nfs_fop_local_wipe (xl, nfl); + if (ret < 0) + nfs_fop_local_wipe(xl, nfl); - return ret; + return ret; } - int32_t -nfs_inode_link_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, inode_t *inode, - struct iatt *buf, struct iatt *preparent, - struct iatt *postparent, dict_t *xdata) +nfs_inode_link_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, inode_t *inode, + struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata) { - struct nfs_fop_local *nfl = NULL; - fop_link_cbk_t progcbk = NULL; - inode_t *linked_inode = NULL; + struct nfs_fop_local *nfl = NULL; + fop_link_cbk_t progcbk = NULL; + inode_t *linked_inode = NULL; - if (op_ret == -1) - goto do_not_link; + if (op_ret == -1) + goto do_not_link; - nfl = frame->local; - linked_inode = inode_link (inode, nfl->newparent, nfl->path, buf); + nfl = frame->local; + linked_inode = inode_link(inode, nfl->newparent, nfl->path, buf); do_not_link: - inodes_nfl_to_prog_data (nfl, progcbk, frame); - if (progcbk) - progcbk (frame, cookie, this, op_ret, op_errno, inode, buf, - preparent, postparent, xdata); + inodes_nfl_to_prog_data(nfl, progcbk, frame); + if (progcbk) + progcbk(frame, cookie, this, op_ret, op_errno, inode, buf, preparent, + postparent, xdata); - if (linked_inode) { - inode_lookup (linked_inode); - inode_unref (linked_inode); - } + if (linked_inode) { + inode_lookup(linked_inode); + inode_unref(linked_inode); + } - return 0; + return 0; } - int -nfs_inode_link (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *oldloc, - loc_t *newloc, fop_link_cbk_t cbk, void *local) +nfs_inode_link(xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *oldloc, + loc_t *newloc, fop_link_cbk_t cbk, void *local) { - struct nfs_fop_local *nfl = NULL; - int ret = -EFAULT; + struct nfs_fop_local *nfl = NULL; + int ret = -EFAULT; - if ((!nfsx) || (!xl) || (!oldloc) || (!newloc) || (!nfu)) - return -EFAULT; + if ((!nfsx) || (!xl) || (!oldloc) || (!newloc) || (!nfu)) + return -EFAULT; - nfs_fop_handle_local_init (NULL, nfsx, nfl, cbk, local, ret, err); - nfl_inodes_init (nfl, NULL, NULL, newloc->parent, newloc->name, NULL); - ret = nfs_fop_link (nfsx, xl, nfu, oldloc, newloc, nfs_inode_link_cbk, - nfl); + nfs_fop_handle_local_init(NULL, nfsx, nfl, cbk, local, ret, err); + nfl_inodes_init(nfl, NULL, NULL, newloc->parent, newloc->name, NULL); + ret = nfs_fop_link(nfsx, xl, nfu, oldloc, newloc, nfs_inode_link_cbk, nfl); err: - if (ret < 0) - nfs_fop_local_wipe (xl, nfl); + if (ret < 0) + nfs_fop_local_wipe(xl, nfl); - return ret; + return ret; } - int32_t -nfs_inode_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) +nfs_inode_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) { - struct nfs_fop_local *nfl = NULL; - fop_unlink_cbk_t progcbk = NULL; + struct nfs_fop_local *nfl = NULL; + fop_unlink_cbk_t progcbk = NULL; - nfl = frame->local; + nfl = frame->local; - if (op_ret == -1) - goto do_not_unlink; + if (op_ret == -1) + goto do_not_unlink; - inode_unlink (nfl->inode, nfl->parent, nfl->path); - inode_forget (nfl->inode, 0); + inode_unlink(nfl->inode, nfl->parent, nfl->path); + inode_forget(nfl->inode, 0); do_not_unlink: - inodes_nfl_to_prog_data (nfl, progcbk, frame); - if (progcbk) - progcbk (frame, cookie, this, op_ret, op_errno, preparent, - postparent, xdata); - return 0; + inodes_nfl_to_prog_data(nfl, progcbk, frame); + if (progcbk) + progcbk(frame, cookie, this, op_ret, op_errno, preparent, postparent, + xdata); + return 0; } - int -nfs_inode_unlink (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc, - fop_unlink_cbk_t cbk, void *local) +nfs_inode_unlink(xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc, + fop_unlink_cbk_t cbk, void *local) { - struct nfs_fop_local *nfl = NULL; - int ret = -EFAULT; + struct nfs_fop_local *nfl = NULL; + int ret = -EFAULT; - if ((!nfsx) || (!xl) || (!pathloc) || (!nfu)) - return -EFAULT; + if ((!nfsx) || (!xl) || (!pathloc) || (!nfu)) + return -EFAULT; - nfs_fop_handle_local_init (NULL, nfsx, nfl, cbk, local, ret, err); - nfl_inodes_init (nfl, pathloc->inode, pathloc->parent, NULL, - pathloc->name, NULL); - ret = nfs_fop_unlink (nfsx, xl, nfu, pathloc, nfs_inode_unlink_cbk,nfl); + nfs_fop_handle_local_init(NULL, nfsx, nfl, cbk, local, ret, err); + nfl_inodes_init(nfl, pathloc->inode, pathloc->parent, NULL, pathloc->name, + NULL); + ret = nfs_fop_unlink(nfsx, xl, nfu, pathloc, nfs_inode_unlink_cbk, nfl); err: - if (ret < 0) - nfs_fop_local_wipe (xl, nfl); + if (ret < 0) + nfs_fop_local_wipe(xl, nfl); - return ret; + return ret; } - int32_t -nfs_inode_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) +nfs_inode_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) { - struct nfs_fop_local *nfl = NULL; - fop_rmdir_cbk_t progcbk = NULL; + struct nfs_fop_local *nfl = NULL; + fop_rmdir_cbk_t progcbk = NULL; - nfl = frame->local; + nfl = frame->local; - if (op_ret == -1) - goto do_not_unlink; + if (op_ret == -1) + goto do_not_unlink; - inode_unlink (nfl->inode, nfl->parent, nfl->path); - inode_forget (nfl->inode, 0); + inode_unlink(nfl->inode, nfl->parent, nfl->path); + inode_forget(nfl->inode, 0); do_not_unlink: - inodes_nfl_to_prog_data (nfl, progcbk, frame); - if (progcbk) - progcbk (frame, cookie, this, op_ret, op_errno, preparent, - postparent, xdata); + inodes_nfl_to_prog_data(nfl, progcbk, frame); + if (progcbk) + progcbk(frame, cookie, this, op_ret, op_errno, preparent, postparent, + xdata); - return 0; + return 0; } - int -nfs_inode_rmdir (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc, - fop_rmdir_cbk_t cbk, void *local) +nfs_inode_rmdir(xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc, + fop_rmdir_cbk_t cbk, void *local) { - struct nfs_fop_local *nfl = NULL; - int ret = -EFAULT; + struct nfs_fop_local *nfl = NULL; + int ret = -EFAULT; - if ((!nfsx) || (!xl) || (!pathloc) || (!nfu)) - return ret; + if ((!nfsx) || (!xl) || (!pathloc) || (!nfu)) + return ret; - nfs_fop_handle_local_init (NULL, nfsx, nfl, cbk, local, ret, err); - nfl_inodes_init (nfl, pathloc->inode, pathloc->parent, NULL, - pathloc->name, NULL); + nfs_fop_handle_local_init(NULL, nfsx, nfl, cbk, local, ret, err); + nfl_inodes_init(nfl, pathloc->inode, pathloc->parent, NULL, pathloc->name, + NULL); - ret = nfs_fop_rmdir (nfsx, xl, nfu, pathloc, nfs_inode_rmdir_cbk, nfl); + ret = nfs_fop_rmdir(nfsx, xl, nfu, pathloc, nfs_inode_rmdir_cbk, nfl); err: - if (ret < 0) - nfs_fop_local_wipe (xl, nfl); - return ret; + if (ret < 0) + nfs_fop_local_wipe(xl, nfl); + return ret; } - int32_t -nfs_inode_mknod_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, inode_t *inode, - struct iatt *buf, struct iatt *preparent, - struct iatt *postparent, dict_t *xdata) +nfs_inode_mknod_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, inode_t *inode, + struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata) { - struct nfs_fop_local *nfl = NULL; - fop_mknod_cbk_t progcbk = NULL; - inode_t *linked_inode = NULL; + struct nfs_fop_local *nfl = NULL; + fop_mknod_cbk_t progcbk = NULL; + inode_t *linked_inode = NULL; - nfl = frame->local; + nfl = frame->local; - if (op_ret == -1) - goto do_not_link; + if (op_ret == -1) + goto do_not_link; - linked_inode = inode_link (inode, nfl->parent, nfl->path, buf); + linked_inode = inode_link(inode, nfl->parent, nfl->path, buf); do_not_link: - inodes_nfl_to_prog_data (nfl, progcbk, frame); - if (progcbk) - progcbk (frame, cookie, this, op_ret, op_errno, inode, buf, - preparent, postparent, xdata); + inodes_nfl_to_prog_data(nfl, progcbk, frame); + if (progcbk) + progcbk(frame, cookie, this, op_ret, op_errno, inode, buf, preparent, + postparent, xdata); - if (linked_inode) { - inode_lookup (linked_inode); - inode_unref (linked_inode); - } + if (linked_inode) { + inode_lookup(linked_inode); + inode_unref(linked_inode); + } - return 0; + return 0; } - int -nfs_inode_mknod (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc, - mode_t mode, dev_t dev, fop_mknod_cbk_t cbk, void *local) +nfs_inode_mknod(xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *pathloc, + mode_t mode, dev_t dev, fop_mknod_cbk_t cbk, void *local) { - struct nfs_fop_local *nfl = NULL; - int ret = -EFAULT; + struct nfs_fop_local *nfl = NULL; + int ret = -EFAULT; - if ((!nfsx) || (!xl) || (!pathloc) || (!nfu)) - return ret; + if ((!nfsx) || (!xl) || (!pathloc) || (!nfu)) + return ret; - nfs_fop_handle_local_init (NULL, nfsx, nfl, cbk, local, ret, err); - nfl_inodes_init (nfl, pathloc->inode, pathloc->parent, NULL, - pathloc->name, NULL); + nfs_fop_handle_local_init(NULL, nfsx, nfl, cbk, local, ret, err); + nfl_inodes_init(nfl, pathloc->inode, pathloc->parent, NULL, pathloc->name, + NULL); - ret = nfs_fop_mknod (nfsx, xl, nfu, pathloc, mode, dev, - nfs_inode_mknod_cbk, nfl); + ret = nfs_fop_mknod(nfsx, xl, nfu, pathloc, mode, dev, nfs_inode_mknod_cbk, + nfl); err: - if (ret < 0) - nfs_fop_local_wipe (xl, nfl); + if (ret < 0) + nfs_fop_local_wipe(xl, nfl); - return ret; + return ret; } - int32_t -nfs_inode_symlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, inode_t *inode, - struct iatt *buf, struct iatt *preparent, - struct iatt *postparent, dict_t *xdata) +nfs_inode_symlink_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, inode_t *inode, + struct iatt *buf, struct iatt *preparent, + struct iatt *postparent, dict_t *xdata) { - struct nfs_fop_local *nfl = NULL; - fop_symlink_cbk_t progcbk = NULL; - inode_t *linked_inode = NULL; + struct nfs_fop_local *nfl = NULL; + fop_symlink_cbk_t progcbk = NULL; + inode_t *linked_inode = NULL; - nfl = frame->local; - if (op_ret == -1) - goto do_not_link; + nfl = frame->local; + if (op_ret == -1) + goto do_not_link; - linked_inode = inode_link (inode, nfl->parent, nfl->path, buf); + linked_inode = inode_link(inode, nfl->parent, nfl->path, buf); do_not_link: - inodes_nfl_to_prog_data (nfl, progcbk, frame); - if (progcbk) - progcbk (frame, cookie, this, op_ret, op_errno, inode, buf, - preparent, postparent, xdata); + inodes_nfl_to_prog_data(nfl, progcbk, frame); + if (progcbk) + progcbk(frame, cookie, this, op_ret, op_errno, inode, buf, preparent, + postparent, xdata); - if (linked_inode) { - inode_lookup (linked_inode); - inode_unref (linked_inode); - } + if (linked_inode) { + inode_lookup(linked_inode); + inode_unref(linked_inode); + } - return 0; + return 0; } - int -nfs_inode_symlink (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, char *target, - loc_t *pathloc, fop_symlink_cbk_t cbk, void *local) +nfs_inode_symlink(xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, char *target, + loc_t *pathloc, fop_symlink_cbk_t cbk, void *local) { - struct nfs_fop_local *nfl = NULL; - int ret = -EFAULT; + struct nfs_fop_local *nfl = NULL; + int ret = -EFAULT; - if ((!nfsx) || (!xl) || (!target) || (!pathloc) || (!nfu)) - return ret; + if ((!nfsx) || (!xl) || (!target) || (!pathloc) || (!nfu)) + return ret; - nfs_fop_handle_local_init (NULL, nfsx, nfl, cbk, local, ret, err); - nfl_inodes_init (nfl, pathloc->inode, pathloc->parent, NULL, - pathloc->name, NULL); - ret = nfs_fop_symlink (nfsx, xl, nfu, target, pathloc, - nfs_inode_symlink_cbk, nfl); + nfs_fop_handle_local_init(NULL, nfsx, nfl, cbk, local, ret, err); + nfl_inodes_init(nfl, pathloc->inode, pathloc->parent, NULL, pathloc->name, + NULL); + ret = nfs_fop_symlink(nfsx, xl, nfu, target, pathloc, nfs_inode_symlink_cbk, + nfl); err: - if (ret < 0) - nfs_fop_local_wipe (xl, nfl); + if (ret < 0) + nfs_fop_local_wipe(xl, nfl); - return ret; + return ret; } int32_t -nfs_inode_opendir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, - int32_t op_ret, int32_t op_errno, fd_t *fd, dict_t *xdata) +nfs_inode_opendir_cbk(call_frame_t *frame, void *cookie, xlator_t *this, + int32_t op_ret, int32_t op_errno, fd_t *fd, dict_t *xdata) { + struct nfs_fop_local *nfl = NULL; + fop_open_cbk_t progcbk = NULL; - struct nfs_fop_local *nfl = NULL; - fop_open_cbk_t progcbk = NULL; + if (op_ret != -1) + fd_bind(fd); - if (op_ret != -1) - fd_bind (fd); + inodes_nfl_to_prog_data(nfl, progcbk, frame); - inodes_nfl_to_prog_data (nfl, progcbk, frame); + if (progcbk) + progcbk(frame, cookie, this, op_ret, op_errno, fd, xdata); - if (progcbk) - progcbk (frame, cookie, this, op_ret, op_errno, fd, xdata); - - return 0; + return 0; } - int -nfs_inode_opendir (xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *loc, - fop_opendir_cbk_t cbk, void *local) +nfs_inode_opendir(xlator_t *nfsx, xlator_t *xl, nfs_user_t *nfu, loc_t *loc, + fop_opendir_cbk_t cbk, void *local) { - struct nfs_fop_local *nfl = NULL; - fd_t *newfd = NULL; - int ret = -EFAULT; + struct nfs_fop_local *nfl = NULL; + fd_t *newfd = NULL; + int ret = -EFAULT; - if ((!nfsx) || (!xl) || (!loc) || (!nfu)) - return ret; + if ((!nfsx) || (!xl) || (!loc) || (!nfu)) + return ret; - newfd = fd_create (loc->inode, 0); - if (!newfd) { - gf_msg (GF_NFS, GF_LOG_ERROR, ENOMEM, NFS_MSG_NO_MEMORY, - "Failed to create fd"); - ret = -ENOMEM; - goto err; - } + newfd = fd_create(loc->inode, 0); + if (!newfd) { + gf_msg(GF_NFS, GF_LOG_ERROR, ENOMEM, NFS_MSG_NO_MEMORY, + "Failed to create fd"); + ret = -ENOMEM; + goto err; + } - nfs_fop_handle_local_init (NULL, nfsx, nfl, cbk, local, ret, err); - ret = nfs_fop_opendir (nfsx, xl, nfu, loc, newfd, - nfs_inode_opendir_cbk, nfl); + nfs_fop_handle_local_init(NULL, nfsx, nfl, cbk, local, ret, err); + ret = nfs_fop_opendir(nfsx, xl, nfu, loc, newfd, nfs_inode_opendir_cbk, + nfl); err: - if (ret < 0) { - if (newfd) - fd_unref (newfd); - nfs_fop_local_wipe (xl, nfl); - } + if (ret < 0) { + if (newfd) + fd_unref(newfd); + nfs_fop_local_wipe(xl, nfl); + } - return ret; + return ret; } |