Class Disklabel

java.lang.Object
oshi.driver.common.unix.bsd.disk.Disklabel

@ThreadSafe public final class Disklabel extends Object
Utility class parsing partition information from the BSD disklabel command. Shared by OpenBSD and NetBSD, which produce the same disklabel output format.
  • Method Details

    • getDiskParams

      public static Quartet<String, String, Long, List<HWPartition>> getDiskParams(String diskName)
      Gets disk and partition information by running disklabel and parsing its output. Falls back to df if no partitions are returned (e.g., when not running as root).
      Parameters:
      diskName - The disk to fetch partition information from
      Returns:
      A quartet containing the disk's name/label, DUID, size, and a list of partitions
    • parseDiskParams

      public static Quartet<String, String, Long, List<HWPartition>> parseDiskParams(String diskName, List<String> disklabelLines, BiFunction<String, String, Pair<Integer,Integer>> majorMinorLookup)
      Parses disklabel -n output to extract disk metadata and partitions.
      Parameters:
      diskName - the disk being labeled
      disklabelLines - raw output from disklabel -n <diskName>
      majorMinorLookup - function that resolves a (disk, partition-letter) pair to a (major, minor) device number pair; tests may pass a stub that returns (0,0) without invoking stat.
      Returns:
      A quartet of label, DUID, size in bytes, and partitions. An empty partition list signals the caller should fall back to parseDfFallback(String, List, BiFunction).
    • parseDfFallback

      public static Quartet<String, String, Long, List<HWPartition>> parseDfFallback(String diskName, List<String> dfLines, BiFunction<String, String, Pair<Integer,Integer>> majorMinorLookup)
      Parses df output as a fallback when disklabel returns no partitions (typically because the caller lacks root privileges).
      Parameters:
      diskName - the disk whose partitions are being enumerated
      dfLines - raw output from df
      majorMinorLookup - function that resolves a (disk, partition-letter) pair to a (major, minor) device number pair
      Returns:
      A quartet of UNKNOWN label/DUID, 0 size, and partitions discovered from df. Callers that already have disklabel header metadata should combine it with the partition list from this result.