diff --git a/zipl/include/disk.h b/zipl/include/disk.h index 4280aa7c..bb7f9f82 100644 --- a/zipl/include/disk.h +++ b/zipl/include/disk.h @@ -102,6 +102,7 @@ int disk_get_info(const char* device, struct job_target_data* target, struct disk_info** info); int disk_is_tape(const char* device); int disk_is_scsi(const char* device, struct job_target_data* target); +int disk_is_nvme(const char* device, struct job_target_data* target); int disk_get_info_from_file(const char* filename, struct job_target_data* target, struct disk_info** info); diff --git a/zipl/src/disk.c b/zipl/src/disk.c index 52e55286..144f3b94 100644 --- a/zipl/src/disk.c +++ b/zipl/src/disk.c @@ -508,6 +508,20 @@ disk_is_scsi(const char* device, struct job_target_data* target) return rc; } +int +disk_is_nvme(const char* device, struct job_target_data* target) +{ + struct disk_info* info; + int rc = 0; + + if (disk_get_info(device, target, &info) == -1) + return 0; + if (info->type == disk_type_scsi && info->is_nvme) + rc = 1; + disk_free_info(info); + return rc; +} + int disk_get_info_from_file(const char* filename, struct job_target_data* target, struct disk_info** info)