You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-issues@hadoop.apache.org by "Steve Loughran (JIRA)" <ji...@apache.org> on 2019/02/04 18:24:00 UTC

[jira] [Commented] (HADOOP-16082) FsShell ls: Add option -i to print inode id

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

Steve Loughran commented on HADOOP-16082:
-----------------------------------------

bq. It works but this seems more like a hack.

no, it's allowing subclasses of a filestatus to display more information. For example, for S3AFileStatus, I could display object version markers or encryption headers. We do that with TokenIdentifer already.

I'm going to be honest, I'll probably -1 any changes which add new changes to the base filestatus fields. it's just too sensitive a data structure. So embracing toString() is good. The one issue to consider is whether to add an explicit PrintableString accessor method ( think some other classes already do this), with a guarantee that this string has stability...ie. we know it is part of the public API of the shell, and people have to be careful about making changes which can break code reading it

> FsShell ls: Add option -i to print inode id
> -------------------------------------------
>
>                 Key: HADOOP-16082
>                 URL: https://issues.apache.org/jira/browse/HADOOP-16082
>             Project: Hadoop Common
>          Issue Type: Improvement
>          Components: common
>    Affects Versions: 3.2.0, 3.1.1
>            Reporter: Siyao Meng
>            Assignee: Siyao Meng
>            Priority: Major
>         Attachments: HADOOP-16082.001.patch
>
>
> When debugging the FSImage corruption issue, I often need to know a file's or directory's inode id. At this moment, the only way to do that is to use OIV tool to dump the FSImage and look up the filename, which is very inefficient.
> Here I propose adding option "-i" in FsShell that prints files' or directories' inode id.
> h2. Implementation
> h3. For hdfs:// (HDFS)
> fileId exists in HdfsLocatedFileStatus, which is already returned to hdfs-client. We just need to print it in Ls#processPath().
> h3. For file:// (Local FS)
> h4. Linux
> Use java.nio.
> h4. Windows
> Windows has the concept of "File ID" which is similar to inode id. It is unique in NTFS and ReFS.
> h3. For other FS
> The fileId entry will be "0" in FileStatus if it is not set. We could either ignore or throw an exception.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: common-issues-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-issues-help@hadoop.apache.org