Return-Path: X-Original-To: apmail-hadoop-hdfs-commits-archive@minotaur.apache.org Delivered-To: apmail-hadoop-hdfs-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id A93EE79EE for ; Thu, 27 Oct 2011 00:04:15 +0000 (UTC) Received: (qmail 53745 invoked by uid 500); 27 Oct 2011 00:04:15 -0000 Delivered-To: apmail-hadoop-hdfs-commits-archive@hadoop.apache.org Received: (qmail 53678 invoked by uid 500); 27 Oct 2011 00:04:15 -0000 Mailing-List: contact hdfs-commits-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: hdfs-dev@hadoop.apache.org Delivered-To: mailing list hdfs-commits@hadoop.apache.org Received: (qmail 53670 invoked by uid 99); 27 Oct 2011 00:04:15 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 27 Oct 2011 00:04:15 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 27 Oct 2011 00:04:13 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id F0AA1238888F; Thu, 27 Oct 2011 00:03:52 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1189547 - in /hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs: ./ src/main/java/ src/main/java/org/apache/hadoop/hdfs/server/namenode/ src/test/java/org/apache/hadoop/hdfs/server/namenode/ src/test/java/org/apache/hadoop... Date: Thu, 27 Oct 2011 00:03:52 -0000 To: hdfs-commits@hadoop.apache.org From: szetszwo@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20111027000352.F0AA1238888F@eris.apache.org> Author: szetszwo Date: Thu Oct 27 00:03:51 2011 New Revision: 1189547 URL: http://svn.apache.org/viewvc?rev=1189547&view=rev Log: svn merge -c 1189546 from trunk for HDFS-1869. Modified: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/ (props changed) hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/ (props changed) hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.java hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFsLimits.java hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/security/TestPermission.java hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/test/unit/org/apache/hadoop/hdfs/server/namenode/TestINodeFile.java Propchange: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Thu Oct 27 00:03:51 2011 @@ -1,4 +1,4 @@ -/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs:1161777,1161781,1162188,1162421,1162491,1162499,1162613,1162928,1162954,1162979,1163050,1163069,1163081,1163490,1163768,1164255,1164301,1164339,1166402,1167383,1167662,1170085,1170379,1170459,1170996,1171136,1171297,1171379,1171611,1172916,1173402,1173468,1175113,1176178,1176550,1176719,1176729,1176733,1177487,1177531,1177859,1177864,1177905,1179169,1179856,1179861,1180757,1183081,1183098,1183175,1183554,1186508,1187140,1189028,1189355,1189360 +/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs:1161777,1161781,1162188,1162421,1162491,1162499,1162613,1162928,1162954,1162979,1163050,1163069,1163081,1163490,1163768,1164255,1164301,1164339,1166402,1167383,1167662,1170085,1170379,1170459,1170996,1171136,1171297,1171379,1171611,1172916,1173402,1173468,1175113,1176178,1176550,1176719,1176729,1176733,1177487,1177531,1177859,1177864,1177905,1179169,1179856,1179861,1180757,1183081,1183098,1183175,1183554,1186508,1187140,1189028,1189355,1189360,1189546 /hadoop/core/branches/branch-0.19/hdfs:713112 /hadoop/hdfs/branches/HDFS-1052:987665-1095512 /hadoop/hdfs/branches/HDFS-265:796829-820463 Modified: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1189547&r1=1189546&r2=1189547&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original) +++ hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Thu Oct 27 00:03:51 2011 @@ -736,6 +736,9 @@ Release 0.23.0 - Unreleased HDFS-2501. Add version prefix and root methods to webhdfs. (szetszwo) + HDFS-1869. mkdirs should use the supplied permission for all of the created + directories. (Daryn Sharp via szetszwo) + OPTIMIZATIONS HDFS-1458. Improve checkpoint performance by avoiding unnecessary image @@ -1104,7 +1107,7 @@ Release 0.23.0 - Unreleased webhdfs responses. (szetszwo) HDFS-2428. Convert com.sun.jersey.api.ParamException$QueryParamException - to IllegalArgumentException and response it http BAD_REQUEST in webhdfs. + to IllegalArgumentException and response it as http BAD_REQUEST in webhdfs. (szetszwo) HDFS-2424. Added a root element "HdfsFileStatuses" for the response Propchange: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Thu Oct 27 00:03:51 2011 @@ -1,4 +1,4 @@ -/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java:1161777,1161781,1162188,1162421,1162491,1162499,1162613,1162928,1162954,1162979,1163050,1163069,1163081,1163490,1163768,1164255,1164301,1164339,1166402,1167383,1167662,1170085,1170379,1170459,1170996,1171136,1171297,1171379,1171611,1172916,1173402,1173468,1175113,1176178,1176550,1176719,1176729,1176733,1177487,1177531,1177859,1177864,1177905,1179169,1179856,1179861,1180757,1183081,1183098,1183175,1183554,1186508,1187140,1189028,1189355,1189360 +/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/main/java:1161777,1161781,1162188,1162421,1162491,1162499,1162613,1162928,1162954,1162979,1163050,1163069,1163081,1163490,1163768,1164255,1164301,1164339,1166402,1167383,1167662,1170085,1170379,1170459,1170996,1171136,1171297,1171379,1171611,1172916,1173402,1173468,1175113,1176178,1176550,1176719,1176729,1176733,1177487,1177531,1177859,1177864,1177905,1179169,1179856,1179861,1180757,1183081,1183098,1183175,1183554,1186508,1187140,1189028,1189355,1189360,1189546 /hadoop/core/branches/branch-0.19/hdfs/src/java:713112 /hadoop/core/trunk/src/hdfs:776175-785643,785929-786278 /hadoop/hdfs/branches/HDFS-1052/src/java:987665-1095512 Modified: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.java?rev=1189547&r1=1189546&r2=1189547&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.java (original) +++ hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSDirectory.java Thu Oct 27 00:03:51 2011 @@ -36,6 +36,7 @@ import org.apache.hadoop.fs.Options.Rena import org.apache.hadoop.fs.ParentNotDirectoryException; import org.apache.hadoop.fs.Path; import org.apache.hadoop.fs.UnresolvedLinkException; +import org.apache.hadoop.fs.permission.FsAction; import org.apache.hadoop.fs.permission.FsPermission; import org.apache.hadoop.fs.permission.PermissionStatus; import org.apache.hadoop.hdfs.DFSConfigKeys; @@ -258,7 +259,7 @@ public class FSDirectory implements Clos clientMachine, clientNode); writeLock(); try { - newNode = addNode(path, newNode, UNKNOWN_DISK_SPACE, false); + newNode = addNode(path, newNode, UNKNOWN_DISK_SPACE); } finally { writeUnlock(); } @@ -301,7 +302,7 @@ public class FSDirectory implements Clos writeLock(); try { try { - newNode = addNode(path, newNode, diskspace, false); + newNode = addNode(path, newNode, diskspace); if(newNode != null && blocks != null) { int nrBlocks = blocks.length; // Add file->block mapping @@ -328,7 +329,7 @@ public class FSDirectory implements Clos try { try { newParent = rootDir.addToParent(src, newNode, parentINode, - false, propagateModTime); + propagateModTime); cacheName(newNode); } catch (FileNotFoundException e) { return null; @@ -601,7 +602,7 @@ public class FSDirectory implements Clos // add src to the destination dstChild = addChildNoQuotaCheck(dstInodes, dstInodes.length - 1, - srcChild, UNKNOWN_DISK_SPACE, false); + srcChild, UNKNOWN_DISK_SPACE); if (dstChild != null) { srcChild = null; if (NameNode.stateChangeLog.isDebugEnabled()) { @@ -618,7 +619,7 @@ public class FSDirectory implements Clos // put it back srcChild.setLocalName(srcChildName); addChildNoQuotaCheck(srcInodes, srcInodes.length - 1, srcChild, - UNKNOWN_DISK_SPACE, false); + UNKNOWN_DISK_SPACE); } } NameNode.stateChangeLog.warn("DIR* FSDirectory.unprotectedRenameTo: " @@ -756,7 +757,7 @@ public class FSDirectory implements Clos removedSrc.setLocalName(dstComponents[dstInodes.length - 1]); // add src as dst to complete rename dstChild = addChildNoQuotaCheck(dstInodes, dstInodes.length - 1, - removedSrc, UNKNOWN_DISK_SPACE, false); + removedSrc, UNKNOWN_DISK_SPACE); int filesDeleted = 0; if (dstChild != null) { @@ -784,13 +785,13 @@ public class FSDirectory implements Clos // Rename failed - restore src removedSrc.setLocalName(srcChildName); addChildNoQuotaCheck(srcInodes, srcInodes.length - 1, removedSrc, - UNKNOWN_DISK_SPACE, false); + UNKNOWN_DISK_SPACE); } if (removedDst != null) { // Rename failed - restore dst removedDst.setLocalName(dstChildName); addChildNoQuotaCheck(dstInodes, dstInodes.length - 1, removedDst, - UNKNOWN_DISK_SPACE, false); + UNKNOWN_DISK_SPACE); } } NameNode.stateChangeLog.warn("DIR* FSDirectory.unprotectedRenameTo: " @@ -1461,9 +1462,10 @@ public class FSDirectory implements Clos * @param src string representation of the path to the directory * @param permissions the permission of the directory - * @param inheritPermission if the permission of the directory should inherit - * from its parent or not. The automatically created - * ones always inherit its permission from its parent + * @param isAutocreate if the permission of the directory should inherit + * from its parent or not. u+wx is implicitly added to + * the automatically created directories, and to the + * given directory if inheritPermission is true * @param now creation time * @return true if the operation succeeds false otherwise * @throws FileNotFoundException if an ancestor or itself is a file @@ -1479,6 +1481,7 @@ public class FSDirectory implements Clos String[] names = INode.getPathNames(src); byte[][] components = INode.getPathComponents(names); INode[] inodes = new INode[components.length]; + final int lastInodeIndex = inodes.length - 1; writeLock(); try { @@ -1495,12 +1498,44 @@ public class FSDirectory implements Clos } } + // default to creating parent dirs with the given perms + PermissionStatus parentPermissions = permissions; + + // if not inheriting and it's the last inode, there's no use in + // computing perms that won't be used + if (inheritPermission || (i < lastInodeIndex)) { + // if inheriting (ie. creating a file or symlink), use the parent dir, + // else the supplied permissions + // NOTE: the permissions of the auto-created directories violate posix + FsPermission parentFsPerm = inheritPermission + ? inodes[i-1].getFsPermission() : permissions.getPermission(); + + // ensure that the permissions allow user write+execute + if (!parentFsPerm.getUserAction().implies(FsAction.WRITE_EXECUTE)) { + parentFsPerm = new FsPermission( + parentFsPerm.getUserAction().or(FsAction.WRITE_EXECUTE), + parentFsPerm.getGroupAction(), + parentFsPerm.getOtherAction() + ); + } + + if (!parentPermissions.getPermission().equals(parentFsPerm)) { + parentPermissions = new PermissionStatus( + parentPermissions.getUserName(), + parentPermissions.getGroupName(), + parentFsPerm + ); + // when inheriting, use same perms for entire path + if (inheritPermission) permissions = parentPermissions; + } + } + // create directories beginning from the first null index for(; i < inodes.length; i++) { pathbuilder.append(Path.SEPARATOR + names[i]); String cur = pathbuilder.toString(); - unprotectedMkdir(inodes, i, components[i], permissions, - inheritPermission || i != components.length-1, now); + unprotectedMkdir(inodes, i, components[i], + (i < lastInodeIndex) ? parentPermissions : permissions, now); if (inodes[i] == null) { return false; } @@ -1531,7 +1566,7 @@ public class FSDirectory implements Clos rootDir.getExistingPathINodes(components, inodes, false); unprotectedMkdir(inodes, inodes.length-1, components[inodes.length-1], - permissions, false, timestamp); + permissions, timestamp); return inodes[inodes.length-1]; } @@ -1540,19 +1575,19 @@ public class FSDirectory implements Clos * All ancestors exist. Newly created one stored at index pos. */ private void unprotectedMkdir(INode[] inodes, int pos, - byte[] name, PermissionStatus permission, boolean inheritPermission, + byte[] name, PermissionStatus permission, long timestamp) throws QuotaExceededException { assert hasWriteLock(); inodes[pos] = addChild(inodes, pos, new INodeDirectory(name, permission, timestamp), - -1, inheritPermission ); + -1); } /** Add a node child to the namespace. The full path name of the node is src. * childDiskspace should be -1, if unknown. * QuotaExceededException is thrown if it violates quota limit */ private T addNode(String src, T child, - long childDiskspace, boolean inheritPermission) + long childDiskspace) throws QuotaExceededException, UnresolvedLinkException { byte[][] components = INode.getPathComponents(src); byte[] path = components[components.length-1]; @@ -1562,8 +1597,7 @@ public class FSDirectory implements Clos writeLock(); try { rootDir.getExistingPathINodes(components, inodes, false); - return addChild(inodes, inodes.length-1, child, childDiskspace, - inheritPermission); + return addChild(inodes, inodes.length-1, child, childDiskspace); } finally { writeUnlock(); } @@ -1691,7 +1725,7 @@ public class FSDirectory implements Clos * Its ancestors are stored at [0, pos-1]. * QuotaExceededException is thrown if it violates quota limit */ private T addChild(INode[] pathComponents, int pos, - T child, long childDiskspace, boolean inheritPermission, + T child, long childDiskspace, boolean checkQuota) throws QuotaExceededException { // The filesystem limits are not really quotas, so this check may appear // odd. It's because a rename operation deletes the src, tries to add @@ -1714,7 +1748,7 @@ public class FSDirectory implements Clos throw new NullPointerException("Panic: parent does not exist"); } T addedNode = ((INodeDirectory)pathComponents[pos-1]).addChild( - child, inheritPermission, true); + child, true); if (addedNode == null) { updateCount(pathComponents, pos, -counts.getNsCount(), -childDiskspace, true); @@ -1723,18 +1757,16 @@ public class FSDirectory implements Clos } private T addChild(INode[] pathComponents, int pos, - T child, long childDiskspace, boolean inheritPermission) + T child, long childDiskspace) throws QuotaExceededException { - return addChild(pathComponents, pos, child, childDiskspace, - inheritPermission, true); + return addChild(pathComponents, pos, child, childDiskspace, true); } private T addChildNoQuotaCheck(INode[] pathComponents, - int pos, T child, long childDiskspace, boolean inheritPermission) { + int pos, T child, long childDiskspace) { T inode = null; try { - inode = addChild(pathComponents, pos, child, childDiskspace, - inheritPermission, false); + inode = addChild(pathComponents, pos, child, childDiskspace, false); } catch (QuotaExceededException e) { NameNode.LOG.warn("FSDirectory.addChildNoQuotaCheck - unexpected", e); } @@ -2144,7 +2176,7 @@ public class FSDirectory implements Clos assert hasWriteLock(); INodeSymlink newNode = new INodeSymlink(target, modTime, atime, perm); try { - newNode = addNode(path, newNode, UNKNOWN_DISK_SPACE, false); + newNode = addNode(path, newNode, UNKNOWN_DISK_SPACE); } catch (UnresolvedLinkException e) { /* All UnresolvedLinkExceptions should have been resolved by now, but we * should re-throw them in case that changes so they are not swallowed Modified: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java?rev=1189547&r1=1189546&r2=1189547&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java (original) +++ hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java Thu Oct 27 00:03:51 2011 @@ -261,25 +261,13 @@ class INodeDirectory extends INode { * Add a child inode to the directory. * * @param node INode to insert - * @param inheritPermission inherit permission from parent? * @param setModTime set modification time for the parent node * not needed when replaying the addition and * the parent already has the proper mod time * @return null if the child with this name already exists; * node, otherwise */ - T addChild(final T node, boolean inheritPermission, - boolean setModTime) { - if (inheritPermission) { - FsPermission p = getFsPermission(); - //make sure the permission has wx for the user - if (!p.getUserAction().implies(FsAction.WRITE_EXECUTE)) { - p = new FsPermission(p.getUserAction().or(FsAction.WRITE_EXECUTE), - p.getGroupAction(), p.getOtherAction()); - } - node.setPermission(p); - } - + T addChild(final T node, boolean setModTime) { if (children == null) { children = new ArrayList(DEFAULT_FILES_PER_DIRECTORY); } @@ -298,30 +286,21 @@ class INodeDirectory extends INode { } /** - * Equivalent to addNode(path, newNode, false). - * @see #addNode(String, INode, boolean) - */ - T addNode(String path, T newNode) - throws FileNotFoundException, UnresolvedLinkException { - return addNode(path, newNode, false); - } - /** * Add new INode to the file tree. * Find the parent and insert * * @param path file path * @param newNode INode to be added - * @param inheritPermission If true, copy the parent's permission to newNode. * @return null if the node already exists; inserted INode, otherwise * @throws FileNotFoundException if parent does not exist or * @throws UnresolvedLinkException if any path component is a symbolic link * is not a directory. */ - T addNode(String path, T newNode, boolean inheritPermission + T addNode(String path, T newNode ) throws FileNotFoundException, UnresolvedLinkException { byte[][] pathComponents = getPathComponents(path); if(addToParent(pathComponents, newNode, - inheritPermission, true) == null) + true) == null) return null; return newNode; } @@ -338,13 +317,12 @@ class INodeDirectory extends INode { INodeDirectory addToParent( byte[] localname, INode newNode, INodeDirectory parent, - boolean inheritPermission, boolean propagateModTime ) throws FileNotFoundException, UnresolvedLinkException { // insert into the parent children list newNode.name = localname; - if(parent.addChild(newNode, inheritPermission, propagateModTime) == null) + if(parent.addChild(newNode, propagateModTime) == null) return null; return parent; } @@ -380,7 +358,6 @@ class INodeDirectory extends INode { */ INodeDirectory addToParent( byte[][] pathComponents, INode newNode, - boolean inheritPermission, boolean propagateModTime ) throws FileNotFoundException, UnresolvedLinkException { @@ -391,7 +368,7 @@ class INodeDirectory extends INode { newNode.name = pathComponents[pathLen-1]; // insert into the parent children list INodeDirectory parent = getParent(pathComponents); - if(parent.addChild(newNode, inheritPermission, propagateModTime) == null) + if(parent.addChild(newNode, propagateModTime) == null) return null; return parent; } Modified: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFsLimits.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFsLimits.java?rev=1189547&r1=1189546&r2=1189547&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFsLimits.java (original) +++ hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFsLimits.java Thu Oct 27 00:03:51 2011 @@ -165,7 +165,7 @@ public class TestFsLimits { Class generated = null; try { fs.verifyFsLimits(inodes, 1, child); - rootInode.addChild(child, false, false); + rootInode.addChild(child, false); } catch (QuotaExceededException e) { generated = e.getClass(); } Modified: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/security/TestPermission.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/security/TestPermission.java?rev=1189547&r1=1189546&r2=1189547&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/security/TestPermission.java (original) +++ hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/security/TestPermission.java Thu Oct 27 00:03:51 2011 @@ -111,10 +111,18 @@ public class TestPermission extends Test FsPermission dirPerm = new FsPermission((short)0777); fs.mkdirs(new Path("/a1/a2/a3"), dirPerm); - checkPermission(fs, "/a1", inheritPerm); - checkPermission(fs, "/a1/a2", inheritPerm); + checkPermission(fs, "/a1", dirPerm); + checkPermission(fs, "/a1/a2", dirPerm); checkPermission(fs, "/a1/a2/a3", dirPerm); + dirPerm = new FsPermission((short)0123); + FsPermission permission = FsPermission.createImmutable( + (short)(dirPerm.toShort() | 0300)); + fs.mkdirs(new Path("/aa/1/aa/2/aa/3"), dirPerm); + checkPermission(fs, "/aa/1", permission); + checkPermission(fs, "/aa/1/aa/2", permission); + checkPermission(fs, "/aa/1/aa/2/aa/3", dirPerm); + FsPermission filePerm = new FsPermission((short)0444); FSDataOutputStream out = fs.create(new Path("/b1/b2/b3.txt"), filePerm, true, conf.getInt("io.file.buffer.size", 4096), @@ -126,7 +134,7 @@ public class TestPermission extends Test checkPermission(fs, "/b1/b2/b3.txt", filePerm); conf.set(FsPermission.UMASK_LABEL, "022"); - FsPermission permission = + permission = FsPermission.createImmutable((short)0666); FileSystem.mkdirs(fs, new Path("/c1"), new FsPermission(permission)); FileSystem.create(fs, new Path("/c1/c2.txt"), Modified: hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/test/unit/org/apache/hadoop/hdfs/server/namenode/TestINodeFile.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/test/unit/org/apache/hadoop/hdfs/server/namenode/TestINodeFile.java?rev=1189547&r1=1189546&r2=1189547&view=diff ============================================================================== --- hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/test/unit/org/apache/hadoop/hdfs/server/namenode/TestINodeFile.java (original) +++ hadoop/common/branches/branch-0.23/hadoop-hdfs-project/hadoop-hdfs/src/test/unit/org/apache/hadoop/hdfs/server/namenode/TestINodeFile.java Thu Oct 27 00:03:51 2011 @@ -139,11 +139,11 @@ public class TestINodeFile { assertEquals("f", inf.getFullPathName()); assertEquals("", inf.getLocalParentDir()); - dir.addChild(inf, false, false); + dir.addChild(inf, false); assertEquals("d"+Path.SEPARATOR+"f", inf.getFullPathName()); assertEquals("d", inf.getLocalParentDir()); - root.addChild(dir, false, false); + root.addChild(dir, false); assertEquals(Path.SEPARATOR+"d"+Path.SEPARATOR+"f", inf.getFullPathName()); assertEquals(Path.SEPARATOR+"d", dir.getFullPathName());