diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/fs/AbstractSpaceUsageSource.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/fs/AbstractSpaceUsageSource.java index 2de8da7d020d..5f606f31b2e8 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/fs/AbstractSpaceUsageSource.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/fs/AbstractSpaceUsageSource.java @@ -75,9 +75,14 @@ public String toString() { return path; } + /** + * Get available space, excluding system reserved space. + * See {@link File#getUsableSpace()} and {@link File#getFreeSpace()}. + * @return available space for data + */ @Override public long getAvailable() { - return file.getFreeSpace(); + return file.getUsableSpace(); } @Override diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/fs/DedicatedDiskSpaceUsage.java b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/fs/DedicatedDiskSpaceUsage.java index 1d651cce332e..a468b762eda0 100644 --- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/fs/DedicatedDiskSpaceUsage.java +++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/fs/DedicatedDiskSpaceUsage.java @@ -45,8 +45,14 @@ public long getUsedSpace() { return time(this::calculateUsedSpace, LOG); } + /** + * Calculate used space, all free space are counted out. + * Some space may not be used by us, but reserved for system usage. + * See {@link File#getUsableSpace()} and {@link File#getFreeSpace()}. + * @return used space + */ private long calculateUsedSpace() { - return getCapacity() - getAvailable(); + return getCapacity() - getFile().getFreeSpace(); } }