mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-08-16 23:17:42 +00:00
runtime-rs: move get_scsi_id_lun upper within hotplug_block_device
Move the closure get_scsi_id_lun upper within hotplug_block_device and make it more helpful. Signed-off-by: Alex Lyn <alex.lyn@antgroup.com>
This commit is contained in:
parent
9379a18c8a
commit
2f437388eb
@ -541,6 +541,15 @@ impl Qmp {
|
||||
is_readonly: bool,
|
||||
no_drop: bool,
|
||||
) -> Result<(Option<PciPath>, Option<String>)> {
|
||||
// Helper closure to decode a flattened u16 SCSI index into an (ID, LUN) pair.
|
||||
let get_scsi_id_lun = |index_u16: u16| -> Result<(u8, u8)> {
|
||||
// Uses bitwise operations for efficient and clear conversion.
|
||||
let scsi_id = (index_u16 >> 8) as u8; // Equivalent to index_u16 / 256
|
||||
let lun = (index_u16 & 0xFF) as u8; // Equivalent to index_u16 % 256
|
||||
|
||||
Ok((scsi_id, lun))
|
||||
};
|
||||
|
||||
// `blockdev-add`
|
||||
let node_name = format!("drive-{index}");
|
||||
|
||||
@ -618,15 +627,6 @@ impl Qmp {
|
||||
blkdev_add_args.insert("drive".to_owned(), node_name.clone().into());
|
||||
|
||||
if block_driver == VIRTIO_SCSI {
|
||||
// Helper closure to decode a flattened u16 SCSI index into an (ID, LUN) pair.
|
||||
let get_scsi_id_lun = |index_u16: u16| -> Result<(u8, u8)> {
|
||||
// Uses bitwise operations for efficient and clear conversion.
|
||||
let scsi_id = (index_u16 >> 8) as u8; // Equivalent to index_u16 / 256
|
||||
let lun = (index_u16 & 0xFF) as u8; // Equivalent to index_u16 % 256
|
||||
|
||||
Ok((scsi_id, lun))
|
||||
};
|
||||
|
||||
// Safely convert the u64 index to u16, ensuring it does not exceed `u16::MAX` (65535).
|
||||
let (scsi_id, lun) = get_scsi_id_lun(u16::try_from(index)?)?;
|
||||
let scsi_addr = format!("{}:{}", scsi_id, lun);
|
||||
|
Loading…
Reference in New Issue
Block a user