Interface FsVolumeSpi

All Superinterfaces:
Checkable<FsVolumeSpi.VolumeCheckContext,VolumeCheckResult>
All Known Implementing Classes:
FsVolumeImpl

public interface FsVolumeSpi extends Checkable<FsVolumeSpi.VolumeCheckContext,VolumeCheckResult>
This is an interface for the underlying volume.
  • Method Details

    • obtainReference

      FsVolumeReference obtainReference() throws ClosedChannelException
      Obtain a reference object that had increased 1 reference count of the volume. It is caller's responsibility to close FsVolumeReference to decrease the reference count on the volume.
      Throws:
      ClosedChannelException
    • getStorageID

      String getStorageID()
      Returns:
      the StorageUuid of the volume
    • getBlockPoolList

      String[] getBlockPoolList()
      Returns:
      a list of block pools.
    • getAvailable

      long getAvailable() throws IOException
      Returns:
      the available storage space in bytes.
      Throws:
      IOException
    • getBaseURI

      URI getBaseURI()
      Returns:
      the base path to the volume
    • getUsageStats

      org.apache.hadoop.fs.DF getUsageStats(org.apache.hadoop.conf.Configuration conf)
    • getStorageLocation

      StorageLocation getStorageLocation()
      Returns:
      the StorageLocation to the volume
    • getStorageType

      org.apache.hadoop.fs.StorageType getStorageType()
      Returns:
      the StorageType of the volume
    • isTransientStorage

      boolean isTransientStorage()
      Returns true if the volume is NOT backed by persistent storage.
    • isRAMStorage

      boolean isRAMStorage()
      Returns true if the volume is backed by RAM storage.
    • reserveSpaceForReplica

      void reserveSpaceForReplica(long bytesToReserve)
      Reserve disk space for a block (RBW or Re-replicating) so a writer does not run out of space before the block is full.
    • releaseReservedSpace

      void releaseReservedSpace(long bytesToRelease)
      Release disk space previously reserved for block opened for write.
    • releaseLockedMemory

      void releaseLockedMemory(long bytesToRelease)
      Release reserved memory for an RBW block written to transient storage i.e. RAM. bytesToRelease will be rounded down to the OS page size since locked memory reservation must always be a multiple of the page size.
    • newBlockIterator

      FsVolumeSpi.BlockIterator newBlockIterator(String bpid, String name)
      Create a new block iterator. It will start at the beginning of the block set.
      Parameters:
      bpid - The block pool id to iterate over.
      name - The name of the block iterator to create.
      Returns:
      The new block iterator.
    • loadBlockIterator

      FsVolumeSpi.BlockIterator loadBlockIterator(String bpid, String name) throws IOException
      Load a saved block iterator.
      Parameters:
      bpid - The block pool id to iterate over.
      name - The name of the block iterator to load.
      Returns:
      The saved block iterator.
      Throws:
      IOException - If there was an IO error loading the saved block iterator.
    • getDataset

      FsDatasetSpi getDataset()
      Get the FSDatasetSpi which this volume is a part of.
    • loadLastPartialChunkChecksum

      byte[] loadLastPartialChunkChecksum(File blockFile, File metaFile) throws IOException
      Load last partial chunk checksum from checksum file. Need to be called with FsDataset lock acquired.
      Parameters:
      blockFile -
      metaFile -
      Returns:
      the last partial checksum
      Throws:
      IOException
    • compileReport

      void compileReport(String bpid, Collection<FsVolumeSpi.ScanInfo> report, DirectoryScanner.ReportCompiler reportCompiler) throws InterruptedException, IOException
      Compile a list of FsVolumeSpi.ScanInfo for the blocks in the block pool with id bpid.
      Parameters:
      bpid - block pool id to scan
      report - the list onto which blocks reports are placed
      reportCompiler -
      Throws:
      InterruptedException
      IOException
    • getFileIoProvider

      FileIoProvider getFileIoProvider()
    • getMetrics

      DataNodeVolumeMetrics getMetrics()