Improve robustness of drive type auto-detection on Linux #343
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
DtaDevOS::init(…)
inlinux/DtaDevOS.cpp
currently detects the drive type by checking whether the user-specified device node path starts with/dev/nvme
or/dev/s
. This is fragile and breaks mysteriously in cases such as when the user specifies a relative path to a device node or when the user specifies a device through a udev-managed symbolic link in/dev/disk/by-id/
et al.This Pull Request reimplements drive type auto-detection using a more robust algorithm that stats the specified device node and treats it as a SATA drive if the device node's major number is one of the
SCSI_DISK*_MAJOR
numbers or as an NVMe drive if the device is bound to thenvme
kernel driver. (The latter check requires sysfs to be mounted at/sys
.)Example before change:
Example after change: