Merge branch 'trunk' into HDFS-7240
Conflicts:
hadoop-hdfs-project/hadoop-hdfs-client/src/main/proto/hdfs.proto
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeStorageInfo.java
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/b14a70e7
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/b14a70e7
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/b14a70e7
Branch: refs/heads/HDFS-7240
Commit: b14a70e792f8f5d6ebc83d6ce1e9bf8e3668fcff
Parents: 28d313d 6c17d31
Author: Anu Engineer <[email protected]>
Authored: Wed Sep 30 11:19:14 2015 -0700
Committer: Anu Engineer <[email protected]>
Committed: Wed Sep 30 11:19:14 2015 -0700
----------------------------------------------------------------------
.../hadoop-common/CHANGES-HDFS-EC-7285.txt | 74 ++
hadoop-common-project/hadoop-common/CHANGES.txt | 3 +
.../hadoop/fs/CommonConfigurationKeys.java | 15 +
.../org/apache/hadoop/fs/FSOutputSummer.java | 7 +-
.../main/java/org/apache/hadoop/fs/FsShell.java | 8 +-
.../apache/hadoop/io/erasurecode/CodecUtil.java | 144 +++
.../apache/hadoop/io/erasurecode/ECBlock.java | 80 ++
.../hadoop/io/erasurecode/ECBlockGroup.java | 100 ++
.../apache/hadoop/io/erasurecode/ECChunk.java | 87 ++
.../apache/hadoop/io/erasurecode/ECSchema.java | 227 ++++
.../erasurecode/codec/AbstractErasureCodec.java | 51 +
.../io/erasurecode/codec/ErasureCodec.java | 49 +
.../io/erasurecode/codec/RSErasureCodec.java | 43 +
.../io/erasurecode/codec/XORErasureCodec.java | 44 +
.../erasurecode/coder/AbstractErasureCoder.java | 62 ++
.../coder/AbstractErasureCodingStep.java | 59 +
.../coder/AbstractErasureDecoder.java | 167 +++
.../coder/AbstractErasureEncoder.java | 60 +
.../io/erasurecode/coder/ErasureCoder.java | 77 ++
.../io/erasurecode/coder/ErasureCodingStep.java | 55 +
.../erasurecode/coder/ErasureDecodingStep.java | 52 +
.../erasurecode/coder/ErasureEncodingStep.java | 49 +
.../io/erasurecode/coder/RSErasureDecoder.java | 67 ++
.../io/erasurecode/coder/RSErasureEncoder.java | 67 ++
.../io/erasurecode/coder/XORErasureDecoder.java | 86 ++
.../io/erasurecode/coder/XORErasureEncoder.java | 53 +
.../io/erasurecode/grouper/BlockGrouper.java | 90 ++
.../rawcoder/AbstractRawErasureCoder.java | 138 +++
.../rawcoder/AbstractRawErasureDecoder.java | 207 ++++
.../rawcoder/AbstractRawErasureEncoder.java | 136 +++
.../io/erasurecode/rawcoder/RSRawDecoder.java | 216 ++++
.../io/erasurecode/rawcoder/RSRawEncoder.java | 79 ++
.../rawcoder/RSRawErasureCoderFactory.java | 34 +
.../erasurecode/rawcoder/RawErasureCoder.java | 66 ++
.../rawcoder/RawErasureCoderFactory.java | 42 +
.../erasurecode/rawcoder/RawErasureDecoder.java | 88 ++
.../erasurecode/rawcoder/RawErasureEncoder.java | 64 ++
.../io/erasurecode/rawcoder/XORRawDecoder.java | 83 ++
.../io/erasurecode/rawcoder/XORRawEncoder.java | 77 ++
.../rawcoder/XORRawErasureCoderFactory.java | 34 +
.../io/erasurecode/rawcoder/util/DumpUtil.java | 85 ++
.../erasurecode/rawcoder/util/GaloisField.java | 561 ++++++++++
.../io/erasurecode/rawcoder/util/RSUtil.java | 39 +
.../apache/hadoop/fs/shell/TestTextCommand.java | 15 +-
.../hadoop/io/erasurecode/BufferAllocator.java | 91 ++
.../hadoop/io/erasurecode/TestCoderBase.java | 500 +++++++++
.../hadoop/io/erasurecode/TestECSchema.java | 49 +
.../erasurecode/coder/TestErasureCoderBase.java | 297 +++++
.../erasurecode/coder/TestRSErasureCoder.java | 126 +++
.../io/erasurecode/coder/TestXORCoder.java | 64 ++
.../io/erasurecode/rawcoder/TestRSRawCoder.java | 118 ++
.../rawcoder/TestRSRawCoderBase.java | 58 +
.../erasurecode/rawcoder/TestRawCoderBase.java | 232 ++++
.../erasurecode/rawcoder/TestXORRawCoder.java | 66 ++
hadoop-hdfs-project/hadoop-hdfs-client/pom.xml | 1 +
.../org/apache/hadoop/hdfs/BlockReader.java | 10 +-
.../apache/hadoop/hdfs/BlockReaderFactory.java | 114 +-
.../apache/hadoop/hdfs/BlockReaderLocal.java | 82 +-
.../hadoop/hdfs/BlockReaderLocalLegacy.java | 25 +-
.../java/org/apache/hadoop/hdfs/DFSClient.java | 145 ++-
.../org/apache/hadoop/hdfs/DFSInputStream.java | 169 +--
.../org/apache/hadoop/hdfs/DFSOutputStream.java | 151 ++-
.../java/org/apache/hadoop/hdfs/DFSPacket.java | 34 +-
.../hadoop/hdfs/DFSStripedInputStream.java | 972 ++++++++++++++++
.../hadoop/hdfs/DFSStripedOutputStream.java | 953 ++++++++++++++++
.../org/apache/hadoop/hdfs/DFSUtilClient.java | 18 +-
.../org/apache/hadoop/hdfs/DataStreamer.java | 295 +++--
.../hadoop/hdfs/DistributedFileSystem.java | 76 ++
.../apache/hadoop/hdfs/ExternalBlockReader.java | 6 +
.../apache/hadoop/hdfs/RemoteBlockReader.java | 9 +-
.../apache/hadoop/hdfs/RemoteBlockReader2.java | 30 +-
.../apache/hadoop/hdfs/StripedDataStreamer.java | 187 ++++
.../hdfs/client/HdfsClientConfigKeys.java | 12 +
.../hadoop/hdfs/client/impl/DfsClientConf.java | 17 +
.../hadoop/hdfs/client/impl/LeaseRenewer.java | 18 +-
.../hadoop/hdfs/protocol/ClientProtocol.java | 27 +
.../apache/hadoop/hdfs/protocol/DatanodeID.java | 2 +
.../hdfs/protocol/ErasureCodingPolicy.java | 93 ++
.../hadoop/hdfs/protocol/HdfsFileStatus.java | 9 +-
.../hdfs/protocol/HdfsLocatedFileStatus.java | 5 +-
.../hadoop/hdfs/protocol/LocatedBlock.java | 8 +-
.../hadoop/hdfs/protocol/LocatedBlocks.java | 15 +-
.../hdfs/protocol/LocatedStripedBlock.java | 86 ++
.../protocol/SnapshottableDirectoryStatus.java | 2 +-
.../protocol/datatransfer/PacketReceiver.java | 8 +-
.../hdfs/protocol/datatransfer/Sender.java | 6 +-
.../datatransfer/sasl/DataTransferSaslUtil.java | 8 +-
.../ClientDatanodeProtocolTranslatorPB.java | 10 +-
.../ClientNamenodeProtocolTranslatorPB.java | 76 +-
.../hadoop/hdfs/protocolPB/PBHelperClient.java | 164 ++-
.../hdfs/shortcircuit/DfsClientShmManager.java | 45 +-
.../hdfs/shortcircuit/ShortCircuitCache.java | 101 +-
.../hdfs/shortcircuit/ShortCircuitReplica.java | 33 +-
.../hdfs/shortcircuit/ShortCircuitShm.java | 14 +-
.../hadoop/hdfs/util/ByteArrayManager.java | 63 +-
.../hadoop/hdfs/util/StripedBlockUtil.java | 952 ++++++++++++++++
.../apache/hadoop/hdfs/web/JsonUtilClient.java | 4 +-
.../org/apache/hadoop/hdfs/web/TokenAspect.java | 8 +-
.../hadoop/hdfs/web/URLConnectionFactory.java | 4 +-
.../hadoop/hdfs/web/WebHdfsFileSystem.java | 28 +-
.../src/main/proto/ClientNamenodeProtocol.proto | 7 +
.../src/main/proto/erasurecoding.proto | 60 +
.../src/main/proto/hdfs.proto | 41 +
.../hadoop-hdfs/CHANGES-HDFS-EC-7285.txt | 455 ++++++++
hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 12 +
.../hadoop-hdfs/src/main/bin/hdfs | 6 +
.../org/apache/hadoop/hdfs/DFSConfigKeys.java | 21 +-
.../java/org/apache/hadoop/hdfs/DFSUtil.java | 40 +-
.../apache/hadoop/hdfs/client/HdfsAdmin.java | 36 +
...tNamenodeProtocolServerSideTranslatorPB.java | 65 +-
.../DatanodeProtocolClientSideTranslatorPB.java | 2 +-
.../DatanodeProtocolServerSideTranslatorPB.java | 2 +-
.../apache/hadoop/hdfs/protocolPB/PBHelper.java | 185 +++-
.../hadoop/hdfs/server/balancer/Balancer.java | 6 +-
.../hadoop/hdfs/server/balancer/Dispatcher.java | 150 ++-
.../server/blockmanagement/BlockCollection.java | 20 +-
.../server/blockmanagement/BlockIdManager.java | 58 +-
.../hdfs/server/blockmanagement/BlockInfo.java | 99 +-
.../blockmanagement/BlockInfoContiguous.java | 21 +-
.../blockmanagement/BlockInfoStriped.java | 236 ++++
.../server/blockmanagement/BlockManager.java | 1039 ++++++++++++------
.../blockmanagement/BlockPlacementPolicies.java | 54 +
.../blockmanagement/BlockPlacementPolicy.java | 26 +-
.../blockmanagement/BlockRecoveryWork.java | 111 ++
.../blockmanagement/BlockToMarkCorrupt.java | 19 +-
.../BlockUnderConstructionFeature.java | 46 +-
.../hdfs/server/blockmanagement/BlocksMap.java | 27 +-
.../blockmanagement/DatanodeDescriptor.java | 48 +-
.../server/blockmanagement/DatanodeManager.java | 18 +-
.../blockmanagement/DatanodeStorageInfo.java | 25 +-
.../blockmanagement/DecommissionManager.java | 78 +-
.../blockmanagement/ErasureCodingWork.java | 60 +
.../server/blockmanagement/ReplicationWork.java | 64 +-
.../SequentialBlockGroupIdGenerator.java | 86 ++
.../SequentialBlockIdGenerator.java | 6 +-
.../blockmanagement/UnderReplicatedBlocks.java | 51 +-
.../hdfs/server/common/HdfsServerConstants.java | 5 +
.../hdfs/server/datanode/BPOfferService.java | 8 +
.../hadoop/hdfs/server/datanode/DNConf.java | 27 +
.../hadoop/hdfs/server/datanode/DataNode.java | 57 +-
.../hdfs/server/datanode/DirectoryScanner.java | 8 -
.../hdfs/server/datanode/StorageLocation.java | 2 +-
.../erasurecode/ErasureCodingWorker.java | 1016 +++++++++++++++++
.../server/datanode/web/DatanodeHttpServer.java | 15 +
.../apache/hadoop/hdfs/server/mover/Mover.java | 37 +-
.../namenode/ErasureCodingPolicyManager.java | 115 ++
.../hdfs/server/namenode/FSDirAppendOp.java | 7 +
.../hdfs/server/namenode/FSDirAttrOp.java | 9 +-
.../hdfs/server/namenode/FSDirConcatOp.java | 6 +
.../server/namenode/FSDirErasureCodingOp.java | 277 +++++
.../server/namenode/FSDirStatAndListingOp.java | 22 +-
.../hdfs/server/namenode/FSDirTruncateOp.java | 13 +-
.../hdfs/server/namenode/FSDirWriteFileOp.java | 175 +--
.../hdfs/server/namenode/FSDirectory.java | 2 +-
.../hdfs/server/namenode/FSEditLogLoader.java | 89 +-
.../hdfs/server/namenode/FSImageFormat.java | 31 +-
.../server/namenode/FSImageFormatPBINode.java | 42 +-
.../server/namenode/FSImageFormatProtobuf.java | 9 +-
.../server/namenode/FSImageSerialization.java | 22 +-
.../hdfs/server/namenode/FSNamesystem.java | 251 ++++-
.../hadoop/hdfs/server/namenode/INodeFile.java | 145 ++-
.../server/namenode/INodeFileAttributes.java | 22 +-
.../hdfs/server/namenode/LeaseManager.java | 2 +-
.../server/namenode/NameNodeLayoutVersion.java | 3 +-
.../hdfs/server/namenode/NameNodeRpcServer.java | 38 +-
.../hdfs/server/namenode/NamenodeFsck.java | 228 +++-
.../hadoop/hdfs/server/namenode/Namesystem.java | 16 +-
.../hadoop/hdfs/server/namenode/SafeMode.java | 5 +-
.../snapshot/FSImageFormatPBSnapshot.java | 9 +-
.../server/namenode/snapshot/FileDiffList.java | 9 +-
.../server/protocol/BlockECRecoveryCommand.java | 146 +++
.../server/protocol/BlocksWithLocations.java | 30 +
.../hdfs/server/protocol/DatanodeProtocol.java | 1 +
.../hadoop/hdfs/tools/erasurecode/ECCli.java | 48 +
.../hdfs/tools/erasurecode/ECCommand.java | 214 ++++
.../StorageContainerNameService.java | 13 +-
.../src/main/proto/DatanodeProtocol.proto | 10 +
.../hadoop-hdfs/src/main/proto/HdfsServer.proto | 11 +-
.../hadoop-hdfs/src/main/proto/fsimage.proto | 2 +
.../src/main/resources/hdfs-default.xml | 31 +-
.../src/site/markdown/HDFSCommands.md | 20 +
.../src/site/markdown/HDFSErasureCoding.md | 135 +++
.../hadoop/cli/CLITestCmdErasureCoding.java | 39 +
.../apache/hadoop/cli/TestErasureCodingCLI.java | 115 ++
.../cli/util/CLICommandErasureCodingCli.java | 21 +
.../cli/util/ErasureCodingCliCmdExecutor.java | 37 +
.../apache/hadoop/hdfs/BlockReaderTestUtil.java | 7 +-
.../org/apache/hadoop/hdfs/DFSTestUtil.java | 162 ++-
.../org/apache/hadoop/hdfs/MiniDFSCluster.java | 3 +-
.../apache/hadoop/hdfs/StripedFileTestUtil.java | 491 +++++++++
.../hadoop/hdfs/TestBlockReaderFactory.java | 16 +-
.../hadoop/hdfs/TestDFSClientRetries.java | 6 +-
.../hadoop/hdfs/TestDFSStripedInputStream.java | 335 ++++++
.../hadoop/hdfs/TestDFSStripedOutputStream.java | 156 +++
.../TestDFSStripedOutputStreamWithFailure.java | 473 ++++++++
...estDFSStripedOutputStreamWithFailure000.java | 22 +
...estDFSStripedOutputStreamWithFailure010.java | 22 +
.../org/apache/hadoop/hdfs/TestDFSUtil.java | 146 ++-
.../apache/hadoop/hdfs/TestDatanodeConfig.java | 4 +-
.../apache/hadoop/hdfs/TestDecommission.java | 3 +-
.../apache/hadoop/hdfs/TestEncryptionZones.java | 2 +-
.../hadoop/hdfs/TestErasureCodingPolicies.java | 249 +++++
.../hadoop/hdfs/TestFileStatusWithECPolicy.java | 65 ++
.../java/org/apache/hadoop/hdfs/TestLease.java | 4 +-
.../hdfs/TestReadStripedFileWithDecoding.java | 362 ++++++
.../TestReadStripedFileWithMissingBlocks.java | 151 +++
.../hadoop/hdfs/TestRecoverStripedFile.java | 418 +++++++
.../org/apache/hadoop/hdfs/TestSafeMode.java | 4 +-
.../hdfs/TestSafeModeWithStripedFile.java | 154 +++
.../hadoop/hdfs/TestWriteReadStripedFile.java | 251 +++++
.../hdfs/TestWriteStripedFileWithFailure.java | 171 +++
.../hadoop/hdfs/protocol/TestLayoutVersion.java | 3 +-
.../hadoop/hdfs/protocolPB/TestPBHelper.java | 170 ++-
.../hdfs/server/balancer/TestBalancer.java | 98 +-
.../blockmanagement/BlockManagerTestUtil.java | 10 +-
.../server/blockmanagement/TestBlockInfo.java | 14 +-
.../blockmanagement/TestBlockInfoStriped.java | 220 ++++
.../blockmanagement/TestBlockManager.java | 63 +-
.../blockmanagement/TestBlockTokenWithDFS.java | 422 +++----
.../TestBlockTokenWithDFSStriped.java | 115 ++
.../TestNameNodePrunesMissingStorages.java | 5 +-
.../server/blockmanagement/TestNodeCount.java | 2 +-
.../TestOverReplicatedBlocks.java | 4 +-
.../blockmanagement/TestReplicationPolicy.java | 20 +-
.../TestSequentialBlockGroupId.java | 222 ++++
.../TestUnderReplicatedBlockQueues.java | 59 +
.../server/datanode/SimulatedFSDataset.java | 2 +-
.../datanode/TestIncrementalBrVariations.java | 14 +-
.../hadoop/hdfs/server/mover/TestMover.java | 123 ++-
.../hdfs/server/namenode/NameNodeAdapter.java | 9 +-
.../TestAddOverReplicatedStripedBlocks.java | 265 +++++
.../server/namenode/TestAddStripedBlocks.java | 430 ++++++++
.../hdfs/server/namenode/TestDeadDatanode.java | 3 +-
.../server/namenode/TestFSEditLogLoader.java | 269 +++++
.../hdfs/server/namenode/TestFSImage.java | 346 +++++-
.../hdfs/server/namenode/TestFileTruncate.java | 4 +-
.../hadoop/hdfs/server/namenode/TestFsck.java | 83 +-
.../hdfs/server/namenode/TestINodeFile.java | 2 +-
.../namenode/TestQuotaWithStripedBlocks.java | 125 +++
.../namenode/TestRecoverStripedBlocks.java | 169 +++
.../server/namenode/TestStripedINodeFile.java | 285 +++++
.../namenode/ha/TestRetryCacheWithHA.java | 9 +-
.../namenode/snapshot/SnapshotTestHelper.java | 2 +-
...TestOfflineImageViewerWithStripedBlocks.java | 162 +++
.../hadoop/hdfs/util/TestStripedBlockUtil.java | 279 +++++
.../apache/hadoop/hdfs/web/TestJsonUtil.java | 2 +-
.../test/resources/testErasureCodingConf.xml | 377 +++++++
hadoop-project/src/site/site.xml | 1 +
hadoop-yarn-project/CHANGES.txt | 3 +
.../localizer/LocalResourcesTracker.java | 3 +-
.../localizer/LocalResourcesTrackerImpl.java | 24 +-
.../localizer/ResourceLocalizationService.java | 5 +-
.../TestLocalResourcesTrackerImpl.java | 65 +-
.../TestResourceLocalizationService.java | 16 +-
254 files changed, 23374 insertions(+), 2218 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b14a70e7/hadoop-hdfs-project/hadoop-hdfs-client/src/main/proto/hdfs.proto
----------------------------------------------------------------------
diff --cc hadoop-hdfs-project/hadoop-hdfs-client/src/main/proto/hdfs.proto
index 88b4594,d35fb57..5c22be6
--- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/proto/hdfs.proto
+++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/proto/hdfs.proto
@@@ -444,3 -478,11 +478,10 @@@ message RollingUpgradeStatusProto
required string blockPoolId = 1;
optional bool finalized = 2 [default = false];
}
+
-
+ /**
+ * A list of storage IDs.
+ */
+ message StorageUuidsProto {
+ repeated string storageUuids = 1;
+ }
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b14a70e7/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/protocolPB/PBHelper.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b14a70e7/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockInfoContiguous.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b14a70e7/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java
----------------------------------------------------------------------
diff --cc
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java
index e039b3b,18bfc41..41b572f
---
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java
+++
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlockManager.java
@@@ -282,15 -293,11 +294,18 @@@ public class BlockManager implements Bl
/** Check whether name system is running before terminating */
private boolean checkNSRunning = true;
+ /** Check whether there are any non-EC blocks using StripedID */
+ private boolean hasNonEcBlockUsingStripedID = false;
+
public BlockManager(final Namesystem namesystem, final Configuration conf)
- throws IOException {
+ throws IOException {
+ // Compute the map capacity by allocating 2% of total memory
+ this(namesystem, conf, new BlocksMap(
+ LightWeightGSet.computeCapacity(2.0, "BlocksMap")));
+ }
+
+ public BlockManager(final Namesystem namesystem, final Configuration conf,
+ BlocksMap blocksMap) throws IOException {
this.namesystem = namesystem;
datanodeManager = new DatanodeManager(this, namesystem, conf);
heartbeatManager = datanodeManager.getHeartbeatManager();
@@@ -301,8 -308,10 +316,8 @@@
invalidateBlocks = new InvalidateBlocks(
datanodeManager.blockInvalidateLimit, startupDelayBlockDeletionInMs);
- // Compute the map capacity by allocating 2% of total memory
- blocksMap = new BlocksMap(
- LightWeightGSet.computeCapacity(2.0, "BlocksMap"));
+ this.blocksMap = blocksMap;
- blockplacement = BlockPlacementPolicy.getInstance(
+ placementPolicies = new BlockPlacementPolicies(
conf, datanodeManager.getFSClusterStats(),
datanodeManager.getNetworkTopology(),
datanodeManager.getHost2DatanodeMap());
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b14a70e7/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/BlocksMap.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b14a70e7/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeDescriptor.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b14a70e7/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeStorageInfo.java
----------------------------------------------------------------------
diff --cc
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeStorageInfo.java
index 8bd8c51,bb9a706..85e167d
---
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeStorageInfo.java
+++
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/blockmanagement/DatanodeStorageInfo.java
@@@ -17,16 -17,18 +17,19 @@@
*/
package org.apache.hadoop.hdfs.server.blockmanagement;
+ import java.util.Arrays;
+ import java.util.Iterator;
+ import java.util.List;
+
+import com.google.common.annotations.VisibleForTesting;
++
import org.apache.hadoop.fs.StorageType;
+ import org.apache.hadoop.hdfs.protocol.Block;
import org.apache.hadoop.hdfs.protocol.DatanodeInfo;
import org.apache.hadoop.hdfs.server.protocol.DatanodeStorage;
import org.apache.hadoop.hdfs.server.protocol.DatanodeStorage.State;
import org.apache.hadoop.hdfs.server.protocol.StorageReport;
- import java.util.Arrays;
- import java.util.Iterator;
- import java.util.List;
-import com.google.common.annotations.VisibleForTesting;
/**
* A Datanode has one or more storages. A storage in the Datanode is
represented
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b14a70e7/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/common/HdfsServerConstants.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b14a70e7/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BPOfferService.java
----------------------------------------------------------------------
diff --cc
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BPOfferService.java
index a6c8fda,96e74e5..c7eb468
---
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BPOfferService.java
+++
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BPOfferService.java
@@@ -31,8 -31,8 +31,9 @@@ import org.apache.hadoop.hdfs.protocol.
import org.apache.hadoop.hdfs.protocol.ExtendedBlock;
import org.apache.hadoop.hdfs.protocol.RollingUpgradeStatus;
import
org.apache.hadoop.hdfs.protocolPB.DatanodeProtocolClientSideTranslatorPB;
+import org.apache.hadoop.hdfs.server.datanode.dataset.DatasetSpi;
import org.apache.hadoop.hdfs.server.protocol.*;
+ import
org.apache.hadoop.hdfs.server.protocol.BlockECRecoveryCommand.BlockECRecoveryInfo;
import
org.apache.hadoop.hdfs.server.protocol.ReceivedDeletedBlockInfo.BlockStatus;
import java.io.IOException;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b14a70e7/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java
----------------------------------------------------------------------
diff --cc
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java
index 6bd556f,10a8a9c..da09b0e
---
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java
+++
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java
@@@ -156,14 -155,11 +157,15 @@@ import org.apache.hadoop.hdfs.server.co
import org.apache.hadoop.hdfs.server.common.HdfsServerConstants.StartupOption;
import org.apache.hadoop.hdfs.server.common.MetricsLoggerTask;
import org.apache.hadoop.hdfs.server.common.Storage;
+import org.apache.hadoop.hdfs.server.common.Storage.StorageDirectory;
import org.apache.hadoop.hdfs.server.common.StorageInfo;
+import org.apache.hadoop.hdfs.server.datanode.DataStorage.VolumeBuilder;
import
org.apache.hadoop.hdfs.server.datanode.SecureDataNodeStarter.SecureResources;
+import org.apache.hadoop.hdfs.server.datanode.dataset.DatasetSpi;
+ import org.apache.hadoop.hdfs.server.datanode.erasurecode.ErasureCodingWorker;
import org.apache.hadoop.hdfs.server.datanode.fsdataset.FsDatasetSpi;
import org.apache.hadoop.hdfs.server.datanode.fsdataset.FsVolumeSpi;
+import org.apache.hadoop.hdfs.server.datanode.dataset.VolumeSpi;
import org.apache.hadoop.hdfs.server.datanode.metrics.DataNodeMetrics;
import org.apache.hadoop.hdfs.server.datanode.web.DatanodeHttpServer;
import
org.apache.hadoop.hdfs.server.protocol.BlockRecoveryCommand.RecoveringBlock;
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b14a70e7/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DirectoryScanner.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b14a70e7/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/storagecontainer/StorageContainerNameService.java
----------------------------------------------------------------------
diff --cc
hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/storagecontainer/StorageContainerNameService.java
index 60e9c20,0000000..13cff36
mode 100644,000000..100644
---
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/storagecontainer/StorageContainerNameService.java
+++
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/storagecontainer/StorageContainerNameService.java
@@@ -1,170 -1,0 +1,177 @@@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.storagecontainer;
+
+import org.apache.hadoop.hdfs.protocol.Block;
++import org.apache.hadoop.hdfs.protocol.ErasureCodingPolicy;
+import org.apache.hadoop.hdfs.server.blockmanagement.BlockCollection;
+import org.apache.hadoop.hdfs.server.blockmanagement.BlockInfo;
+import org.apache.hadoop.hdfs.server.namenode.CacheManager;
+import org.apache.hadoop.hdfs.server.namenode.NameNode;
+import org.apache.hadoop.hdfs.server.namenode.Namesystem;
+import org.apache.hadoop.hdfs.server.namenode.ha.HAContext;
+import org.apache.hadoop.ipc.StandbyException;
+import org.apache.hadoop.security.AccessControlException;
+
++import java.io.IOException;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+
+/**
+ * Namesystem implementation to be used by StorageContainerManager.
+ */
+public class StorageContainerNameService implements Namesystem {
+
+ private ReentrantReadWriteLock coarseLock = new ReentrantReadWriteLock();
+ private String blockPoolId;
+ private volatile boolean serviceRunning = true;
+
+ public void shutdown() {
+ serviceRunning = false;
+ }
+
+ @Override
+ public boolean isRunning() {
+ return serviceRunning;
+ }
+
+ @Override
+ public void checkSuperuserPrivilege() throws AccessControlException {
+ // TBD
+ }
+
+ @Override
+ public String getBlockPoolId() {
+ return blockPoolId;
+ }
+
+ public void setBlockPoolId(String id) {
+ this.blockPoolId = id;
+ }
+
+ @Override
+ public boolean isInStandbyState() {
+ // HA mode is not supported
+ return false;
+ }
+
+ @Override
+ public boolean isGenStampInFuture(Block block) {
+ // HA mode is not supported
+ return false;
+ }
+
+ @Override
+ public BlockCollection getBlockCollection(long id) {
+ return null;
+ }
+
+ @Override
+ public void adjustSafeModeBlockTotals(int deltaSafe, int deltaTotal) {
+ // TBD
+ }
+
+ @Override
+ public void checkOperation(NameNode.OperationCategory read)
+ throws StandbyException {
+ // HA mode is not supported
+ }
+
+ @Override
++ public ErasureCodingPolicy getErasureCodingPolicyForPath(String src)
++ throws IOException {
++ return null;
++ }
++
++ @Override
+ public boolean isInSnapshot(BlockInfo blockInfo) {
+ // Snapshots not supported
+ return false;
+ }
+
+ @Override
+ public CacheManager getCacheManager() {
+ // Cache Management is not supported
+ return null;
+ }
+
+ @Override
+ public HAContext getHAContext() {
+ return null;
+ }
+
+ @Override
+ public void readLock() {
+ coarseLock.readLock().lock();
+ }
+
+ @Override
+ public void readUnlock() {
+ coarseLock.readLock().unlock();
+ }
+
+ @Override
+ public boolean hasReadLock() {
+ return coarseLock.getReadHoldCount() > 0 || hasWriteLock();
+ }
+
+ @Override
+ public void writeLock() {
+ coarseLock.writeLock().lock();
+ }
+
+ @Override
+ public void writeLockInterruptibly() throws InterruptedException {
+ coarseLock.writeLock().lockInterruptibly();
+ }
+
+ @Override
+ public void writeUnlock() {
+ coarseLock.writeLock().unlock();
+ }
+
+ @Override
+ public boolean hasWriteLock() {
+ return coarseLock.isWriteLockedByCurrentThread();
+ }
+
+ @Override
+ public void checkSafeMode() {
+ // TBD
+ }
+
+ @Override
+ public boolean isInSafeMode() {
+ return false;
+ }
+
+ @Override
+ public boolean isInStartupSafeMode() {
+ return false;
+ }
+
-
+ @Override
- public void incrementSafeBlockCount(int replication) {
- // Do nothing
++ public void incrementSafeBlockCount(int replication, BlockInfo storedBlock)
{
++ // Do nothing
+ }
+
+ @Override
+ public void decrementSafeBlockCount(BlockInfo b) {
+ // Do nothing
+ }
+}
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b14a70e7/hadoop-hdfs-project/hadoop-hdfs/src/main/proto/HdfsServer.proto
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/b14a70e7/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/SimulatedFSDataset.java
----------------------------------------------------------------------