hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andy Isaacson (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HDFS-1249) with fuse-dfs, chown which only has owner (or only group) argument fails with Input/output error.
Date Wed, 18 Jul 2012 00:47:34 GMT

    [ https://issues.apache.org/jira/browse/HDFS-1249?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13416776#comment-13416776
] 

Andy Isaacson commented on HDFS-1249:
-------------------------------------

{code}
-    ret = (errno > 0) ? -errno : -EIO;
+    ret = errno;
+    ERROR("Could not chown %s to %d:%d: error %d", path, (int)uid, gid, ret);
+    if (ret < 0)
+      ret = -EIO;
+    else
+      ret = -ret;
{code}
the if test should be {{if (ret <= 0)}}, or even better,
{code}
if (ret > 0)
    ret = -ret;
else
    ret = -EIO;
{code}
otherwise we get the wrong answer when errno == 0.

Something went wrong with indentation on the prototype of hdfsChown.  Since the line isn't
very long, just keep it on one line rather than rewrapping it.

Thank you for adding the testcase for "only change group"!

Please add testcases for "only change user" and "change both user and group".


                
> 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: fuse-dfs
>    Affects Versions: 0.20.1, 0.20.2
>         Environment: x86 linux (ubuntu 10.04)
>            Reporter: matsusaka kentaro
>            Assignee: Colin Patrick McCabe
>            Priority: Minor
>              Labels: fuse
>         Attachments: HDFS-1249.001.patch, HDFS1249.1
>
>
> 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.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message