From 7b28f363b1b3f12cecc92d0bba8eb3021b67b48e Mon Sep 17 00:00:00 2001 From: Brandon Li Date: Thu, 21 Aug 2014 17:53:54 +0000 Subject: [PATCH] HDFS-6890. NFS readdirplus doesn't return dotdot attributes. Contributed by Brandon Li git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1619500 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/hadoop/hdfs/nfs/nfs3/RpcProgramNfs3.java | 6 ++++-- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/RpcProgramNfs3.java b/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/RpcProgramNfs3.java index 3ef9240263..0c7aebeebf 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/RpcProgramNfs3.java +++ b/hadoop-hdfs-project/hadoop-hdfs-nfs/src/main/java/org/apache/hadoop/hdfs/nfs/nfs3/RpcProgramNfs3.java @@ -1643,6 +1643,7 @@ READDIRPLUS3Response readdirplus(XDR xdr, SecurityHandler securityHandler, DirectoryListing dlisting = null; Nfs3FileAttributes postOpDirAttr = null; long dotdotFileId = 0; + HdfsFileStatus dotdotStatus = null; try { String dirFileIdPath = Nfs3Utils.getFileIdPath(handle); dirStatus = dfsClient.getFileInfo(dirFileIdPath); @@ -1678,7 +1679,7 @@ READDIRPLUS3Response readdirplus(XDR xdr, SecurityHandler securityHandler, if (cookie == 0) { // Get dotdot fileId String dotdotFileIdPath = dirFileIdPath + "/.."; - HdfsFileStatus dotdotStatus = dfsClient.getFileInfo(dotdotFileIdPath); + dotdotStatus = dfsClient.getFileInfo(dotdotFileIdPath); if (dotdotStatus == null) { // This should not happen @@ -1723,7 +1724,8 @@ READDIRPLUS3Response readdirplus(XDR xdr, SecurityHandler securityHandler, postOpDirAttr.getFileId(), ".", 0, postOpDirAttr, new FileHandle( postOpDirAttr.getFileId())); entries[1] = new READDIRPLUS3Response.EntryPlus3(dotdotFileId, "..", - dotdotFileId, postOpDirAttr, new FileHandle(dotdotFileId)); + dotdotFileId, Nfs3Utils.getNfs3FileAttrFromFileStatus(dotdotStatus, + iug), new FileHandle(dotdotFileId)); for (int i = 2; i < n + 2; i++) { long fileId = fstatus[i - 2].getFileId(); diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index 14ef2f1989..5776f892b5 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -626,6 +626,8 @@ Release 2.6.0 - UNRELEASED HDFS-6870. Blocks and INodes could leak for Rename with overwrite flag. (Yi Liu via jing9) + HDFS-6890. NFS readdirplus doesn't return dotdot attributes (brandonli) + Release 2.5.0 - 2014-08-11 INCOMPATIBLE CHANGES