Hi,
I’m currently working on a project to sanitize data (Remove customer data) on MacBook storage devices (Refurbish). The NVMe SSD is embedded on the motherboard. I’ve created a simple proof-of-concept code (Running in terminal) with the following steps:
Check and Match the NVMe Device: Verify that the physical drive (disk0) exists on the system. Open the Connection: Establish a connection to the device (disk0). Send NVMe Admin Commands: For testing, I sent the IDENTIFY (0x06) command to confirm that the connection to the device works. Close the Service and Connection: Terminate the connection after the test. However, during runtime, I encountered an error when sending the command: Error: Failed to send NVMe Admin Command with error: -536870206 ((iokit/common) invalid argument)
I’m unsure why this results in an "Invalid argument" error. Is the method I’m using to send the Admin Command incorrect? If so, what is the proper function call to use in the IOKit framework? Alternatively, are there any other recommended methods to achieve this?
In the future, I also need to send commands like ‘Sanitize (84h)’ and ‘Format NVM (80h).’ Since I’m new to macOS development, I’d greatly appreciate any advice or guidance from experts in this area.
I have attached the source code and related ioreg file for 'IOMedia' and 'IONVMeController' for you guy reference.
+-o APPLE SSD AP1024R Media | { | "Content" = "GUID_partition_scheme" | "Removable" = No | "Whole" = Yes | "Leaf" = No | "BSD Name" = "disk0" | "Ejectable" = No | "Preferred Block Size" = 4096 | "IOMediaIcon" = {"IOBundleResourceFile"="Internal.icns","CFBundleIdentifier"="com.apple.iokit.IOStorageFamily"} | "BSD Minor" = 0 | "IOGeneralInterest" = "IOCommand is not serializable" | "Writable" = Yes | "BSD Major" = 1 | "Size" = 1000555581440 | "IOBusyInterest" = "IOCommand is not serializable" | "Open" = Yes | "Content Hint" = "" | "BSD Unit" = 0 | } | +-o IOMediaBSDClient +-o IOGUIDPartitionScheme +-o iBootSystemContainer@1 | | { | | "Open" = Yes | | "Preferred Block Size" = 4096 | | "Base" = 24576 | | "Writable" = Yes | | "IOBusyInterest" = "IOCommand is not serializable" | | "Size" = 524288000 | | "Content" = "69646961-6700-11AA-AA11-00306543ECAC" | | "BSD Minor" = 2 | | "Whole" = No | | "Removable" = No | | "UUID" = "83E93B73-39E4-4A20-8854-2030E6BBC236" | | "BSD Unit" = 0 | | "BSD Major" = 1 | | "Ejectable" = No | | "BSD Name" = "disk0s1" | | "Partition ID" = 1 | | "IOGeneralInterest" = "IOCommand is not serializable" | | "GPT Attributes" = 0 | | "Content Hint" = "69646961-6700-11AA-AA11-00306543ECAC" | | "Leaf" = No | | "TierType" = "Main" | | } | | | +-o IOMediaBSDClient | +-o AppleAPFSContainerScheme | +-o AppleAPFSMedia | | { | | "Logical Block Size" = 4096 | | "Open" = Yes | | "Preferred Block Size" = 4096 | | "Writable" = Yes | | "IOBusyInterest" = "IOCommand is not serializable" | | "Size" = 524288000 | | "Content" = "EF57347C-0000-11AA-AA11-00306543ECAC" | | "BSD Minor" = 4 | | "Whole" = Yes | | "IOStorageFeatures" = {"Unmap"=Yes,"Priority"=Yes,"Barrier"=Yes} | | "Removable" = No | | "EncryptionBlockSize" = 4096 | | "UUID" = "6D69BF99-B3F6-4B21-80FB-230D13EA3E7E" | | "BSD Unit" = 1 | | "BSD Major" = 1 | | "Ejectable" = No | | "BSD Name" = "disk1" | | "Physical Block Size" = 4096 | | "IOGeneralInterest" = "IOCommand is not serializable" | | "Content Hint" = "EF57347C-0000-11AA-AA11-00306543ECAC" | | "Leaf" = No | | "OSInternal" = Yes | | } | | | +-o AppleAPFSMediaBSDClient | +-o AppleAPFSContainer | +-o iSCPreboot@1 | | | { | | | "Logical Block Size" = 4096 | | | "Open" = Yes | | | "Preferred Block Size" = 4096 | | | "RoleValue" = 16 | | | "Writable" = Yes | | | "IncompatibleFeatures" = 1 | | | "Sealed" = "No" | | | "IOBusyInterest" = "IOCommand is not serializable" | | | "FullName" = "iSCPreboot" | | | "Size" = 524288000 | | | "Content" = "41504653-0000-11AA-AA11-00306543ECAC" | | | "BSD Minor" = 5 | | | "FormattedBy" = "newfs_apfs (1933.41.2)" | | | "Whole" = No | | | "IOStorageFeatures" = {"Unmap"=Yes,"Priority"=Yes,"Barrier"=Yes} | | | "Removable" = No | | | "UUID" = "55238314-8925-476F-954F-B7B7675623D7" | | | "CaseSensitive" = No | | | "Statistics" = {"Metadata: Number of fsroot bytes written"=0,"Bytes read from block device"=73728,"Calls to VNOP_ALLOCATE"=0,"Calls to VNOP_LOOKUP"=182,"Calls to VNOP_GETATTRLISTBULK"=23,"Calls to VNOP_CLOSE"=235,"Calls to VNOP_MNOMAP"=0,"Calls to VNOP_INACTIVE"=173,"Calls to VNOP_REMOVENAMEDSTREAM"=0,"Calls to VNOP_READ"=168,"File defrag: Number of failed defrag attempts"=0,"Calls to VNOP_BLOCKMAP"=11,"Calls to VNOP_CREATE"=0,"Metadata: Number of objects failed to write"=0,"Calls to VNOP_VERIFY"=22,"File defrag: Number of blocks reallocated"=0,"Calls to VNOP_LISTXATTR"=31,"Calls to VNOP_SEARCHFS"=0,"Metadata: Number of gbitmap bytes written"=0,"Calls to VNOP_FSYNC"=0,"Calls to VNOP_MMAP_CHECK"=0,"Calls to VNOP_MMAP"=0,"File defrag: Number of fragmented files found that we couldn't track"=0,"Calls to VNOP_GETNAMEDSTREAM"=0,"Read requests received from user"=168,"Calls to VNOP_RENAME"=0,"Calls to VNOP_SETATTR"=0,"Calls to VNOP_MKDIR"=0,"File defrag: Number of files that finished defragmentation"=0,"Metadata: Number of bytes read"=16384,"Calls to VNOP_READLINK"=1,"Calls to VNOP_LINK"=0,"Metadata: Number of bytes written"=0,"Calls to VNOP_READDIR"=0,"File defrag: Number of files scanned for fragmentation"=0,"File defrag: Number of fragmented files found during scans"=0,"File defrag: Number of file extents split"=0,"Bytes written by user"=0,"Calls to VNOP_OPEN"=235,"Calls to VNOP_MAKENAMEDSTREAM"=0,"Write requests sent to block device"=0,"File defrag: Number of file extents reallocated"=0,"Calls to VNOP_PATHCONF"=12,"Read requests sent to block device"=11,"Calls to VNOP_SYMLINK"=0,"Calls to VNOP_EXCHANGE"=0,"Metadata: Number of fsroot bytes read"=16384,"Metadata: Number of omap bytes read"=0,"Metadata: Number of snapmeta bytes read"=0,"Calls to VNOP_RMDIR"=0,"Calls to VNOP_STRATEGY"=11,"Metadata: Number of snapmeta bytes written"=0,"Calls to VNOP_GETXATTR"=178,"Decmpfs errors"=0,"Calls to VNOP_OFFTOBLK"=0,"Metadata: Number of blockref bytes read"=0,"Calls to VNOP_CLONEFILE"=0,"Metadata: Number of objects failed to read"=0,"Bytes read by user"=560269,"Calls to VNOP_MKNOD"=0,"Bytes written to block device"=0,"Metadata: Number of gbitmap bytes read"=0,"Calls to VNOP_REMOVEXATTR"=0,"Calls to VNOP_WRITE"=0,"Calls to VNOP_REMOVE"=0,"Calls to VNOP_PAGEIN"=0,"Calls to VNOP_BLKTOOFF"=0,"Calls to VNOP_RECLAIM"=0,"File defrag: Number of regions to defrag found during scans"=0,"Metadata: Number of blockref bytes written"=0,"Calls to VNOP_RENAMEX"=0,"Calls to VNOP_IOCTL"=24,"Calls to VNOP_GETATTR"=101370,"Calls to VNOP_SETXATTR"=0,"Write requests received from user"=0,"Metadata: Number of omap bytes written"=0,"Calls to VNOP_PAGEOUT"=0} | | | "BSD Unit" = 1 | | | "Ejectable" = No | | | "Role" = ("Preboot") | | | "VolGroupUUID" = "00000000-0000-0000-0000-000000000000" | | | "BSD Name" = "disk1s1" | | | "BSD Major" = 1 | | | "Physical Block Size" = 4096 | | | "IOGeneralInterest" = "IOCommand is not serializable" | | | "autodiskmount" = No | | | "Status" = "Online" | | | "Content Hint" = "41504653-0000-11AA-AA11-00306543ECAC" | | | "Leaf" = Yes | | | } | | | | | +-o AppleAPFSVolumeBSDClient | +-o xART@2 | | | { | | | "Logical Block Size" = 4096 | | | "Open" = Yes | | | "Preferred Block Size" = 4096 | | | "RoleValue" = 256 | | | "Writable" = Yes | | | "IncompatibleFeatures" = 1 | | | "Sealed" = "No" | | | "IOBusyInterest" = "IOCommand is not serializable" | | | "FullName" = "xART" | | | "Size" = 524288000 | | | "Content" = "41504653-0000-11AA-AA11-00306543ECAC" | | | "BSD Minor" = 8 | | | "FormattedBy" = "newfs_apfs (1933.41.2)" | | | "Whole" = No | | | "IOStorageFeatures" = {"Unmap"=Yes,"Priority"=Yes,"Barrier"=Yes} | | | "Removable" = No | | | "UUID" = "BDBFA8E1-6949-469E-9A66-A531CEC0DAF4" | | | "CaseSensitive" = No | | | "Statistics" = {"Metadata: Number of fsroot bytes written"=0,"Bytes read from block device"=0,"Calls to VNOP_ALLOCATE"=0,"Calls to VNOP_LOOKUP"=66,"Calls to VNOP_GETATTRLISTBULK"=2,"Calls to VNOP_CLOSE"=44,"Calls to VNOP_MNOMAP"=0,"Calls to VNOP_INACTIVE"=0,"Calls to VNOP_REMOVENAMEDSTREAM"=0,"Calls to VNOP_READ"=0,"File defrag: Number of failed defrag attempts"=0,"Calls to VNOP_BLOCKMAP"=0,"Calls to VNOP_CREATE"=0,"Metadata: Number of objects failed to write"=0,"Calls to VNOP_VERIFY"=0,"File defrag: Number of blocks reallocated"=0,"Calls to VNOP_LISTXATTR"=0,"Calls to VNOP_SEARCHFS"=0,"Metadata: Number of gbitmap bytes written"=0,"Calls to VNOP_FSYNC"=1,"Calls to VNOP_MMAP_CHECK"=0,"Calls to VNOP_MMAP"=0,"File defrag: Number of fragmented files found that we couldn't track"=0,"Calls to VNOP_GETNAMEDSTREAM"=0,"Read requests received from user"=0,"Calls to VNOP_RENAME"=0,"Calls to VNOP_SETATTR"=0,"Calls to VNOP_MKDIR"=0,"File defrag: Number of files that finished defragmentation"=0,"Metadata: Number of bytes read"=0,"Calls to VNOP_READLINK"=0,"Calls to VNOP_LINK"=0,"Metadata: Number of bytes written"=0,"Calls to VNOP_READDIR"=0,"File defrag: Number of files scanned for fragmentation"=0,"File defrag: Number of fragmented files found during scans"=0,"File defrag: Number of file extents split"=0,"Bytes written by user"=0,"Calls to VNOP_OPEN"=45,"Calls to VNOP_MAKENAMEDSTREAM"=0,"Write requests sent to block device"=0,"File defrag: Number of file extents reallocated"=0,"Calls to VNOP_PATHCONF"=2,"Read requests sent to block device"=0,"Calls to VNOP_SYMLINK"=0,"Calls to VNOP_EXCHANGE"=0,"Metadata: Number of fsroot bytes read"=0,"Metadata: Number of omap bytes read"=0,"Metadata: Number of snapmeta bytes read"=0,"Calls to VNOP_RMDIR"=0,"Calls to VNOP_STRATEGY"=0,"Metadata: Number of snapmeta bytes written"=0,"Calls to VNOP_GETXATTR"=87,"Decmpfs errors"=0,"Calls to VNOP_OFFTOBLK"=0,"Metadata: Number of blockref bytes read"=0,"Calls to VNOP_CLONEFILE"=0,"Metadata: Number of objects failed to read"=0,"Bytes read by user"=0,"Calls to VNOP_MKNOD"=0,"Bytes written to block device"=0,"Metadata: Number of gbitmap bytes read"=0,"Calls to VNOP_REMOVEXATTR"=0,"Calls to VNOP_WRITE"=0,"Calls to VNOP_REMOVE"=0,"Calls to VNOP_PAGEIN"=0,"Calls to VNOP_BLKTOOFF"=0,"Calls to VNOP_RECLAIM"=0,"File defrag: Number of regions to defrag found during scans"=0,"Metadata: Number of blockref bytes written"=0,"Calls to VNOP_RENAMEX"=0,"Calls to VNOP_IOCTL"=6,"Calls to VNOP_GETATTR"=43719,"Calls to VNOP_SETXATTR"=0,"Write requests received from user"=0,"Metadata: Number of omap bytes written"=0,"Calls to VNOP_PAGEOUT"=0} | | | "BSD Unit" = 1 | | | "Ejectable" = No | | | "Role" = ("xART") | | | "VolGroupUUID" = "00000000-0000-0000-0000-000000000000" | | | "BSD Name" = "disk1s2" | | | "BSD Major" = 1 | | | "Physical Block Size" = 4096 | | | "IOGeneralInterest" = "IOCommand is not serializable" | | | "autodiskmount" = No | | | "Status" = "Online" | | | "Content Hint" = "41504653-0000-11AA-AA11-00306543ECAC" | | | "Leaf" = Yes | | | } | | | | | +-o AppleAPFSVolumeBSDClient | +-o Hardware@3 | | | { | | | "Logical Block Size" = 4096 | | | "Open" = Yes | | | "Preferred Block Size" = 4096 | | | "RoleValue" = 320 | | | "Writable" = Yes | | | "IncompatibleFeatures" = 1 | | | "Sealed" = "No" | | | "IOBusyInterest" = "IOCommand is not serializable" | | | "FullName" = "Hardware" | | | "Size" = 524288000 | | | "Content" = "41504653-0000-11AA-AA11-00306543ECAC" | | | "BSD Minor" = 7 | | | "FormattedBy" = "newfs_apfs (1933.41.2)" | | | "Whole" = No | | | "IOStorageFeatures" = {"Unmap"=Yes,"Priority"=Yes,"Barrier"=Yes} | | | "Removable" = No | | | "UUID" = "D9E0F26F-4031-4971-944F-1C8EC3B81C01" | | | "CaseSensitive" = No | | | "Statistics" = {"Metadata: Number of fsroot bytes written"=352256,"Bytes read from block device"=2203648,"Calls to VNOP_ALLOCATE"=0,"Calls to VNOP_LOOKUP"=277,"Calls to VNOP_GETATTRLISTBULK"=4,"Calls to VNOP_CLOSE"=188,"Calls to VNOP_MNOMAP"=0,"Calls to VNOP_INACTIVE"=135,"Calls to VNOP_REMOVENAMEDSTREAM"=0,"Calls to VNOP_READ"=120,"File defrag: Number of failed defrag attempts"=0,"Calls to VNOP_BLOCKMAP"=96,"Calls to VNOP_CREATE"=0,"Metadata: Number of objects failed to write"=0,"Calls to VNOP_VERIFY"=71,"File defrag: Number of blocks reallocated"=0,"Calls to VNOP_LISTXATTR"=39,"Calls to VNOP_SEARCHFS"=0,"Metadata: Number of gbitmap bytes written"=0,"Calls to VNOP_FSYNC"=47,"Calls to VNOP_MMAP_CHECK"=0,"Calls to VNOP_MMAP"=0,"File defrag: Number of fragmented files found that we couldn't track"=0,"Calls to VNOP_GETNAMEDSTREAM"=0,"Read requests received from user"=120,"Calls to VNOP_RENAME"=0,"Calls to VNOP_SETATTR"=48,"Calls to VNOP_MKDIR"=0,"File defrag: Number of files that finished defragmentation"=0,"Metadata: Number of bytes read"=24576,"Calls to VNOP_READLINK"=0,"Calls to VNOP_LINK"=0,"Metadata: Number of bytes written"=880640,"Calls to VNOP_READDIR"=2,"File defrag: Number of files scanned for fragmentation"=0,"File defrag: Number of fragmented files found during scans"=0,"File defrag: Number of file extents split"=0,"Bytes written by user"=18033,"Calls to VNOP_OPEN"=188,"Calls to VNOP_MAKENAMEDSTREAM"=0,"Write requests sent to block device"=47,"File defrag: Number of file extents reallocated"=0,"Calls to VNOP_PATHCONF"=9,"Read requests sent to block device"=49,"Calls to VNOP_SYMLINK"=0,"Calls to VNOP_EXCHANGE"=0,"Metadata: Number of fsroot bytes read"=24576,"Metadata: Number of omap bytes read"=0,"Metadata: Number of snapmeta bytes read"=0,"Calls to VNOP_RMDIR"=0,"Calls to VNOP_STRATEGY"=96,"Metadata: Number of snapmeta bytes written"=0,"Calls to VNOP_GETXATTR"=238,"Decmpfs errors"=0,"Calls to VNOP_OFFTOBLK"=0,"Metadata: Number of blockref bytes read"=0,"Calls to VNOP_CLONEFILE"=0,"Metadata: Number of objects failed to read"=0,"Bytes read by user"=5801833,"Calls to VNOP_MKNOD"=0,"Bytes written to block device"=192512,"Metadata: Number of gbitmap bytes read"=0,"Calls to VNOP_REMOVEXATTR"=0,"Calls to VNOP_WRITE"=47,"Calls to VNOP_REMOVE"=0,"Calls to VNOP_PAGEIN"=0,"Calls to VNOP_BLKTOOFF"=0,"Calls to VNOP_RECLAIM"=0,"File defrag: Number of regions to defrag found during scans"=0,"Metadata: Number of blockref bytes written"=176128,"Calls to VNOP_RENAMEX"=0,"Calls to VNOP_IOCTL"=18,"Calls to VNOP_GETATTR"=103474,"Calls to VNOP_SETXATTR"=0,"Write requests received from user"=47,"Metadata: Number of omap bytes written"=176128,"Calls to VNOP_PAGEOUT"=0} | | | "BSD Unit" = 1 | | | "Ejectable" = No | | | "Role" = ("Hardware") | | | "VolGroupUUID" = "00000000-0000-0000-0000-000000000000" | | | "BSD Name" = "disk1s3" | | | "BSD Major" = 1 | | | "Physical Block Size" = 4096 | | | "IOGeneralInterest" = "IOCommand is not serializable" | | | "autodiskmount" = No | | | "Status" = "Online" | | | "Content Hint" = "41504653-0000-11AA-AA11-00306543ECAC" | | | "Leaf" = Yes | | | } | | | | | +-o AppleAPFSVolumeBSDClient | +-o Recovery@4 | | { | | "Logical Block Size" = 4096 | | "Open" = No | | "Preferred Block Size" = 4096 | | "RoleValue" = 4 | | "Writable" = Yes | | "IncompatibleFeatures" = 1 | | "Sealed" = "No" | | "IOBusyInterest" = "IOCommand is not serializable" | | "FullName" = "Recovery" | | "Size" = 524288000 | | "Content" = "41504653-0000-11AA-AA11-00306543ECAC" | | "BSD Minor" = 6 | | "FormattedBy" = "newfs_apfs (1933.41.2)" | | "Whole" = No | | "IOStorageFeatures" = {"Unmap"=Yes,"Priority"=Yes,"Barrier"=Yes} | | "Removable" = No | | "UUID" = "5F7B631D-0925-4DD6-ADCE-723EFE40F434" | | "CaseSensitive" = No | | "Statistics" = {"Metadata: Number of fsroot bytes written"=0,"Bytes read from block device"=0,"Calls to VNOP_ALLOCATE"=0,"Calls to VNOP_LOOKUP"=0,"Calls to VNOP_GETATTRLISTBULK"=0,"Calls to VNOP_CLOSE"=0,"Calls to VNOP_MNOMAP"=0,"Calls to VNOP_INACTIVE"=0,"Calls to VNOP_REMOVENAMEDSTREAM"=0,"Calls to VNOP_READ"=0,"File defrag: Number of failed defrag attempts"=0,"Calls to VNOP_BLOCKMAP"=0,"Calls to VNOP_CREATE"=0,"Metadata: Number of objects failed to write"=0,"Calls to VNOP_VERIFY"=0,"File defrag: Number of blocks reallocated"=0,"Calls to VNOP_LISTXATTR"=0,"Calls to VNOP_SEARCHFS"=0,"Metadata: Number of gbitmap bytes written"=0,"Calls to VNOP_FSYNC"=0,"Calls to VNOP_MMAP_CHECK"=0,"Calls to VNOP_MMAP"=0,"File defrag: Number of fragmented files found that we couldn't track"=0,"Calls to VNOP_GETNAMEDSTREAM"=0,"Read requests received from user"=0,"Calls to VNOP_RENAME"=0,"Calls to VNOP_SETATTR"=0,"Calls to VNOP_MKDIR"=0,"File defrag: Number of files that finished defragmentation"=0,"Metadata: Number of bytes read"=0,"Calls to VNOP_READLINK"=0,"Calls to VNOP_LINK"=0,"Metadata: Number of bytes written"=0,"Calls to VNOP_READDIR"=0,"File defrag: Number of files scanned for fragmentation"=0,"File defrag: Number of fragmented files found during scans"=0,"File defrag: Number of file extents split"=0,"Bytes written by user"=0,"Calls to VNOP_OPEN"=0,"Calls to VNOP_MAKENAMEDSTREAM"=0,"Write requests sent to block device"=0,"File defrag: Number of file extents reallocated"=0,"Calls to VNOP_PATHCONF"=0,"Read requests sent to block device"=0,"Calls to VNOP_SYMLINK"=0,"Calls to VNOP_EXCHANGE"=0,"Metadata: Number of fsroot bytes read"=0,"Metadata: Number of omap bytes read"=0,"Metadata: Number of snapmeta bytes read"=0,"Calls to VNOP_RMDIR"=0,"Calls to VNOP_STRATEGY"=0,"Metadata: Number of snapmeta bytes written"=0,"Calls to VNOP_GETXATTR"=0,"Decmpfs errors"=0,"Calls to VNOP_OFFTOBLK"=0,"Metadata: Number of blockref bytes read"=0,"Calls to VNOP_CLONEFILE"=0,"Metadata: Number of objects failed to read"=0,"Bytes read by user"=0,"Calls to VNOP_MKNOD"=0,"Bytes written to block device"=0,"Metadata: Number of gbitmap bytes read"=0,"Calls to VNOP_REMOVEXATTR"=0,"Calls to VNOP_WRITE"=0,"Calls to VNOP_REMOVE"=0,"Calls to VNOP_PAGEIN"=0,"Calls to VNOP_BLKTOOFF"=0,"Calls to VNOP_RECLAIM"=0,"File defrag: Number of regions to defrag found during scans"=0,"Metadata: Number of blockref bytes written"=0,"Calls to VNOP_RENAMEX"=0,"Calls to VNOP_IOCTL"=0,"Calls to VNOP_GETATTR"=0,"Calls to VNOP_SETXATTR"=0,"Write requests received from user"=0,"Metadata: Number of omap bytes written"=0,"Calls to VNOP_PAGEOUT"=0} | | "BSD Unit" = 1 | | "Ejectable" = No | | "Role" = ("Recovery") | | "VolGroupUUID" = "00000000-0000-0000-0000-000000000000" | | "BSD Name" = "disk1s4" | | "BSD Major" = 1 | | "Physical Block Size" = 4096 | | "IOGeneralInterest" = "IOCommand is not serializable" | | "autodiskmount" = No | | "Status" = "Online" | | "Content Hint" = "41504653-0000-11AA-AA11-00306543ECAC" | | "Leaf" = Yes | | } | | | +-o AppleAPFSVolumeBSDClient +-o Untitled 2@2 | | { | | "Open" = Yes | | "Preferred Block Size" = 4096 | | "Base" = 524312576 | | "Writable" = Yes | | "IOBusyInterest" = "IOCommand is not serializable" | | "Size" = 994662584320 | | "Content" = "7C3457EF-0000-11AA-AA11-00306543ECAC" | | "BSD Minor" = 3 | | "Whole" = No | | "Removable" = No | | "UUID" = "098FE86E-B260-4B8B-80D3-ED14D506A6E5" | | "BSD Unit" = 0 | | "BSD Major" = 1 | | "Ejectable" = No | | "BSD Name" = "disk0s2" | | "Partition ID" = 2 | | "IOGeneralInterest" = "IOCommand is not serializable" | | "GPT Attributes" = 0 | | "Content Hint" = "7C3457EF-0000-11AA-AA11-00306543ECAC" | | "Leaf" = No | | "TierType" = "Main" | | } | | | +-o IOMediaBSDClient | +-o AppleAPFSContainerScheme | +-o AppleAPFSMedia | | { | | "Logical Block Size" = 4096 | | "Open" = Yes | | "Preferred Block Size" = 4096 | | "Writable" = Yes | | "IOBusyInterest" = "IOCommand is not serializable" | | "Size" = 994662584320 | | "Content" = "EF57347C-0000-11AA-AA11-00306543ECAC" | | "BSD Minor" = 12 | | "Whole" = Yes | | "IOStorageFeatures" = {"Unmap"=Yes,"Priority"=Yes,"Barrier"=Yes} | | "Removable" = No | | "EncryptionBlockSize" = 4096 | | "UUID" = "DFA52161-6510-4A08-BF53-A574180A0201" | | "BSD Unit" = 3 | | "BSD Major" = 1 | | "Ejectable" = No | | "BSD Name" = "disk3" | | "Physical Block Size" = 4096 | | "IOGeneralInterest" = "IOCommand is not serializable" | | "Content Hint" = "EF57347C-0000-11AA-AA11-00306543ECAC" | | "Leaf" = No | | } | | | +-o AppleAPFSMediaBSDClient | +-o AppleAPFSContainer | +-o Macintosh HD - Data@1 | | | { | | | "FormattedBy" = "newfs_apfs (2236.120.10.0.1)" | | | "RoleValue" = 64 | | | "IncompatibleFeatures" = 65 | | | "Locked" = No | | | "Writable" = Yes | | | "BSD Unit" = 3 | | | "EncryptionType" = "ScalablePFK" | | | "BSD Name" = "disk3s1" | | | "Size" = 994662584320 | | | "Whole" = No | | | "Open" = Yes | | | "Content Hint" = "41504653-0000-11AA-AA11-00306543ECAC" | | | "IOBusyInterest" = "IOCommand is not serializable" | | | "Physical Block Size" = 4096 | | | "Status" = "Online" | | | "Statistics" = {"Metadata: Number of fsroot bytes written"=140640256,"Bytes read from block device"=3110699008,"Calls to VNOP_ALLOCATE"=256,"Calls to VNOP_LOOKUP"=1151264,"Calls to VNOP_GETATTRLISTBULK"=341409,"Calls to VNOP_CLOSE"=1331313,"Calls to VNOP_MNOMAP"=510687,"Calls to VNOP_INACTIVE"=469849,"Calls to VNOP_REMOVENAMEDSTREAM"=0,"Calls to VNOP_READ"=2861385,"File defrag: Number of failed defrag attempts"=0,"Calls to VNOP_BLOCKMAP"=164419,"Calls to VNOP_CREATE"=17785,"Metadata: Number of objects failed to write"=0,"Calls to VNOP_VERIFY"=109113,"File defrag: Number of blocks reallocated"=0,"Calls to VNOP_LISTXATTR"=41415,"Calls to VNOP_SEARCHFS"=0,"Metadata: Number of gbitmap bytes written"=0,"Calls to VNOP_FSYNC"=54107,"Calls to VNOP_MMAP_CHECK"=605259,"Calls to VNOP_MMAP"=624473,"File defrag: Number of fragmented files found that we couldn't track"=0,"Calls to VNOP_GETNAMEDSTREAM"=4,"Read requests received from user"=2614142,"Calls to VNOP_RENAME"=14295,"Calls to VNOP_SETATTR"=641272,"Calls to VNOP_MKDIR"=8122,"File defrag: Number of files that finished defragmentation"=0,"Metadata: Number of bytes read"=173236224,"Calls to VNOP_READLINK"=1108501,"Calls to VNOP_LINK"=112,"Metadata: Number of bytes written"=351547392,"Calls to VNOP_READDIR"=71147,"File defrag: Number of files scanned for fragmentation"=0,"File defrag: Number of fragmented files found during scans"=0,"File defrag: Number of file extents split"=0,"Bytes written by user"=12675019473,"Calls to VNOP_OPEN"=1333285,"Calls to VNOP_MAKENAMEDSTREAM"=4,"Write requests sent to block device"=88643,"File defrag: Number of file extents reallocated"=0,"Calls to VNOP_PATHCONF"=1987,"Read requests sent to block device"=72978,"Calls to VNOP_SYMLINK"=683,"Calls to VNOP_EXCHANGE"=0,"Metadata: Number of fsroot bytes read"=157495296,"Metadata: Number of omap bytes read"=4452352,"Metadata: Number of snapmeta bytes read"=0,"Calls to VNOP_RMDIR"=4480,"Calls to VNOP_STRATEGY"=161621,"Metadata: Number of snapmeta bytes written"=0,"Calls to VNOP_GETXATTR"=1186727,"Decmpfs errors"=0,"Calls to VNOP_OFFTOBLK"=0,"Metadata: Number of blockref bytes read"=11288576,"Calls to VNOP_CLONEFILE"=376,"Metadata: Number of objects failed to read"=0,"Bytes read by user"=29154812343,"Calls to VNOP_MKNOD"=0,"Bytes written to block device"=8309911552,"Metadata: Number of gbitmap bytes read"=0,"Calls to VNOP_REMOVEXATTR"=84,"Calls to VNOP_WRITE"=1071374,"Calls to VNOP_REMOVE"=3556,"Calls to VNOP_PAGEIN"=33770,"Calls to VNOP_BLKTOOFF"=0,"Calls to VNOP_RECLAIM"=16469,"File defrag: Number of regions to defrag found during scans"=0,"Metadata: Number of blockref bytes written"=107126784,"Calls to VNOP_RENAMEX"=14416,"Calls to VNOP_IOCTL"=50299,"Calls to VNOP_GETATTR"=11955761,"Calls to VNOP_SETXATTR"=4485,"Write requests received from user"=1071326,"Metadata: Number of omap bytes written"=93622272,"Calls to VNOP_PAGEOUT"=5489} | | | "UUID" = "06716F3E-6C7F-45E8-A717-5C0E6F92F0F1" | | | "Encrypted" = Yes | | | "Content" = "41504653-0000-11AA-AA11-00306543ECAC" | | | "CaseSensitive" = No | | | "Ejectable" = No | | | "IOStorageFeatures" = {"Unmap"=Yes,"Priority"=Yes,"Barrier"=Yes} | | | "VolGroupMntFromName" = "/dev/disk3s1" | | | "Sealed" = "No" | | | "BSD Major" = 1 | | | "Preferred Block Size" = 4096 | | | "Leaf" = Yes | | | "VolGroupUUID" = "06716F3E-6C7F-45E8-A717-5C0E6F92F0F1" | | | "FullName" = "Macintosh HD - Data" | | | "Logical Block Size" = 4096 | | | "IOGeneralInterest" = "IOCommand is not serializable" | | | "Removable" = No | | | "Role" = ("Data") | | | "BSD Minor" = 13 | | | } | | | | | +-o AppleAPFSVolumeBSDClient | +-o Update@2 | | | { | | | "Logical Block Size" = 4096 | | | "Open" = Yes | | | "Preferred Block Size" = 4096 | | | "RoleValue" = 192 | | | "Writable" = Yes | | | "IncompatibleFeatures" = 1 | | | "Sealed" = "No" | | | "IOBusyInterest" = "IOCommand is not serializable" | | | "FullName" = "Update" | | | "Size" = 994662584320 | | | "Content" = "41504653-0000-11AA-AA11-00306543ECAC" | | | "BSD Minor" = 14 | | | "FormattedBy" = "com.apple.MobileSof (1933.80.3)" | | | "Whole" = No | | | "IOStorageFeatures" = {"Unmap"=Yes,"Priority"=Yes,"Barrier"=Yes} | | | "Removable" = No | | | "UUID" = "330A3E56-7E6F-40CA-AFB3-B11BC4736689" | | | "CaseSensitive" = No | | | "Statistics" = {"Metadata: Number of fsroot bytes written"=126976,"Bytes read from block device"=32768,"Calls to VNOP_ALLOCATE"=0,"Calls to VNOP_LOOKUP"=469,"Calls to VNOP_GETATTRLISTBULK"=124,"Calls to VNOP_CLOSE"=235,"Calls to VNOP_MNOMAP"=0,"Calls to VNOP_INACTIVE"=99,"Calls to VNOP_REMOVENAMEDSTREAM"=0,"Calls to VNOP_READ"=5,"File defrag: Number of failed defrag attempts"=0,"Calls to VNOP_BLOCKMAP"=10,"Calls to VNOP_CREATE"=2,"Metadata: Number of objects failed to write"=0,"Calls to VNOP_VERIFY"=5,"File defrag: Number of blocks reallocated"=0,"Calls to VNOP_LISTXATTR"=2,"Calls to VNOP_SEARCHFS"=0,"Metadata: Number of gbitmap bytes written"=0,"Calls to VNOP_FSYNC"=13,"Calls to VNOP_MMAP_CHECK"=0,"Calls to VNOP_MMAP"=0,"File defrag: Number of fragmented files found that we couldn't track"=0,"Calls to VNOP_GETNAMEDSTREAM"=0,"Read requests received from user"=5,"Calls to VNOP_RENAME"=2,"Calls to VNOP_SETATTR"=53,"Calls to VNOP_MKDIR"=0,"File defrag: Number of files that finished defragmentation"=0,"Metadata: Number of bytes read"=57344,"Calls to VNOP_READLINK"=0,"Calls to VNOP_LINK"=0,"Metadata: Number of bytes written"=339968,"Calls to VNOP_READDIR"=2,"File defrag: Number of files scanned for fragmentation"=0,"File defrag: Number of fragmented files found during scans"=0,"File defrag: Number of file extents split"=0,"Bytes written by user"=28531,"Calls to VNOP_OPEN"=236,"Calls to VNOP_MAKENAMEDSTREAM"=0,"Write requests sent to block device"=7,"File defrag: Number of file extents reallocated"=0,"Calls to VNOP_PATHCONF"=2,"Read requests sent to block device"=3,"Calls to VNOP_SYMLINK"=0,"Calls to VNOP_EXCHANGE"=0,"Metadata: Number of fsroot bytes read"=57344,"Metadata: Number of omap bytes read"=0,"Metadata: Number of snapmeta bytes read"=0,"Calls to VNOP_RMDIR"=0,"Calls to VNOP_STRATEGY"=10,"Metadata: Number of snapmeta bytes written"=0,"Calls to VNOP_GETXATTR"=250,"Decmpfs errors"=0,"Calls to VNOP_OFFTOBLK"=0,"Metadata: Number of blockref bytes read"=0,"Calls to VNOP_CLONEFILE"=0,"Metadata: Number of objects failed to read"=0,"Bytes read by user"=36698,"Calls to VNOP_MKNOD"=0,"Bytes written to block device"=90112,"Metadata: Number of gbitmap bytes read"=0,"Calls to VNOP_REMOVEXATTR"=0,"Calls to VNOP_WRITE"=272,"Calls to VNOP_REMOVE"=0,"Calls to VNOP_PAGEIN"=0,"Calls to VNOP_BLKTOOFF"=0,"Calls to VNOP_RECLAIM"=2,"File defrag: Number of regions to defrag found during scans"=0,"Metadata: Number of blockref bytes written"=8192,"Calls to VNOP_RENAMEX"=2,"Calls to VNOP_IOCTL"=7,"Calls to VNOP_GETATTR"=107760,"Calls to VNOP_SETXATTR"=0,"Write requests received from user"=272,"Metadata: Number of omap bytes written"=102400,"Calls to VNOP_PAGEOUT"=0} | | | "BSD Unit" = 3 | | | "Ejectable" = No | | | "Role" = ("Update") | | | "VolGroupUUID" = "00000000-0000-0000-0000-000000000000" | | | "BSD Name" = "disk3s2" | | | "BSD Major" = 1 | | | "Physical Block Size" = 4096 | | | "IOGeneralInterest" = "IOCommand is not serializable" | | | "autodiskmount" = No | | | "Status" = "Online" | | | "Content Hint" = "41504653-0000-11AA-AA11-00306543ECAC" | | | "Leaf" = Yes | | | "OSInternal" = Yes | | | } | | | | | +-o AppleAPFSVolumeBSDClient | +-o Macintosh HD@3 | | | { | | | "FormattedBy" = "com.apple.MobileSof (1933.80.3)" | | | "RoleValue" = 1 | | | "IncompatibleFeatures" = 33 | | | "Writable" = Yes | | | "BSD Unit" = 3 | | | "VolBootable" = Yes | | | "BSD Name" = "disk3s3" | | | "Size" = 994662584320 | | | "Whole" = No | | | "Open" = Yes | | | "Content Hint" = "41504653-0000-11AA-AA11-00306543ECAC" | | | "IOBusyInterest" = "IOCommand is not serializable" | | | "Physical Block Size" = 4096 | | | "Status" = "Online" | | | "Statistics" = {"Metadata: Number of fsroot bytes written"=0,"Bytes read from block device"=880652288,"Calls to VNOP_ALLOCATE"=0,"Calls to VNOP_LOOKUP"=1660958,"Calls to VNOP_GETATTRLISTBULK"=43611,"Calls to VNOP_CLOSE"=469352,"Calls to VNOP_MNOMAP"=13521,"Calls to VNOP_INACTIVE"=62861,"Calls to VNOP_REMOVENAMEDSTREAM"=0,"Calls to VNOP_READ"=228301,"File defrag: Number of failed defrag attempts"=0,"Calls to VNOP_BLOCKMAP"=33513,"Calls to VNOP_CREATE"=0,"Metadata: Number of objects failed to write"=0,"Calls to VNOP_VERIFY"=82101,"File defrag: Number of blocks reallocated"=0,"AuthAPFS: Number of times digest did not match"=0,"Calls to VNOP_LISTXATTR"=3834,"Calls to VNOP_SEARCHFS"=0,"AuthAPFS: Number of bytes read synchronously"=0,"Metadata: Number of gbitmap bytes written"=0,"Calls to VNOP_FSYNC"=25,"Calls to VNOP_MMAP_CHECK"=29247,"Calls to VNOP_MMAP"=96507,"File defrag: Number of fragmented files found that we couldn't track"=0,"Calls to VNOP_GETNAMEDSTREAM"=6,"Read requests received from user"=16869,"Calls to VNOP_RENAME"=0,"Calls to VNOP_SETATTR"=0,"Calls to VNOP_MKDIR"=0,"File defrag: Number of files that finished defragmentation"=0,"Metadata: Number of bytes read"=119173120,"Calls to VNOP_READLINK"=503206,"Calls to VNOP_LINK"=0,"Metadata: Number of bytes written"=16560128,"Calls to VNOP_READDIR"=184245,"File defrag: Number of files scanned for fragmentation"=0,"File defrag: Number of fragmented files found during scans"=0,"File defrag: Number of file extents split"=0,"Bytes written by user"=0,"AuthAPFS: Number of times file data was validated"=37939,"Calls to VNOP_OPEN"=476146,"Calls to VNOP_MAKENAMEDSTREAM"=0,"Write requests sent to block device"=0,"File defrag: Number of file extents reallocated"=0,"AuthAPFS: Number of bytes returned synchronously"=0,"Calls to VNOP_PATHCONF"=9,"AuthAPFS: Number of bytes validated"=1371566080,"Read requests sent to block device"=33418,"Calls to VNOP_SYMLINK"=0,"Calls to VNOP_EXCHANGE"=0,"Metadata: Number of fsroot bytes read"=95850496,"Metadata: Number of omap bytes read"=7147520,"Metadata: Number of snapmeta bytes read"=36864,"Calls to VNOP_RMDIR"=0,"Calls to VNOP_STRATEGY"=33418,"Metadata: Number of snapmeta bytes written"=8192,"Calls to VNOP_GETXATTR"=1585177,"Decmpfs errors"=0,"Calls to VNOP_OFFTOBLK"=0,"Metadata: Number of blockref bytes read"=12288,"AuthAPFS: Number of times read was done synchronously"=0,"Calls to VNOP_CLONEFILE"=0,"Metadata: Number of objects failed to read"=0,"Bytes read by user"=116891255,"Calls to VNOP_MKNOD"=0,"Bytes written to block device"=0,"Metadata: Number of gbitmap bytes read"=0,"Calls to VNOP_REMOVEXATTR"=0,"Calls to VNOP_WRITE"=0,"Calls to VNOP_REMOVE"=0,"Calls to VNOP_PAGEIN"=22358,"Calls to VNOP_BLKTOOFF"=0,"Calls to VNOP_RECLAIM"=18,"File defrag: Number of regions to defrag found during scans"=0,"Metadata: Number of blockref bytes written"=8192,"Calls to VNOP_RENAMEX"=0,"Calls to VNOP_IOCTL"=364,"Calls to VNOP_GETATTR"=4514839,"Calls to VNOP_SETXATTR"=0,"Write requests received from user"=0,"Metadata: Number of omap bytes written"=110592,"Calls to VNOP_PAGEOUT"=0} | | | "UUID" = "872E1CD4-3197-432A-BA97-14C8B36E84DB" | | | "Content" = "41504653-0000-11AA-AA11-00306543ECAC" | | | "CaseSensitive" = No | | | "Ejectable" = No | | | "IOStorageFeatures" = {"Unmap"=Yes,"Priority"=Yes,"Barrier"=Yes} | | | "VolGroupMntFromName" = "/dev/disk3s3s1" | | | "Sealed" = "Yes" | | | "BSD Major" = 1 | | | "Preferred Block Size" = 4096 | | | "Leaf" = Yes | | | "VolGroupUUID" = "06716F3E-6C7F-45E8-A717-5C0E6F92F0F1" | | | "FullName" = "Macintosh HD" | | | "Logical Block Size" = 4096 | | | "IOGeneralInterest" = "IOCommand is not serializable" | | | "Removable" = No | | | "Role" = ("System") | | | "BSD Minor" = 16 | | | "autodiskmount" = No | | | } | | | | | +-o AppleAPFSVolumeBSDClient | | +-o com.apple.os.update-80465671D7D1CD9F89F66E0C36576E4BB8426AC40A79244BB878F21D6381A4B7@1 | | | { | | | "Logical Block Size" = 4096 | | | "Open" = Yes | | | "Preferred Block Size" = 4096 | | | "Writable" = No | | | "Sealed" = "Yes" | | | "IOBusyInterest" = "IOCommand is not serializable" | | | "FullName" = "com.apple.os.update-80465671D7D1CD9F89F66E0C36576E4BB8426AC40A79244BB878F21D6381A4B7" | | | "Size" = 994662584320 | | | "Content" = "41504653-0000-11AA-AA11-00306543ECAC" | | | "BSD Minor" = 19 | | | "FormattedBy" = "com.apple.MobileSof (1933.80.3)" | | | "Whole" = No | | | "IOStorageFeatures" = {"Unmap"=Yes,"Priority"=Yes,"Barrier"=Yes} | | | "Removable" = No | | | "UUID" = "3E9A4229-9730-4183-B3F1-67944E0F4259" | | | "BSD Unit" = 3 | | | "BSD Major" = 1 | | | "Ejectable" = No | | | "VolGroupUUID" = "06716F3E-6C7F-45E8-A717-5C0E6F92F0F1" | | | "BSD Name" = "disk3s3s1" | | | "Physical Block Size" = 4096 | | | "IOGeneralInterest" = "IOCommand is not serializable" | | | "Status" = "Online" | | | "Content Hint" = "41504653-0000-11AA-AA11-00306543ECAC" | | | "Leaf" = Yes | | | } | | | | | +-o IOMediaBSDClient | +-o Preboot@4 | | | { | | | "Logical Block Size" = 4096 | | | "Open" = Yes | | | "Preferred Block Size" = 4096 | | | "RoleValue" = 16 | | | "Writable" = Yes | | | "IncompatibleFeatures" = 1 | | | "Sealed" = "No" | | | "IOBusyInterest" = "IOCommand is not serializable" | | | "FullName" = "Preboot" | | | "Size" = 994662584320 | | | "Content" = "41504653-0000-11AA-AA11-00306543ECAC" | | | "BSD Minor" = 15 | | | "FormattedBy" = "com.apple.MobileSof (1933.80.3)" | | | "Whole" = No | | | "IOStorageFeatures" = {"Unmap"=Yes,"Priority"=Yes,"Barrier"=Yes} | | | "Removable" = No | | | "UUID" = "DEC84AFF-AF04-420D-AF25-605BA08F3540" | | | "CaseSensitive" = No | | | "Statistics" = {"Metadata: Number of fsroot bytes written"=122880,"Bytes read from block device"=32747520,"Calls to VNOP_ALLOCATE"=19,"Calls to VNOP_LOOKUP"=109171,"Calls to VNOP_GETATTRLISTBULK"=9868,"Calls to VNOP_CLOSE"=68048,"Calls to VNOP_MNOMAP"=7718,"Calls to VNOP_INACTIVE"=5863,"Calls to VNOP_REMOVENAMEDSTREAM"=0,"Calls to VNOP_READ"=6459,"File defrag: Number of failed defrag attempts"=0,"Calls to VNOP_BLOCKMAP"=32345,"Calls to VNOP_CREATE"=11,"Metadata: Number of objects failed to write"=0,"Calls to VNOP_VERIFY"=67703,"File defrag: Number of blocks reallocated"=0,"Calls to VNOP_LISTXATTR"=39,"Calls to VNOP_SEARCHFS"=0,"Metadata: Number of gbitmap bytes written"=0,"Calls to VNOP_FSYNC"=198,"Calls to VNOP_MMAP_CHECK"=36971,"Calls to VNOP_MMAP"=62044,"File defrag: Number of fragmented files found that we couldn't track"=0,"Calls to VNOP_GETNAMEDSTREAM"=3,"Read requests received from user"=1895,"Calls to VNOP_RENAME"=9,"Calls to VNOP_SETATTR"=37130,"Calls to VNOP_MKDIR"=2,"File defrag: Number of files that finished defragmentation"=0,"Metadata: Number of bytes read"=389120,"Calls to VNOP_READLINK"=2537,"Calls to VNOP_LINK"=0,"Metadata: Number of bytes written"=319488,"Calls to VNOP_READDIR"=2586,"File defrag: Number of files scanned for fragmentation"=0,"File defrag: Number of fragmented files found during scans"=0,"File defrag: Number of file extents split"=0,"Bytes written by user"=50341183,"Calls to VNOP_OPEN"=68056,"Calls to VNOP_MAKENAMEDSTREAM"=0,"Write requests sent to block device"=698,"File defrag: Number of file extents reallocated"=0,"Calls to VNOP_PATHCONF"=58,"Read requests sent to block device"=272,"Calls to VNOP_SYMLINK"=0,"Calls to VNOP_EXCHANGE"=0,"Metadata: Number of fsroot bytes read"=323584,"Metadata: Number of omap bytes read"=49152,"Metadata: Number of snapmeta bytes read"=0,"Calls to VNOP_RMDIR"=2,"Calls to VNOP_STRATEGY"=970,"Metadata: Number of snapmeta bytes written"=0,"Calls to VNOP_GETXATTR"=182873,"Decmpfs errors"=0,"Calls to VNOP_OFFTOBLK"=2,"Metadata: Number of blockref bytes read"=16384,"Calls to VNOP_CLONEFILE"=0,"Metadata: Number of objects failed to read"=0,"Bytes read by user"=7654645,"Calls to VNOP_MKNOD"=0,"Bytes written to block device"=52981760,"Metadata: Number of gbitmap bytes read"=0,"Calls to VNOP_REMOVEXATTR"=0,"Calls to VNOP_WRITE"=220,"Calls to VNOP_REMOVE"=2,"Calls to VNOP_PAGEIN"=33770,"Calls to VNOP_BLKTOOFF"=2,"Calls to VNOP_RECLAIM"=13,"File defrag: Number of regions to defrag found during scans"=0,"Metadata: Number of blockref bytes written"=65536,"Calls to VNOP_RENAMEX"=9,"Calls to VNOP_IOCTL"=41,"Calls to VNOP_GETATTR"=348887,"Calls to VNOP_SETXATTR"=1,"Write requests received from user"=220,"Metadata: Number of omap bytes written"=94208,"Calls to VNOP_PAGEOUT"=0} | | | "BSD Unit" = 3 | | | "Ejectable" = No | | | "Role" = ("Preboot") | | | "VolGroupUUID" = "00000000-0000-0000-0000-000000000000" | | | "BSD Name" = "disk3s4" | | | "BSD Major" = 1 | | | "Physical Block Size" = 4096 | | | "IOGeneralInterest" = "IOCommand is not serializable" | | | "autodiskmount" = No | | | "Status" = "Online" | | | "Content Hint" = "41504653-0000-11AA-AA11-00306543ECAC" | | | "Leaf" = Yes | | | } | | | | | +-o AppleAPFSVolumeBSDClient | +-o Recovery@5 | | | { | | | "Logical Block Size" = 4096 | | | "Open" = No | | | "Preferred Block Size" = 4096 | | | "RoleValue" = 4 | | | "Writable" = Yes | | | "IncompatibleFeatures" = 1 | | | "Sealed" = "No" | | | "IOBusyInterest" = "IOCommand is not serializable" | | | "FullName" = "Recovery" | | | "Size" = 994662584320 | | | "Content" = "41504653-0000-11AA-AA11-00306543ECAC" | | | "BSD Minor" = 18 | | | "FormattedBy" = "com.apple.MobileSof (1933.80.3)" | | | "Whole" = No | | | "IOStorageFeatures" = {"Unmap"=Yes,"Priority"=Yes,"Barrier"=Yes} | | | "Removable" = No | | | "UUID" = "8704F7B5-364E-402D-A4A7-9D56BAB4BEA4" | | | "CaseSensitive" = No | | | "Statistics" = {"Metadata: Number of fsroot bytes written"=0,"Bytes read from block device"=72470528,"Calls to VNOP_ALLOCATE"=0,"Calls to VNOP_LOOKUP"=23,"Calls to VNOP_GETATTRLISTBULK"=2,"Calls to VNOP_CLOSE"=8,"Calls to VNOP_MNOMAP"=0,"Calls to VNOP_INACTIVE"=21,"Calls to VNOP_REMOVENAMEDSTREAM"=0,"Calls to VNOP_READ"=1477,"File defrag: Number of failed defrag attempts"=0,"Calls to VNOP_BLOCKMAP"=1531,"Calls to VNOP_CREATE"=0,"Metadata: Number of objects failed to write"=0,"Calls to VNOP_VERIFY"=707,"File defrag: Number of blocks reallocated"=0,"Calls to VNOP_LISTXATTR"=0,"Calls to VNOP_SEARCHFS"=0,"Metadata: Number of gbitmap bytes written"=0,"Calls to VNOP_FSYNC"=23,"Calls to VNOP_MMAP_CHECK"=0,"Calls to VNOP_MMAP"=0,"File defrag: Number of fragmented files found that we couldn't track"=0,"Calls to VNOP_GETNAMEDSTREAM"=0,"Read requests received from user"=0,"Calls to VNOP_RENAME"=0,"Calls to VNOP_SETATTR"=0,"Calls to VNOP_MKDIR"=0,"File defrag: Number of files that finished defragmentation"=0,"Metadata: Number of bytes read"=4096,"Calls to VNOP_READLINK"=4,"Calls to VNOP_LINK"=0,"Metadata: Number of bytes written"=0,"Calls to VNOP_READDIR"=0,"File defrag: Number of files scanned for fragmentation"=0,"File defrag: Number of fragmented files found during scans"=0,"File defrag: Number of file extents split"=0,"Bytes written by user"=0,"Calls to VNOP_OPEN"=6,"Calls to VNOP_MAKENAMEDSTREAM"=0,"Write requests sent to block device"=0,"File defrag: Number of file extents reallocated"=0,"Calls to VNOP_PATHCONF"=2,"Read requests sent to block device"=1531,"Calls to VNOP_SYMLINK"=0,"Calls to VNOP_EXCHANGE"=0,"Metadata: Number of fsroot bytes read"=4096,"Metadata: Number of omap bytes read"=0,"Metadata: Number of snapmeta bytes read"=0,"Calls to VNOP_RMDIR"=0,"Calls to VNOP_STRATEGY"=1531,"Metadata: Number of snapmeta bytes written"=0,"Calls to VNOP_GETXATTR"=4189,"Decmpfs errors"=0,"Calls to VNOP_OFFTOBLK"=0,"Metadata: Number of blockref bytes read"=0,"Calls to VNOP_CLONEFILE"=0,"Metadata: Number of objects failed to read"=0,"Bytes read by user"=0,"Calls to VNOP_MKNOD"=0,"Bytes written to block device"=0,"Metadata: Number of gbitmap bytes read"=0,"Calls to VNOP_REMOVEXATTR"=0,"Calls to VNOP_WRITE"=0,"Calls to VNOP_REMOVE"=0,"Calls to VNOP_PAGEIN"=0,"Calls to VNOP_BLKTOOFF"=0,"Calls to VNOP_RECLAIM"=23,"File defrag: Number of regions to defrag found during scans"=0,"Metadata: Number of blockref bytes written"=0,"Calls to VNOP_RENAMEX"=0,"Calls to VNOP_IOCTL"=3,"Calls to VNOP_GETATTR"=164,"Calls to VNOP_SETXATTR"=0,"Write requests received from user"=0,"Metadata: Number of omap bytes written"=0,"Calls to VNOP_PAGEOUT"=0} | | | "BSD Unit" = 3 | | | "Ejectable" = No | | | "Role" = ("Recovery") | | | "VolGroupUUID" = "00000000-0000-0000-0000-000000000000" | | | "BSD Name" = "disk3s5" | | | "BSD Major" = 1 | | | "Physical Block Size" = 4096 | | | "IOGeneralInterest" = "IOCommand is not serializable" | | | "autodiskmount" = No | | | "Status" = "Online" | | | "Content Hint" = "41504653-0000-11AA-AA11-00306543ECAC" | | | "Leaf" = Yes | | | } | | | | | +-o AppleAPFSVolumeBSDClient | +-o VM@6 | | { | | "Logical Block Size" = 4096 | | "Open" = Yes | | "Preferred Block Size" = 4096 | | "RoleValue" = 8 | | "Writable" = Yes | | "IncompatibleFeatures" = 1 | | "Sealed" = "No" | | "IOBusyInterest" = "IOCommand is not serializable" | | "FullName" = "VM" | | "Size" = 994662584320 | | "Content" = "41504653-0000-11AA-AA11-00306543ECAC" | | "BSD Minor" = 17 | | "FormattedBy" = "com.apple.MobileSof (1933.80.3)" | | "Whole" = No | | "IOStorageFeatures" = {"Unmap"=Yes,"Priority"=Yes,"Barrier"=Yes} | | "Removable" = No | | "UUID" = "FDAFAC78-B0BA-4F20-9450-D264CFA6237F" | | "CaseSensitive" = No | | "Statistics" = {"Metadata: Number of fsroot bytes written"=8192,"Bytes read from block device"=0,"Calls to VNOP_ALLOCATE"=0,"Calls to VNOP_LOOKUP"=69,"Calls to VNOP_GETATTRLISTBULK"=2,"Calls to VNOP_CLOSE"=46,"Calls to VNOP_MNOMAP"=0,"Calls to VNOP_INACTIVE"=2,"Calls to VNOP_REMOVENAMEDSTREAM"=0,"Calls to VNOP_READ"=0,"File defrag: Number of failed defrag attempts"=0,"Calls to VNOP_BLOCKMAP"=0,"Calls to VNOP_CREATE"=1,"Metadata: Number of objects failed to write"=0,"Calls to VNOP_VERIFY"=0,"File defrag: Number of blocks reallocated"=0,"Calls to VNOP_LISTXATTR"=0,"Calls to VNOP_SEARCHFS"=0,"Metadata: Number of gbitmap bytes written"=0,"Calls to VNOP_FSYNC"=1,"Calls to VNOP_MMAP_CHECK"=0,"Calls to VNOP_MMAP"=0,"File defrag: Number of fragmented files found that we couldn't track"=0,"Calls to VNOP_GETNAMEDSTREAM"=0,"Read requests received from user"=0,"Calls to VNOP_RENAME"=0,"Calls to VNOP_SETATTR"=1,"Calls to VNOP_MKDIR"=0,"File defrag: Number of files that finished defragmentation"=0,"Metadata: Number of bytes read"=0,"Calls to VNOP_READLINK"=0,"Calls to VNOP_LINK"=0,"Metadata: Number of bytes written"=24576,"Calls to VNOP_READDIR"=1,"File defrag: Number of files scanned for fragmentation"=0,"File defrag: Number of fragmented files found during scans"=0,"File defrag: Number of file extents split"=0,"Bytes written by user"=0,"Calls to VNOP_OPEN"=46,"Calls to VNOP_MAKENAMEDSTREAM"=0,"Write requests sent to block device"=0,"File defrag: Number of file extents reallocated"=0,"Calls to VNOP_PATHCONF"=2,"Read requests sent to block device"=0,"Calls to VNOP_SYMLINK"=0,"Calls to VNOP_EXCHANGE"=0,"Metadata: Number of fsroot bytes read"=0,"Metadata: Number of omap bytes read"=0,"Metadata: Number of snapmeta bytes read"=0,"Calls to VNOP_RMDIR"=0,"Calls to VNOP_STRATEGY"=0,"Metadata: Number of snapmeta bytes written"=0,"Calls to VNOP_GETXATTR"=89,"Decmpfs errors"=0,"Calls to VNOP_OFFTOBLK"=0,"Metadata: Number of blockref bytes read"=0,"Calls to VNOP_CLONEFILE"=0,"Metadata: Number of objects failed to read"=0,"Bytes read by user"=0,"Calls to VNOP_MKNOD"=0,"Bytes written to block device"=0,"Metadata: Number of gbitmap bytes read"=0,"Calls to VNOP_REMOVEXATTR"=0,"Calls to VNOP_WRITE"=0,"Calls to VNOP_REMOVE"=1,"Calls to VNOP_PAGEIN"=0,"Calls to VNOP_BLKTOOFF"=0,"Calls to VNOP_RECLAIM"=1,"File defrag: Number of regions to defrag found during scans"=0,"Metadata: Number of blockref bytes written"=0,"Calls to VNOP_RENAMEX"=0,"Calls to VNOP_IOCTL"=4,"Calls to VNOP_GETATTR"=105635,"Calls to VNOP_SETXATTR"=0,"Write requests received from user"=0,"Metadata: Number of omap bytes written"=8192,"Calls to VNOP_PAGEOUT"=0} | | "BSD Unit" = 3 | | "Ejectable" = No | | "Role" = ("VM") | | "VolGroupUUID" = "00000000-0000-0000-0000-000000000000" | | "BSD Name" = "disk3s6" | | "BSD Major" = 1 | | "Physical Block Size" = 4096 | | "IOGeneralInterest" = "IOCommand is not serializable" | | "autodiskmount" = No | | "Status" = "Online" | | "Content Hint" = "41504653-0000-11AA-AA11-00306543ECAC" | | "Leaf" = Yes | | } | | | +-o AppleAPFSVolumeBSDClient +-o RecoveryOSContainer@3 | { | "Open" = No | "Preferred Block Size" = 4096 | "Base" = 995186896896 | "Writable" = Yes | "IOBusyInterest" = "IOCommand is not serializable" | "Size" = 5368664064 | "Content" = "52637672-7900-11AA-AA11-00306543ECAC" | "BSD Minor" = 1 | "Whole" = No | "Removable" = No | "UUID" = "B08DDA66-507E-4DA1-B9AA-224878244001" | "BSD Unit" = 0 | "BSD Major" = 1 | "Ejectable" = No | "BSD Name" = "disk0s3" | "Partition ID" = 3 | "IOGeneralInterest" = "IOCommand is not serializable" | "GPT Attributes" = 0 | "Content Hint" = "52637672-7900-11AA-AA11-00306543ECAC" | "Leaf" = No | "TierType" = "Main" | } | +-o IOMediaBSDClient +-o AppleAPFSContainerScheme +-o AppleAPFSMedia | { | "Logical Block Size" = 4096 | "Open" = No | "Preferred Block Size" = 4096 | "Writable" = Yes | "IOBusyInterest" = "IOCommand is not serializable" | "Size" = 5368664064 | "Content" = "EF57347C-0000-11AA-AA11-00306543ECAC" | "BSD Minor" = 9 | "Whole" = Yes | "IOStorageFeatures" = {"Unmap"=Yes,"Priority"=Yes,"Barrier"=Yes} | "Removable" = No | "EncryptionBlockSize" = 4096 | "UUID" = "0FA8EDED-1874-4518-AA28-E54A0A8B6CC6" | "BSD Unit" = 2 | "BSD Major" = 1 | "Ejectable" = No | "BSD Name" = "disk2" | "Physical Block Size" = 4096 | "IOGeneralInterest" = "IOCommand is not serializable" | "Content Hint" = "EF57347C-0000-11AA-AA11-00306543ECAC" | "Leaf" = No | "OSInternal" = Yes | } | +-o AppleAPFSMediaBSDClient +-o AppleAPFSContainer +-o Recovery@1 | | { | | "Logical Block Size" = 4096 | | "Open" = No | | "Preferred Block Size" = 4096 | | "RoleValue" = 4 | | "Writable" = Yes | | "IncompatibleFeatures" = 1 | | "Sealed" = "No" | | "IOBusyInterest" = "IOCommand is not serializable" | | "FullName" = "Recovery" | | "Size" = 5368664064 | | "Content" = "41504653-0000-11AA-AA11-00306543ECAC" | | "BSD Minor" = 10 | | "FormattedBy" = "newfs_apfs (1933.41.2)" | | "Whole" = No | | "IOStorageFeatures" = {"Unmap"=Yes,"Priority"=Yes,"Barrier"=Yes} | | "Removable" = No | | "UUID" = "2056A4FB-4424-4713-B4B6-E088D6DAD54D" | | "CaseSensitive" = No | | "Statistics" = {"Metadata: Number of fsroot bytes written"=0,"Bytes read from block device"=0,"Calls to VNOP_ALLOCATE"=0,"Calls to VNOP_LOOKUP"=0,"Calls to VNOP_GETATTRLISTBULK"=0,"Calls to VNOP_CLOSE"=0,"Calls to VNOP_MNOMAP"=0,"Calls to VNOP_INACTIVE"=0,"Calls to VNOP_REMOVENAMEDSTREAM"=0,"Calls to VNOP_READ"=0,"File defrag: Number of failed defrag attempts"=0,"Calls to VNOP_BLOCKMAP"=0,"Calls to VNOP_CREATE"=0,"Metadata: Number of objects failed to write"=0,"Calls to VNOP_VERIFY"=0,"File defrag: Number of blocks reallocated"=0,"Calls to VNOP_LISTXATTR"=0,"Calls to VNOP_SEARCHFS"=0,"Metadata: Number of gbitmap bytes written"=0,"Calls to VNOP_FSYNC"=0,"Calls to VNOP_MMAP_CHECK"=0,"Calls to VNOP_MMAP"=0,"File defrag: Number of fragmented files found that we couldn't track"=0,"Calls to VNOP_GETNAMEDSTREAM"=0,"Read requests received from user"=0,"Calls to VNOP_RENAME"=0,"Calls to VNOP_SETATTR"=0,"Calls to VNOP_MKDIR"=0,"File defrag: Number of files that finished defragmentation"=0,"Metadata: Number of bytes read"=0,"Calls to VNOP_READLINK"=0,"Calls to VNOP_LINK"=0,"Metadata: Number of bytes written"=0,"Calls to VNOP_READDIR"=0,"File defrag: Number of files scanned for fragmentation"=0,"File defrag: Number of fragmented files found during scans"=0,"File defrag: Number of file extents split"=0,"Bytes written by user"=0,"Calls to VNOP_OPEN"=0,"Calls to VNOP_MAKENAMEDSTREAM"=0,"Write requests sent to block device"=0,"File defrag: Number of file extents reallocated"=0,"Calls to VNOP_PATHCONF"=0,"Read requests sent to block device"=0,"Calls to VNOP_SYMLINK"=0,"Calls to VNOP_EXCHANGE"=0,"Metadata: Number of fsroot bytes read"=0,"Metadata: Number of omap bytes read"=0,"Metadata: Number of snapmeta bytes read"=0,"Calls to VNOP_RMDIR"=0,"Calls to VNOP_STRATEGY"=0,"Metadata: Number of snapmeta bytes written"=0,"Calls to VNOP_GETXATTR"=0,"Decmpfs errors"=0,"Calls to VNOP_OFFTOBLK"=0,"Metadata: Number of blockref bytes read"=0,"Calls to VNOP_CLONEFILE"=0,"Metadata: Number of objects failed to read"=0,"Bytes read by user"=0,"Calls to VNOP_MKNOD"=0,"Bytes written to block device"=0,"Metadata: Number of gbitmap bytes read"=0,"Calls to VNOP_REMOVEXATTR"=0,"Calls to VNOP_WRITE"=0,"Calls to VNOP_REMOVE"=0,"Calls to VNOP_PAGEIN"=0,"Calls to VNOP_BLKTOOFF"=0,"Calls to VNOP_RECLAIM"=0,"File defrag: Number of regions to defrag found during scans"=0,"Metadata: Number of blockref bytes written"=0,"Calls to VNOP_RENAMEX"=0,"Calls to VNOP_IOCTL"=0,"Calls to VNOP_GETATTR"=0,"Calls to VNOP_SETXATTR"=0,"Write requests received from user"=0,"Metadata: Number of omap bytes written"=0,"Calls to VNOP_PAGEOUT"=0} | | "BSD Unit" = 2 | | "Ejectable" = No | | "Role" = ("Recovery") | | "VolGroupUUID" = "00000000-0000-0000-0000-000000000000" | | "BSD Name" = "disk2s1" | | "BSD Major" = 1 | | "Physical Block Size" = 4096 | | "IOGeneralInterest" = "IOCommand is not serializable" | | "autodiskmount" = No | | "Status" = "Online" | | "Content Hint" = "41504653-0000-11AA-AA11-00306543ECAC" | | "Leaf" = Yes | | } | | | +-o AppleAPFSVolumeBSDClient +-o Update@2 | { | "Logical Block Size" = 4096 | "Open" = No | "Preferred Block Size" = 4096 | "RoleValue" = 192 | "Writable" = Yes | "IncompatibleFeatures" = 1 | "Sealed" = "No" | "IOBusyInterest" = "IOCommand is not serializable" | "FullName" = "Update" | "Size" = 5368664064 | "Content" = "41504653-0000-11AA-AA11-00306543ECAC" | "BSD Minor" = 11 | "FormattedBy" = "com.apple.MobileSof (1933.41.2)" | "Whole" = No | "IOStorageFeatures" = {"Unmap"=Yes,"Priority"=Yes,"Barrier"=Yes} | "Removable" = No | "UUID" = "341B09FD-AEE8-47C4-A2D8-4CF626F8B7EE" | "CaseSensitive" = No | "Statistics" = {"Metadata: Number of fsroot bytes written"=0,"Bytes read from block device"=0,"Calls to VNOP_ALLOCATE"=0,"Calls to VNOP_LOOKUP"=0,"Calls to VNOP_GETATTRLISTBULK"=0,"Calls to VNOP_CLOSE"=0,"Calls to VNOP_MNOMAP"=0,"Calls to VNOP_INACTIVE"=0,"Calls to VNOP_REMOVENAMEDSTREAM"=0,"Calls to VNOP_READ"=0,"File defrag: Number of failed defrag attempts"=0,"Calls to VNOP_BLOCKMAP"=0,"Calls to VNOP_CREATE"=0,"Metadata: Number of objects failed to write"=0,"Calls to VNOP_VERIFY"=0,"File defrag: Number of blocks reallocated"=0,"Calls to VNOP_LISTXATTR"=0,"Calls to VNOP_SEARCHFS"=0,"Metadata: Number of gbitmap bytes written"=0,"Calls to VNOP_FSYNC"=0,"Calls to VNOP_MMAP_CHECK"=0,"Calls to VNOP_MMAP"=0,"File defrag: Number of fragmented files found that we couldn't track"=0,"Calls to VNOP_GETNAMEDSTREAM"=0,"Read requests received from user"=0,"Calls to VNOP_RENAME"=0,"Calls to VNOP_SETATTR"=0,"Calls to VNOP_MKDIR"=0,"File defrag: Number of files that finished defragmentation"=0,"Metadata: Number of bytes read"=0,"Calls to VNOP_READLINK"=0,"Calls to VNOP_LINK"=0,"Metadata: Number of bytes written"=0,"Calls to VNOP_READDIR"=0,"File defrag: Number of files scanned for fragmentation"=0,"File defrag: Number of fragmented files found during scans"=0,"File defrag: Number of file extents split"=0,"Bytes written by user"=0,"Calls to VNOP_OPEN"=0,"Calls to VNOP_MAKENAMEDSTREAM"=0,"Write requests sent to block device"=0,"File defrag: Number of file extents reallocated"=0,"Calls to VNOP_PATHCONF"=0,"Read requests sent to block device"=0,"Calls to VNOP_SYMLINK"=0,"Calls to VNOP_EXCHANGE"=0,"Metadata: Number of fsroot bytes read"=0,"Metadata: Number of omap bytes read"=0,"Metadata: Number of snapmeta bytes read"=0,"Calls to VNOP_RMDIR"=0,"Calls to VNOP_STRATEGY"=0,"Metadata: Number of snapmeta bytes written"=0,"Calls to VNOP_GETXATTR"=0,"Decmpfs errors"=0,"Calls to VNOP_OFFTOBLK"=0,"Metadata: Number of blockref bytes read"=0,"Calls to VNOP_CLONEFILE"=0,"Metadata: Number of objects failed to read"=0,"Bytes read by user"=0,"Calls to VNOP_MKNOD"=0,"Bytes written to block device"=0,"Metadata: Number of gbitmap bytes read"=0,"Calls to VNOP_REMOVEXATTR"=0,"Calls to VNOP_WRITE"=0,"Calls to VNOP_REMOVE"=0,"Calls to VNOP_PAGEIN"=0,"Calls to VNOP_BLKTOOFF"=0,"Calls to VNOP_RECLAIM"=0,"File defrag: Number of regions to defrag found during scans"=0,"Metadata: Number of blockref bytes written"=0,"Calls to VNOP_RENAMEX"=0,"Calls to VNOP_IOCTL"=0,"Calls to VNOP_GETATTR"=0,"Calls to VNOP_SETXATTR"=0,"Write requests received from user"=0,"Metadata: Number of omap bytes written"=0,"Calls to VNOP_PAGEOUT"=0} | "BSD Unit" = 2 | "Ejectable" = No | "Role" = ("Update") | "VolGroupUUID" = "00000000-0000-0000-0000-000000000000" | "BSD Name" = "disk2s2" | "BSD Major" = 1 | "Physical Block Size" = 4096 | "IOGeneralInterest" = "IOCommand is not serializable" | "autodiskmount" = No | "Status" = "Online" | "Content Hint" = "41504653-0000-11AA-AA11-00306543ECAC" | "Leaf" = Yes | "OSInternal" = Yes | } | +-o AppleAPFSVolumeBSDClient
+-o AppleANS3NVMeController | { | "IOMatchedAtBoot" = Yes | "IOPolledInterface" = "IONVMeControllerPolledAdapter is not serializable" | "IOMinimumSaturationByteCount" = 8388608 | "IOMinimumSegmentAlignmentByteCount" = 4096 | "IOMaximumByteCountWrite" = 1048576 | "Physical Interconnect" = "Apple Fabric" | "Physical Interconnect Location" = "Internal" | "Vendor Name" = "Apple" | "Serial Number" = "0ba01612223d5016" | "IOMaximumSegmentByteCountWrite" = 4096 | "IOMaximumByteCountRead" = 1048576 | "Model Number" = "APPLE SSD AP1024R" | "IOPropertyMatch" = {"role"="ANS2"} | "AppleNANDStatus" = "Ready" | "IOCommandPoolSize" = 253 | "Chipset Name" = "SSD Controller" | "IOPersonalityPublisher" = "com.apple.iokit.IONVMeFamily" | "IOPowerManagement" = {"DevicePowerState"=1,"CurrentPowerState"=1,"CapabilityFlags"=32768,"MaxPowerState"=1,"DriverPowerState"=1} | "Firmware Revision" = "499.0.9" | "NVMe Revision Supported" = "1.10" | "CFBundleIdentifier" = "com.apple.iokit.IONVMeFamily" | "IOMaximumSegmentCountWrite" = 256 | "IOProviderClass" = "RTBuddyService" | "IOReportLegendPublic" = Yes | "IOMaximumSegmentByteCountRead" = 4096 | "IOClass" = "AppleANS3NVMeController" | "CFBundleIdentifierKernel" = "com.apple.iokit.IONVMeFamily" | "IOPlatformPanicAction" = 0 | "IOMaximumSegmentCountRead" = 256 | "DeviceOpenedByEventSystem" = Yes | "IOReportLegend" = ({"IOReportChannels"=((5644784279684675442,8590065666,"NVMe Power States")),"IOReportGroupName"="NVMe","IOReportChannelInfo"={"IOReportChannelUnit"=72058115876454424}}) | "IOMatchCategory" = "IODefaultMatchCategory" | "Controller Characteristics" = {"default-bits-per-cell"=3,"firmware-version"="499.0.9 ","controller-unique-id"="0ba01612223d5016 ","capacity"=1024000000000,"pages-per-block-mlc"=1152,"pages-in-read-verify"=384,"sec-per-full-band-slc"=98304,"pages-per-block0"=0,"cell-type"=3,"bytes-per-sec-meta"=16,"Preferred IO Size"=1048576,"program-scheme"=0,"bus-to-msp"=(0,0,1,1,2,2,3,3),"num-dip"=64,"nand-marketing-name"="itlc_3d_g4_2p_256 ","package_blocks_at_EOL"=58560,"sec-per-full-band"=294912,"cau-per-die"=2,"page-size"=16384,"pages-per-block-slc"=384,"sec-per-page"=4,"nand-device-desc"=2305843216584425571,"num-bus"=8,"block-pairing-scheme"=0,"chip-id"="S5E","Encryption Type"="AES-XTS","vendor-name"="Sandisk ","blocks-per-cau"=974,"dies-per-bus"=(4,4,4,4,4,4,4,4),"msp-version"="2.8.10.2.0 ","manufacturer-id"=<453c98b3f6e30000>} | "IOProbeScore" = 300000 | } | +-o AppleEmbeddedNVMeTemperatureSensor | +-o IOHIDEventServiceUserClient +-o NS_01@1 | +-o IOBlockStorageDriver | +-o APPLE SSD AP1024R Media | +-o IOMediaBSDClient | +-o IOGUIDPartitionScheme | +-o iBootSystemContainer@1 | | +-o IOMediaBSDClient | | +-o AppleAPFSContainerScheme | | +-o AppleAPFSMedia | | +-o AppleAPFSMediaBSDClient | | +-o AppleAPFSContainer | | +-o iSCPreboot@1 | | | +-o AppleAPFSVolumeBSDClient | | +-o xART@2 | | | +-o AppleAPFSVolumeBSDClient | | +-o Hardware@3 | | | +-o AppleAPFSVolumeBSDClient | | +-o Recovery@4 | | +-o AppleAPFSVolumeBSDClient | +-o Untitled 2@2 | | +-o IOMediaBSDClient | | +-o AppleAPFSContainerScheme | | +-o AppleAPFSMedia | | +-o AppleAPFSMediaBSDClient | | +-o AppleAPFSContainer | | +-o Macintosh HD - Data@1 | | | +-o AppleAPFSVolumeBSDClient | | +-o Update@2 | | | +-o AppleAPFSVolumeBSDClient | | +-o Macintosh HD@3 | | | +-o AppleAPFSVolumeBSDClient | | | +-o com.apple.os.update-80465671D7D1CD9F89F66E0C36576E4BB8426AC40A79244BB878F21D6381A4B7@1 | | | +-o IOMediaBSDClient | | +-o Preboot@4 | | | +-o AppleAPFSVolumeBSDClient | | +-o Recovery@5 | | | +-o AppleAPFSVolumeBSDClient | | +-o VM@6 | | +-o AppleAPFSVolumeBSDClient | +-o RecoveryOSContainer@3 | +-o IOMediaBSDClient | +-o AppleAPFSContainerScheme | +-o AppleAPFSMedia | +-o AppleAPFSMediaBSDClient | +-o AppleAPFSContainer | +-o Recovery@1 | | +-o AppleAPFSVolumeBSDClient | +-o Update@2 | +-o AppleAPFSVolumeBSDClient +-o NS_02 +-o NS_03 +-o AppleNVMeEANUC
//Created by Winson on 23/01/2025 //Open NVMe Device and Send NVMe Commands #include #include #include #include #include #include #include class NVMeDeviceHandler { private: std::string deviceName; io_service_t deviceService; io_connect_t ioServiceConnection; public: NVMeDeviceHandler(const std::string& name) : deviceName(name), deviceService(0), ioServiceConnection(0) {} ~NVMeDeviceHandler() { if (ioServiceConnection) { IOServiceClose(ioServiceConnection); } if (deviceService) { IOObjectRelease(deviceService); } } bool openDevice() { //Step 1: Match the I/O service for IOMedia devices CFMutableDictionaryRef matchingDict = IOServiceMatching("IOMedia"); if (!matchingDict) { std::cerr << "Failed to create matching dictionary for IOMedia" << std::endl; return false; } // Step 2: Add device name filter to cross check disk# enter from command prompt is valid disk num. CFStringRef devName = CFStringCreateWithCString(kCFAllocatorDefault, deviceName.c_str(), kCFStringEncodingUTF8); CFDictionarySetValue(matchingDict, CFSTR("BSD Name"), devName); //BSD Name are ties to IOMedia objects(disk0,1,2,etc) CFRelease(devName); //Step 3: Get the matching device service deviceService = IOServiceGetMatchingService(kIOMainPortDefault, matchingDict); if (!deviceService) { std::cerr << "Physical device " << deviceName << " not found." << std::endl; return false; } // Step 4: Re-match again the I/O service for NVMe controller devices CFMutableDictionaryRef matchingDict1 = IOServiceMatching("IONVMeController"); if (!matchingDict1) { std::cerr << "Error: Could not create matching dictionary." << std::endl; return false; } // Step 5: Get the matching device service io_service_t service = IOServiceGetMatchingService(kIOMainPortDefault, matchingDict1); if (!service) { std::cerr << "Error: Could not find NVMe controller device." << std::endl; return false; } // Step 6: Open a connection to the NVMe device kern_return_t result = IOServiceOpen(service, mach_task_self(), 0, &ioServiceConnection); if (result != KERN_SUCCESS) { std::cerr << "Failed to open device with error: " << result << " (" << mach_error_string(result) << ")" << std::endl; IOObjectRelease(service); return false; } std::cout << "Successfully opened device " << deviceName << "." << std::endl; return true; } void performActions() { //TODO Data Wipe command // Placeholder for NVMe-specific commands< "..." << std::endl; } bool sendNVMeAdminCommand() { // Construct the NVMe Identify Controller command struct NVMeIdentifyCommand { uint32_t opcode; // NVMe Admin Command Opcode uint32_t nsid; // Namespace Identifier uint64_t reserved; // Reserved }; NVMeIdentifyCommand identifyCommand = {}; identifyCommand.opcode = 0x06; // Identify command identifyCommand.nsid = 0; // For Identify Controller // Prepare input and output buffers uint64_t input[] = {identifyCommand.opcode, identifyCommand.nsid}; uint32_t inputCount = sizeof(input) / sizeof(uint64_t); uint64_t output[16] = {}; // Response buffer for Identify data uint32_t outputCount = sizeof(output) / sizeof(uint64_t); // Call IOConnectCallMethod kern_return_t result = IOConnectCallMethod( ioServiceConnection, // Connection 1, // Method selector (verify the correct ID in documentation) input, // Input data inputCount, // Input data count nullptr, // No additional input structure 0, // Size of additional input output, // Output buffer &outputCount, // Output buffer size nullptr, // No additional output structure nullptr // Size of additional output ); // Check the result if (result != KERN_SUCCESS) { std::cerr << "Failed to send NVMe Admin Command with error: " << result << " (" << mach_error_string(result) << ")" << std::endl; return false; } // Successfully sent the command and received the response std::cout << "NVMe Admin Command sent successfully. Processing the response..." << std::endl; // Optionally, print the output response data std::cout << "Response Data: "; for (size_t i = 0; i < outputCount; ++i) { std::cout << output[i] << " "; } std::cout << std::endl; return true; } }; int main(int argc, char* argv[]) { if (argc < 2) { std::cerr << "Usage: " << argv[0] << " " << std::endl; return 1; } std::string deviceName = argv[1]; NVMeDeviceHandler deviceHandler(deviceName); if (!deviceHandler.openDevice()) { return 1; } //Todo deviceHandler.performActions(); //Proof the the connection is worked // Send NVMe Admin Command to test device interaction if (deviceHandler.sendNVMeAdminCommand()) { std::cout << "NVMe Admin Command was successful!" << std::endl; } else { std::cerr << "NVMe Admin Command failed." << std::endl; } return 0; }
Thank you so much for your help!
Regards, Winson