summaryrefslogtreecommitdiffstats
path: root/xlators
diff options
context:
space:
mode:
authorPavan Sondur <pavan@gluster.com>2010-02-22 05:17:28 +0000
committerAnand V. Avati <avati@dev.gluster.com>2010-02-22 03:40:04 -0800
commit96ed73c1556da79e0a58cf1c051471a9b322b05b (patch)
tree325f8446932b11bc133c3f34499d6d50f32f58c3 /xlators
parenta748fd6bfe1ab2d0df439b180ca109c70deac835 (diff)
storage/posix: Check for path before logging it in case of an error in xattrop FOP.
Signed-off-by: Pavan Vilas Sondur <pavan@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 614 (GlusterFS crashes while printing error if fsetxattr call fails in posix) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=614
Diffstat (limited to 'xlators')
-rw-r--r--xlators/storage/posix/src/posix.c45
1 files changed, 32 insertions, 13 deletions
diff --git a/xlators/storage/posix/src/posix.c b/xlators/storage/posix/src/posix.c
index eb1387a72..489cb8d0a 100644
--- a/xlators/storage/posix/src/posix.c
+++ b/xlators/storage/posix/src/posix.c
@@ -3677,7 +3677,6 @@ do_xattrop (call_frame_t *frame, xlator_t *this,
path = strdup (loc->path);
inode = loc->inode;
} else {
- inode_path (fd->inode, NULL, &path);
inode = fd->inode;
}
@@ -3704,10 +3703,16 @@ do_xattrop (call_frame_t *frame, xlator_t *this,
"Extended attributes not "
"supported by filesystem");
} else {
- gf_log (this->name, GF_LOG_ERROR,
- "getxattr failed on %s while doing "
- "xattrop: %s", path,
- strerror (op_errno));
+ if (loc)
+ gf_log (this->name, GF_LOG_ERROR,
+ "getxattr failed on %s while doing "
+ "xattrop: %s", path,
+ strerror (op_errno));
+ else
+ gf_log (this->name, GF_LOG_ERROR,
+ "fgetxattr failed on fd=%d while doing "
+ "xattrop: %s", _fd,
+ strerror (op_errno));
}
op_ret = -1;
@@ -3747,10 +3752,17 @@ do_xattrop (call_frame_t *frame, xlator_t *this,
op_errno = errno;
if (size == -1) {
- gf_log (this->name, GF_LOG_ERROR,
- "setxattr failed on %s while doing xattrop: "
- "key=%s (%s)", path,
- trav->key, strerror (op_errno));
+ if (loc)
+ gf_log (this->name, GF_LOG_ERROR,
+ "setxattr failed on %s while doing xattrop: "
+ "key=%s (%s)", path,
+ trav->key, strerror (op_errno));
+ else
+ gf_log (this->name, GF_LOG_ERROR,
+ "fsetxattr failed on fd=%d while doing xattrop: "
+ "key=%s (%s)", _fd,
+ trav->key, strerror (op_errno));
+
op_ret = -1;
goto out;
} else {
@@ -3758,10 +3770,17 @@ do_xattrop (call_frame_t *frame, xlator_t *this,
trav->value->len);
if (size != 0) {
- gf_log (this->name, GF_LOG_DEBUG,
- "dict_set_bin failed (path=%s): "
- "key=%s (%s)", path,
- trav->key, strerror (-size));
+ if (loc)
+ gf_log (this->name, GF_LOG_DEBUG,
+ "dict_set_bin failed (path=%s): "
+ "key=%s (%s)", path,
+ trav->key, strerror (-size));
+ else
+ gf_log (this->name, GF_LOG_DEBUG,
+ "dict_set_bin failed (fd=%d): "
+ "key=%s (%s)", _fd,
+ trav->key, strerror (-size));
+
op_ret = -1;
op_errno = EINVAL;
goto out;