diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageFormatPBINode.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageFormatPBINode.java index 1f21871ac7b02..9660ff0c2b515 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageFormatPBINode.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSImageFormatPBINode.java @@ -150,7 +150,7 @@ public static INodeDirectory loadINodeDirectory(INodeSection.INode n, final PermissionStatus permissions = loadPermission(d.getPermission(), state.getStringTable()); final INodeDirectory dir = new INodeDirectory(n.getId(), n.getName() - .toByteArray(), permissions, d.getModificationTime()); + .toByteArray(), permissions, d.getModificationTime(), d.getAccessTime()); final long nsQuota = d.getNsQuota(), dsQuota = d.getDsQuota(); if (nsQuota >= 0 || dsQuota >= 0) { dir.addDirectoryWithQuotaFeature(new DirectoryWithQuotaFeature.Builder(). @@ -707,7 +707,8 @@ public static INodeSection.INodeDirectory.Builder buildINodeDirectory( .newBuilder().setModificationTime(dir.getModificationTime()) .setNsQuota(quota.getNameSpace()) .setDsQuota(quota.getStorageSpace()) - .setPermission(buildPermissionStatus(dir)); + .setPermission(buildPermissionStatus(dir)) + .setAccessTime(dir.getAccessTime()); if (quota.getTypeSpaces().anyGreaterOrEqual(0)) { b.setTypeQuotas(buildQuotaByStorageTypeEntries(quota)); diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java index e375bc1e25ddf..0cc5807821ea6 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/INodeDirectory.java @@ -80,6 +80,12 @@ public INodeDirectory(long id, byte[] name, PermissionStatus permissions, long mtime) { super(id, name, permissions, mtime, 0L); } + + /** constructor */ + public INodeDirectory(long id, byte[] name, PermissionStatus permissions, + long mtime, long atime) { + super(id, name, permissions, mtime, atime); + } /** * Copy constructor diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/proto/fsimage.proto b/hadoop-hdfs-project/hadoop-hdfs/src/main/proto/fsimage.proto index 2bdd302a1e4ef..fff832a1714f7 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/proto/fsimage.proto +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/proto/fsimage.proto @@ -163,6 +163,7 @@ message INodeSection { optional AclFeatureProto acl = 5; optional XAttrFeatureProto xAttrs = 6; optional QuotaByStorageTypeFeatureProto typeQuotas = 7; + optional uint64 accessTime = 8; } message INodeSymlink {