|
@@ -2431,11 +2431,6 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
|
|
iip = FSDirWriteFileOp.resolvePathForStartFile(
|
|
iip = FSDirWriteFileOp.resolvePathForStartFile(
|
|
dir, pc, src, flag, createParent);
|
|
dir, pc, src, flag, createParent);
|
|
|
|
|
|
- if (shouldReplicate ||
|
|
|
|
- (org.apache.commons.lang.StringUtils.isEmpty(ecPolicyName) &&
|
|
|
|
- !FSDirErasureCodingOp.hasErasureCodingPolicy(this, iip))) {
|
|
|
|
- blockManager.verifyReplication(src, replication, clientMachine);
|
|
|
|
- }
|
|
|
|
|
|
|
|
if (blockSize < minBlockSize) {
|
|
if (blockSize < minBlockSize) {
|
|
throw new IOException("Specified block size is less than configured" +
|
|
throw new IOException("Specified block size is less than configured" +
|
|
@@ -2443,6 +2438,22 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
|
|
+ "): " + blockSize + " < " + minBlockSize);
|
|
+ "): " + blockSize + " < " + minBlockSize);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if (shouldReplicate) {
|
|
|
|
+ blockManager.verifyReplication(src, replication, clientMachine);
|
|
|
|
+ } else {
|
|
|
|
+ final ErasureCodingPolicy ecPolicy = FSDirErasureCodingOp
|
|
|
|
+ .getErasureCodingPolicy(this, ecPolicyName, iip);
|
|
|
|
+ if (ecPolicy != null && (!ecPolicy.isReplicationPolicy())) {
|
|
|
|
+ if (blockSize < ecPolicy.getCellSize()) {
|
|
|
|
+ throw new IOException("Specified block size (" + blockSize
|
|
|
|
+ + ") is less than the cell size (" + ecPolicy.getCellSize()
|
|
|
|
+ +") of the erasure coding policy (" + ecPolicy + ").");
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ blockManager.verifyReplication(src, replication, clientMachine);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
FileEncryptionInfo feInfo = null;
|
|
FileEncryptionInfo feInfo = null;
|
|
if (!iip.isRaw() && provider != null) {
|
|
if (!iip.isRaw() && provider != null) {
|
|
EncryptionKeyInfo ezInfo = FSDirEncryptionZoneOp.getEncryptionKeyInfo(
|
|
EncryptionKeyInfo ezInfo = FSDirEncryptionZoneOp.getEncryptionKeyInfo(
|