diff --git a/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountdBase.java b/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountdBase.java
index 534342f33c4..8ef39c4766e 100644
--- a/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountdBase.java
+++ b/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/mount/MountdBase.java
@@ -50,7 +50,6 @@ abstract public class MountdBase {
/* Start UDP server */
private void startUDPServer() {
- rpcProgram.register(PortmapMapping.TRANSPORT_UDP);
SimpleUdpServer udpServer = new SimpleUdpServer(rpcProgram.getPort(),
rpcProgram, 1);
udpServer.run();
@@ -58,14 +57,17 @@ abstract public class MountdBase {
/* Start TCP server */
private void startTCPServer() {
- rpcProgram.register(PortmapMapping.TRANSPORT_TCP);
SimpleTcpServer tcpServer = new SimpleTcpServer(rpcProgram.getPort(),
rpcProgram, 1);
tcpServer.run();
}
- public void start() {
+ public void start(boolean register) {
startUDPServer();
startTCPServer();
+ if (register) {
+ rpcProgram.register(PortmapMapping.TRANSPORT_UDP);
+ rpcProgram.register(PortmapMapping.TRANSPORT_TCP);
+ }
}
}
diff --git a/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Base.java b/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Base.java
index 933115cf888..ec96e617585 100644
--- a/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Base.java
+++ b/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3Base.java
@@ -52,10 +52,12 @@ public abstract class Nfs3Base {
this.rpcProgram = program;
}
- public void start() {
- mountd.start(); // Start mountd
- rpcProgram.register(PortmapMapping.TRANSPORT_TCP);
- startTCPServer(); // Start TCP server
+ public void start(boolean register) {
+ mountd.start(register); // Start mountd
+ startTCPServer(); // Start TCP server
+ if (register) {
+ rpcProgram.register(PortmapMapping.TRANSPORT_TCP);
+ }
}
private void startTCPServer() {
diff --git a/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3FileAttributes.java b/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3FileAttributes.java
index d805aad022a..1ba727b4474 100644
--- a/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3FileAttributes.java
+++ b/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/Nfs3FileAttributes.java
@@ -96,6 +96,22 @@ public class Nfs3FileAttributes {
this.ctime = this.mtime;
}
+ public Nfs3FileAttributes(Nfs3FileAttributes other) {
+ this.type = other.getType();
+ this.mode = other.getMode();
+ this.nlink = other.getNlink();
+ this.uid = other.getUid();
+ this.gid = other.getGid();
+ this.size = other.getSize();
+ this.used = other.getUsed();
+ this.rdev = new Specdata3();
+ this.fsid = other.getFsid();
+ this.fileid = other.getFileid();
+ this.mtime = new NfsTime(other.getMtime());
+ this.atime = new NfsTime(other.getAtime());
+ this.ctime = new NfsTime(other.getCtime());
+ }
+
public void serialize(XDR xdr) {
xdr.writeInt(type);
xdr.writeInt(mode);
diff --git a/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/response/READDIR3Response.java b/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/response/READDIR3Response.java
index 6adcd0cc23f..fa54c5459fb 100644
--- a/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/response/READDIR3Response.java
+++ b/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/response/READDIR3Response.java
@@ -61,6 +61,7 @@ public class READDIR3Response extends NFS3Response {
public DirList3(Entry3[] entries, boolean eof) {
this.entries = ObjectArrays.newArray(entries, entries.length);
+ System.arraycopy(this.entries, 0, entries, 0, entries.length);
this.eof = eof;
}
}
diff --git a/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/response/READDIRPLUS3Response.java b/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/response/READDIRPLUS3Response.java
index 1102c30d713..77794cf48a6 100644
--- a/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/response/READDIRPLUS3Response.java
+++ b/hadoop-common-project/hadoop-nfs/src/main/java/org/apache/hadoop/nfs/nfs3/response/READDIRPLUS3Response.java
@@ -65,6 +65,7 @@ public class READDIRPLUS3Response extends NFS3Response {
public DirListPlus3(EntryPlus3[] entries, boolean eof) {
this.entries = ObjectArrays.newArray(entries, entries.length);
+ System.arraycopy(this.entries, 0, entries, 0, entries.length);
this.eof = eof;
}
diff --git a/hadoop-project/pom.xml b/hadoop-project/pom.xml
index 4b914cb1cde..ae321cd1742 100644
--- a/hadoop-project/pom.xml
+++ b/hadoop-project/pom.xml
@@ -92,6 +92,11 @@
hadoop-auth
${project.version}
+
+ org.apache.hadoop
+ hadoop-nfs
+ ${project.version}
+
org.apache.hadoop
hadoop-hdfs