diff options
-rw-r--r-- | xlators/features/access-control/src/access-control.c | 260 |
1 files changed, 186 insertions, 74 deletions
diff --git a/xlators/features/access-control/src/access-control.c b/xlators/features/access-control/src/access-control.c index 0ffdb83a4a9..d766f764e77 100644 --- a/xlators/features/access-control/src/access-control.c +++ b/xlators/features/access-control/src/access-control.c @@ -43,26 +43,56 @@ __get_frame_stub (call_frame_t *fr) { call_stub_t *st = NULL; - if (!fr) - return NULL; + GF_VALIDATE_OR_GOTO (ACTRL, fr, out); st = fr->local; fr->local = NULL; - +out: + gf_log (ACTRL, GF_LOG_TRACE, "Returning %p", st); return st; } +void +ac_set_accesstype_str (int access, char *str, size_t len) +{ + char *read = "read "; + char *write = "write "; + char *exec = "exec "; + char *dontcare = "don'tcare "; + + GF_ASSERT (len > (strlen (read) + strlen (write) + + strlen (exec) + strlen (dontcare))); + GF_ASSERT (str); + if (access & ACCTEST_READ) { + snprintf (str, len, "%s", read); + len -= strlen (read); + } + if (access & ACCTEST_WRITE) { + snprintf (str, len, "%s", write); + len -= strlen (write); + } + if (access & ACCTEST_EXEC) { + snprintf (str, len, "%s", exec); + len -= strlen (exec); + } + if (access & ACCTEST_DONTCARE) { + snprintf (str, len, "%s", dontcare); + len -= strlen (dontcare); + } +} + int ac_test_owner_access (struct iatt *ia, uid_t uid, int accesstest) { int ret = -1; - if (!ia) - return -1; + GF_VALIDATE_OR_GOTO (ACTRL, ia, out); /* First test permissions using the uid. */ if (ia->ia_uid != uid) { ret = -1; + gf_log (ACTRL, GF_LOG_TRACE, "UID mismatch (orig: %d, user: %d)", + ia->ia_uid, uid); goto out; } @@ -71,6 +101,7 @@ ac_test_owner_access (struct iatt *ia, uid_t uid, int accesstest) */ if (ac_test_dontcare (accesstest)) { ret = 0; + gf_log (ACTRL, GF_LOG_TRACE, "Access test marked as don't care"); goto out; } @@ -89,6 +120,10 @@ ac_test_owner_access (struct iatt *ia, uid_t uid, int accesstest) else ret = 0; out: + if (0 == ret) + gf_log (ACTRL, GF_LOG_TRACE, "Owner access allowed"); + else + gf_log (ACTRL, GF_LOG_TRACE, "Owner access not allowed"); return ret; } @@ -101,8 +136,8 @@ ac_test_group_access (struct iatt *ia, gid_t gid, gid_t *auxgids, int auxcount, int testgid = -1; int x = 0; - if (!ia) - return -1; + GF_VALIDATE_OR_GOTO (ACTRL, ia, out); + /* First, determine which gid to test against. This will be determined * by first checking which of the gids given to us match the gid in the * stat. If none match, then we go to checking with others as the user. @@ -114,6 +149,8 @@ ac_test_group_access (struct iatt *ia, gid_t gid, gid_t *auxgids, int auxcount, */ if ((ia->ia_gid != gid) && (auxcount == 0)) { + gf_log (ACTRL, GF_LOG_TRACE, "GID mismatch (orig: %d, user: %d)", + ia->ia_gid, gid); ret = -1; goto out; } @@ -131,6 +168,8 @@ ac_test_group_access (struct iatt *ia, gid_t gid, gid_t *auxgids, int auxcount, /* None of the gids match with the gid in the stat. */ if (testgid == -1) { + gf_log (ACTRL, GF_LOG_TRACE, "None of the gids match with gid " + "on the stat"); ret = -1; goto out; } @@ -139,6 +178,7 @@ ac_test_group_access (struct iatt *ia, gid_t gid, gid_t *auxgids, int auxcount, * check whether the caller is interested in the access check at all. */ if (ac_test_dontcare (accesstest)) { + gf_log (ACTRL, GF_LOG_TRACE, "Access test marked as don't care"); ret = 0; goto out; } @@ -158,6 +198,10 @@ ac_test_group_access (struct iatt *ia, gid_t gid, gid_t *auxgids, int auxcount, ret = 0; out: + if (0 == ret) + gf_log (ACTRL, GF_LOG_TRACE, "Group access allowed"); + else + gf_log (ACTRL, GF_LOG_TRACE, "Group access not allowed"); return ret; } @@ -165,10 +209,10 @@ out: int ac_test_other_access (struct iatt *ia, int accesstest) { - int ret = 0; + int ret = -1; - if (!ia) - return -1; + GF_VALIDATE_OR_GOTO (ACTRL, ia, out); + ret = 0; if (ac_test_read (accesstest)) ret = IA_PROT_ROTH (ia->ia_prot); @@ -184,6 +228,11 @@ ac_test_other_access (struct iatt *ia, int accesstest) else ret = 0; +out: + if (0 == ret) + gf_log (ACTRL, GF_LOG_TRACE, "Other access allowed"); + else + gf_log (ACTRL, GF_LOG_TRACE, "Other access not allowed"); return ret; } @@ -196,10 +245,15 @@ ac_test_access (struct iatt *ia, uid_t uid, gid_t gid, gid_t *auxgids, int auxcount, int accesstest, int testwho, int *operrno) { int ret = -1; + char accesstest_str[32] = {0}; - if ((!ia) || (!operrno)) - return -1; + GF_VALIDATE_OR_GOTO (ACTRL, ia, out); + GF_VALIDATE_OR_GOTO (ACTRL, operrno, out); + ac_set_accesstype_str (accesstest, accesstest_str, + sizeof (accesstest_str)); + gf_log (ACTRL, GF_LOG_TRACE, "Testing for accesstypes %s", + accesstest_str); if ((uid == 0) && (gid == 0)) { gf_log (ACTRL, GF_LOG_TRACE, "Root has access"); return 0; @@ -211,7 +265,6 @@ ac_test_access (struct iatt *ia, uid_t uid, gid_t gid, gid_t *auxgids, } if (ret == 0) { - gf_log (ACTRL, GF_LOG_TRACE, "Owner has access"); goto out; } @@ -222,7 +275,6 @@ ac_test_access (struct iatt *ia, uid_t uid, gid_t gid, gid_t *auxgids, } if (ret == 0) { - gf_log (ACTRL, GF_LOG_TRACE, "Group has access"); goto out; } @@ -231,8 +283,6 @@ ac_test_access (struct iatt *ia, uid_t uid, gid_t gid, gid_t *auxgids, ret = ac_test_other_access (ia, accesstest); } - if (ret == 0) - gf_log (ACTRL, GF_LOG_TRACE, "Other has access"); out: if (ret == -1) { gf_log (ACTRL, GF_LOG_TRACE, "No access allowed"); @@ -248,8 +298,7 @@ ac_loc_fill (loc_t *loc, inode_t *inode, inode_t *parent, char *path) { int ret = -EFAULT; - if (!loc) - return ret; + GF_VALIDATE_OR_GOTO (ACTRL, loc, out); if (inode) { loc->inode = inode_ref (inode); @@ -261,21 +310,28 @@ ac_loc_fill (loc_t *loc, inode_t *inode, inode_t *parent, char *path) loc->path = gf_strdup (path); if (!loc->path) { - gf_log (ACTRL, GF_LOG_ERROR, "strdup failed"); goto loc_wipe; } loc->name = strrchr (loc->path, '/'); - if (loc->name) + if (loc->name) { loc->name++; - else + } else { + gf_log (ACTRL, GF_LOG_ERROR, "path: %s, doesn't have '/'", + loc->path); goto loc_wipe; + } ret = 0; loc_wipe: - if (ret < 0) + if (ret < 0) { + if (inode) + gf_log (ACTRL, GF_LOG_ERROR, "location fill failed for " + "inode: %s", uuid_utoa (inode->gfid)); loc_wipe (loc); - + } +out: + gf_log (ACTRL, GF_LOG_TRACE, "Returning %d", ret); return ret; } @@ -287,20 +343,23 @@ ac_inode_loc_fill (inode_t *inode, loc_t *loc) inode_t *parent = NULL; int ret = -EFAULT; - if ((!inode) || (!loc)) - return ret; + GF_VALIDATE_OR_GOTO (ACTRL, inode, out); + GF_VALIDATE_OR_GOTO (ACTRL, loc, out); - if ((inode) && (inode->ino == 1)) + if ((inode) && (inode->ino == 1)) { goto ignore_parent; + } parent = inode_parent (inode, 0, NULL); - if (!parent) - goto err; + GF_VALIDATE_OR_GOTO (ACTRL, parent, err); ignore_parent: ret = inode_path (inode, NULL, &resolvedpath); - if (ret < 0) + if (ret < 0) { + gf_log (ACTRL, GF_LOG_ERROR, "Unable to get path for inode: %s", + uuid_utoa (inode->gfid)); goto err; + } ret = ac_loc_fill (loc, inode, parent, resolvedpath); if (ret < 0) @@ -313,6 +372,8 @@ err: if (resolvedpath) GF_FREE (resolvedpath); +out: + gf_log (ACTRL, GF_LOG_TRACE, "Returning %d", ret); return ret; } @@ -320,10 +381,15 @@ err: int ac_parent_loc_fill (loc_t *parentloc, loc_t *childloc) { - if ((!parentloc) || (!childloc)) - return -1; + int ret = -1; + + GF_VALIDATE_OR_GOTO (ACTRL, parentloc, out); + GF_VALIDATE_OR_GOTO (ACTRL, childloc, out); - return ac_inode_loc_fill (childloc->parent, parentloc); + ret = ac_inode_loc_fill (childloc->parent, parentloc); +out: + gf_log (ACTRL, GF_LOG_TRACE, "Returning %d", ret); + return ret; } @@ -356,6 +422,8 @@ ac_truncate_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, call_resume (stub); out: if (op_ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "truncate failed with " + "error: %s", strerror (op_errno)); STACK_UNWIND_STRICT (truncate, frame, -1, op_errno, NULL, NULL); if (stub) call_stub_destroy (stub); @@ -377,8 +445,6 @@ ac_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset) } stub = fop_truncate_stub (frame, ac_truncate_resume, loc, offset); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot create call stub: " - "(out of memory)"); ret = -ENOMEM; goto out; } @@ -389,8 +455,11 @@ ac_truncate (call_frame_t *frame, xlator_t *this, loc_t *loc, off_t offset) ret = 0; out: - if (ret < 0) + if (ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "truncate failed with error: %s", + strerror (-ret)); STACK_UNWIND_STRICT (truncate, frame, -1, -ret, NULL, NULL); + } return 0; } @@ -447,6 +516,8 @@ ac_access_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, call_resume (stub); out: if (op_ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "access failed with error: %s", + strerror (op_errno)); STACK_UNWIND_STRICT (access, frame, -1, op_errno); if (stub) call_stub_destroy (stub); @@ -468,8 +539,6 @@ ac_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask) } stub = fop_access_stub (frame, ac_access_resume, loc, mask); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot create call stub: " - "(out of memory)"); ret = -ENOMEM; goto out; } @@ -480,8 +549,11 @@ ac_access (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t mask) ret = 0; out: - if (ret < 0) + if (ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "access failed with error: %s", + strerror (-ret)); STACK_UNWIND_STRICT (access, frame, -1, -ret); + } return 0; } @@ -516,6 +588,8 @@ ac_readlink_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, call_resume (stub); out: if (op_ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "readlink failed with error: %s", + strerror (op_errno)); STACK_UNWIND_STRICT (readlink, frame, -1, op_errno, NULL, NULL); if (stub) call_stub_destroy (stub); @@ -537,8 +611,6 @@ ac_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size) } stub = fop_readlink_stub (frame, ac_readlink_resume, loc, size); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot create call stub: " - "(out of memory)"); ret = -ENOMEM; goto out; } @@ -549,8 +621,11 @@ ac_readlink (call_frame_t *frame, xlator_t *this, loc_t *loc, size_t size) ret = 0; out: - if (ret < 0) + if (ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "readlink failed with error: %s", + strerror (-ret)); STACK_UNWIND_STRICT (readlink, frame, -1, -ret, NULL, NULL); + } return 0; } @@ -587,6 +662,8 @@ ac_mknod_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, call_resume (stub); out: if (op_ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "mknod failed with error: %s", + strerror (op_errno)); STACK_UNWIND_STRICT (mknod, frame, -1, op_errno, NULL, NULL, NULL, NULL); if (stub) @@ -611,8 +688,6 @@ ac_mknod (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, } stub = fop_mknod_stub (frame, ac_mknod_resume, loc, mode, rdev, params); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot create call stub: " - "(out of memory)"); ret = -ENOMEM; goto out; } @@ -633,6 +708,8 @@ out: stub = __get_frame_stub (frame); if (stub) call_stub_destroy (stub); + gf_log (this->name, GF_LOG_ERROR, "mknod failed with error: %s", + strerror (-ret)); STACK_UNWIND_STRICT (mknod, frame, -1, -ret, NULL, NULL, NULL, NULL); } @@ -676,6 +753,8 @@ ac_mkdir_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, call_resume (stub); out: if (op_ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "mkdir failed with error: %s", + strerror (op_errno)); STACK_UNWIND_STRICT (mkdir, frame, -1, op_errno, NULL, NULL, NULL, NULL); if (stub) @@ -700,8 +779,6 @@ ac_mkdir (call_frame_t *frame, xlator_t *this, loc_t *loc, mode_t mode, } stub = fop_mkdir_stub (frame, ac_mkdir_resume, loc, mode, params); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot create call stub: " - "(out of memory)"); ret = -ENOMEM; goto out; } @@ -722,6 +799,8 @@ out: stub = __get_frame_stub (frame); if (stub) call_stub_destroy (stub); + gf_log (this->name, GF_LOG_ERROR, "mkdir failed with error: %s", + strerror (-ret)); STACK_UNWIND_STRICT (mkdir, frame, -1, -ret, NULL, NULL, NULL, NULL); } @@ -760,6 +839,8 @@ ac_unlink_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, call_resume (stub); out: if (op_ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "unlink failed with error: %s", + strerror (op_errno)); STACK_UNWIND_STRICT (unlink, frame, -1, op_errno, NULL, NULL); if (stub) call_stub_destroy (stub); @@ -782,8 +863,6 @@ ac_unlink (call_frame_t *frame, xlator_t *this, loc_t *loc) } stub = fop_unlink_stub (frame, ac_unlink_resume, loc); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot create call stub: " - "(out of memory)"); ret = -ENOMEM; goto out; } @@ -804,6 +883,8 @@ out: stub = __get_frame_stub (frame); if (stub) call_stub_destroy (stub); + gf_log (this->name, GF_LOG_ERROR, "unlink failed with error: %s", + strerror (-ret)); STACK_UNWIND_STRICT (unlink, frame, -1, -ret, NULL, NULL); } @@ -841,6 +922,8 @@ ac_rmdir_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, call_resume (stub); out: if (op_ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "rmdir failed with error: %s", + strerror (op_errno)); STACK_UNWIND_STRICT (rmdir, frame, -1, op_errno, NULL, NULL); if (stub) call_stub_destroy (stub); @@ -863,8 +946,6 @@ ac_rmdir (call_frame_t *frame, xlator_t *this, loc_t *loc, int flags) } stub = fop_rmdir_stub (frame, ac_rmdir_resume, loc, flags); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot create call stub: " - "(out of memory)"); ret = -ENOMEM; goto out; } @@ -885,6 +966,8 @@ out: stub = __get_frame_stub (frame); if (stub) call_stub_destroy (stub); + gf_log (this->name, GF_LOG_ERROR, "rmdir failed with error: %s", + strerror (-ret)); STACK_UNWIND_STRICT (rmdir, frame, -1, -ret, NULL, NULL); } @@ -923,6 +1006,8 @@ ac_symlink_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, call_resume (stub); out: if (op_ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "symlink failed with error: %s", + strerror (op_errno)); STACK_UNWIND_STRICT (symlink, frame, -1, op_errno, NULL, NULL, NULL, NULL); if (stub) @@ -948,8 +1033,6 @@ ac_symlink (call_frame_t *frame, xlator_t *this, const char *linkname, stub = fop_symlink_stub (frame, ac_symlink_resume, linkname, loc, params); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot create call stub: " - "(out of memory)"); ret = -ENOMEM; goto out; } @@ -970,6 +1053,8 @@ out: stub = __get_frame_stub (frame); if (stub) call_stub_destroy (stub); + gf_log (this->name, GF_LOG_ERROR, "symlink failed with error: %s", + strerror (-ret)); STACK_UNWIND_STRICT (symlink, frame, -1, -ret, NULL, NULL, NULL, NULL); } @@ -1010,6 +1095,8 @@ ac_rename_dst_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, call_resume (stub); out: if (op_ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "rename failed with error: %s", + strerror (op_errno)); STACK_UNWIND_STRICT (rename, frame, -1, op_errno, NULL, NULL, NULL, NULL, NULL); if (stub) @@ -1056,6 +1143,8 @@ out: stub = __get_frame_stub (frame); if (stub) call_stub_destroy (stub); + gf_log (this->name, GF_LOG_ERROR, "rename failed with error: %s", + strerror (op_errno)); STACK_UNWIND_STRICT (rename, frame, -1, op_errno, NULL, NULL, NULL, NULL, NULL); } @@ -1077,8 +1166,6 @@ ac_rename (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc) } stub = fop_rename_stub (frame, ac_rename_resume, oldloc, newloc); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot create call stub: " - "(out of memory)"); ret = -ENOMEM; goto out; } @@ -1099,6 +1186,8 @@ out: stub = __get_frame_stub (frame); if (stub) call_stub_destroy (stub); + gf_log (this->name, GF_LOG_ERROR, "rename failed with error: %s", + strerror (-ret)); STACK_UNWIND_STRICT (rename, frame, -1, -ret, NULL, NULL, NULL, NULL, NULL); } @@ -1143,6 +1232,8 @@ ac_link_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, call_resume (stub); out: if (op_ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "link failed with error: %s", + strerror (op_errno)); STACK_UNWIND_STRICT (link, frame, -1, op_errno, NULL, NULL, NULL, NULL); if (stub) @@ -1166,8 +1257,6 @@ ac_link (call_frame_t *frame, xlator_t *this, loc_t *oldloc, loc_t *newloc) } stub = fop_link_stub (frame, ac_link_resume, oldloc, newloc); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot create call stub: " - "(out of memory)"); ret = -ENOMEM; goto out; } @@ -1188,6 +1277,8 @@ out: stub = __get_frame_stub (frame); if (stub) call_stub_destroy (stub); + gf_log (this->name, GF_LOG_ERROR, "link failed with error: %s", + strerror (-ret)); STACK_UNWIND_STRICT (link, frame, -1, -ret, NULL, NULL, NULL, NULL); } @@ -1228,6 +1319,8 @@ ac_create_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, call_resume (stub); out: if (op_ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "create failed with error: %s", + strerror (op_errno)); STACK_UNWIND_STRICT (create, frame, -1, op_errno, NULL, NULL, NULL, NULL, NULL); if (stub) @@ -1253,8 +1346,6 @@ ac_create (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags, stub = fop_create_stub (frame, ac_create_resume, loc, flags, mode, fd, params); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot create call stub: " - "(out of memory)"); ret = -ENOMEM; goto out; } @@ -1275,6 +1366,8 @@ out: stub = __get_frame_stub (frame); if (stub) call_stub_destroy (stub); + gf_log (this->name, GF_LOG_ERROR, "create failed with error: %s", + strerror (-ret)); STACK_UNWIND_STRICT (create, frame, -1, -ret, NULL, NULL, NULL, NULL, NULL); } @@ -1314,6 +1407,8 @@ ac_open_create_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, call_resume (stub); out: if (op_ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "open failed with error: %s", + strerror (op_errno)); STACK_UNWIND_STRICT (open, frame, -1, op_errno, NULL); if (stub) call_stub_destroy (stub); @@ -1378,6 +1473,8 @@ ac_open_only_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, call_resume (stub); out: if (op_ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "open failed with error: %s", + strerror (op_errno)); STACK_UNWIND_STRICT (open, frame, -1, op_errno, NULL); if (stub) call_stub_destroy (stub); @@ -1416,8 +1513,6 @@ ac_open (call_frame_t *frame, xlator_t *this, loc_t *loc, int32_t flags, stub = fop_open_stub (frame, ac_open_resume, loc, flags, fd, wbflags); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot create call stub: " - "(out of memory)"); ret = -ENOMEM; goto out; } @@ -1436,6 +1531,8 @@ out: stub = __get_frame_stub (frame); if (stub) call_stub_destroy (stub); + gf_log (this->name, GF_LOG_ERROR, "open failed with error: %s", + strerror (-ret)); STACK_UNWIND_STRICT (open, frame, -1, -ret, NULL); } @@ -1474,6 +1571,8 @@ ac_readv_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, call_resume (stub); out: if (op_ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "readv failed with error: %s", + strerror (op_errno)); STACK_UNWIND_STRICT (readv, frame, -1, op_errno, NULL, 0, NULL, NULL); if (stub) @@ -1498,8 +1597,6 @@ ac_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, stub = fop_readv_stub (frame, ac_readv_resume, fd, size, offset); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot create call stub: " - "(out of memory)"); ret = -ENOMEM; goto out; } @@ -1510,9 +1607,12 @@ ac_readv (call_frame_t *frame, xlator_t *this, fd_t *fd, size_t size, ret = 0; out: - if (ret < 0) + if (ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "readv failed with error: %s", + strerror (-ret)); STACK_UNWIND_STRICT (readv, frame, -1, -ret, NULL, 0, NULL, NULL); + } return 0; } @@ -1551,6 +1651,8 @@ ac_writev_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, call_resume (stub); out: if (op_ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "writev failed with error: %s", + strerror (op_errno)); STACK_UNWIND_STRICT (writev, frame, -1, op_errno, NULL, NULL); if (stub) call_stub_destroy (stub); @@ -1576,8 +1678,6 @@ ac_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, struct iovec *vector, stub = fop_writev_stub (frame, ac_writev_resume, fd, vector, count, offset, iobref); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot create call stub: " - "(out of memory)"); ret = -ENOMEM; goto out; } @@ -1588,8 +1688,11 @@ ac_writev (call_frame_t *frame, xlator_t *this, fd_t *fd, struct iovec *vector, ret = 0; out: - if (ret < 0) + if (ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "writev failed with error: %s", + strerror (-ret)); STACK_UNWIND_STRICT (writev, frame, -1, -ret, NULL, NULL); + } return 0; } @@ -1623,6 +1726,8 @@ ac_opendir_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, call_resume (stub); out: if (op_ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "opendir failed with error: %s", + strerror (op_errno)); STACK_UNWIND_STRICT (opendir, frame, -1, op_errno, NULL); if (stub) call_stub_destroy (stub); @@ -1644,8 +1749,6 @@ ac_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd) stub = fop_opendir_stub (frame, ac_opendir_resume, loc, fd); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot create call stub: " - "(out of memory)"); ret = -ENOMEM; goto out; } @@ -1656,8 +1759,11 @@ ac_opendir (call_frame_t *frame, xlator_t *this, loc_t *loc, fd_t *fd) ret = 0; out: - if (ret < 0) + if (ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "opendir failed with error: %s", + strerror (-ret)); STACK_UNWIND_STRICT (opendir, frame, -1, -ret, NULL); + } return 0; } @@ -1732,6 +1838,8 @@ ac_setattr_stat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, call_resume (stub); out: if (op_ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "setattr failed with error: %s", + strerror (op_errno)); STACK_UNWIND_STRICT (setattr, frame, -1, op_errno, NULL, NULL); if (stub) call_stub_destroy (stub); @@ -1754,8 +1862,6 @@ ac_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc, struct iatt *buf, stub = fop_setattr_stub (frame, ac_setattr_resume, loc, buf, valid); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot create call stub: " - "(out of memory)"); ret = -ENOMEM; goto out; } @@ -1766,8 +1872,11 @@ ac_setattr (call_frame_t *frame, xlator_t *this, loc_t *loc, struct iatt *buf, ret = 0; out: - if (ret < 0) + if (ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "setattr failed with error: %s", + strerror (-ret)); STACK_UNWIND_STRICT (setattr, frame, -1, -ret, NULL, NULL); + } return 0; } @@ -1842,6 +1951,8 @@ ac_fsetattr_fstat_cbk (call_frame_t *frame, void *cookie, xlator_t *this, call_resume (stub); out: if (op_ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "fsetattr failed with error: %s", + strerror (op_errno)); STACK_UNWIND_STRICT (fsetattr, frame, -1, op_errno, NULL, NULL); if (stub) call_stub_destroy (stub); @@ -1865,8 +1976,6 @@ ac_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd, struct iatt *buf, stub = fop_fsetattr_stub (frame, ac_fsetattr_resume, fd, buf, valid); if (!stub) { - gf_log (this->name, GF_LOG_ERROR, "cannot create call stub: " - "(out of memory)"); ret = -ENOMEM; goto out; } @@ -1877,8 +1986,11 @@ ac_fsetattr (call_frame_t *frame, xlator_t *this, fd_t *fd, struct iatt *buf, ret = 0; out: - if (ret < 0) + if (ret < 0) { + gf_log (this->name, GF_LOG_ERROR, "fsetattr failed with error: %s", + strerror (-ret)); STACK_UNWIND_STRICT (fsetattr, frame, -1, -ret, NULL, NULL); + } return 0; } |