You are viewing a plain text version of this content. The canonical link for it is here.
Posted to hdfs-dev@hadoop.apache.org by "matsusaka kentaro (JIRA)" <ji...@apache.org> on 2010/06/18 09:28:23 UTC
[jira] Created: (HDFS-1249) with fuse-dfs, chown which only has
owner (or only group) argument fails with Input/output error.
with fuse-dfs, chown which only has owner (or only group) argument fails with Input/output error.
-------------------------------------------------------------------------------------------------
Key: HDFS-1249
URL: https://issues.apache.org/jira/browse/HDFS-1249
Project: Hadoop HDFS
Issue Type: Bug
Components: contrib/fuse-dfs
Affects Versions: 0.20.2, 0.20.1
Environment: x86 linux (ubuntu 10.04)
Reporter: matsusaka kentaro
Priority: Minor
with fuse-dfs, chown which only has owner (or only group) argument fails with Input/output error.
----------
/mnt/hdfs/tmp# chown root file1
chown: changing ownership of `file1': Input/output error
/mnt/hdfs/tmp# chown root:root file1
/mnt/hdfs/tmp# chown :root file1
chown: changing group of `file1': Input/output error
----------
I think it should be treated as unchanged for missing part(owner or group) instead of returning an error.
I took fuse_dfs log and it is saying
----------
unique: 25, opcode: SETATTR (4), nodeid: 14, insize: 128
chown /tmp/file1 0 4294967295
could not lookup group -1
unique: 25, error: -5 (Input/output error), outsize: 16
unique: 26, opcode: SETATTR (4), nodeid: 14, insize: 128
chown /tmp/file1 0 0
getattr /tmp/file1
unique: 26, success, outsize: 120
unique: 27, opcode: SETATTR (4), nodeid: 14, insize: 128
chown /tmp/file1 4294967295 0
could not lookup userid -1
unique: 27, error: -5 (Input/output error), outsize: 16
----------
therefore this should happen because dfs_chown() in src/contrib/fuse-dfs/src/fuse_impls_chown.c has following
----------
...
user = getUsername(uid);
if (NULL == user) {
syslog(LOG_ERR,"Could not lookup the user id string %d\n",(int)uid);
fprintf(stderr, "could not lookup userid %d\n", (int)uid);
ret = -EIO;
}
if (0 == ret) {
group = getGroup(gid);
if (group == NULL) {
syslog(LOG_ERR,"Could not lookup the group id string %d\n",(int)gid);
fprintf(stderr, "could not lookup group %d\n", (int)gid);
ret = -EIO;
}
}
...
----------
but actually, hdfsChown() in src/c++/libhdfs/hdfs.c has this
----------
...
if (owner == NULL && group == NULL) {
fprintf(stderr, "Both owner and group cannot be null in chown");
errno = EINVAL;
return -1;
}
...
----------
and also, setOwner seems allowing NULL
----------
username - If it is null, the original username remains unchanged.
groupname - If it is null, the original groupname remains unchanged.
----------
according to the api document.
therefore, I think fuse_impls_chown.c should not treat only user(or only group) lookup fail as an error.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.