Skip to content

Commit

Permalink
Merge pull request #2160 from ogayot/kvm-test+scsi
Browse files Browse the repository at this point in the history
kvm-test: add support for SCSI disk without multipathing (useful for IMSM)
  • Loading branch information
ogayot authored Feb 17, 2025
2 parents 932e785 + 5d685b7 commit 954e39f
Showing 1 changed file with 18 additions and 2 deletions.
20 changes: 18 additions & 2 deletions scripts/kvm-test.py
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ def load_config(self):
dest='disk_count', help='attach no local storage')

parser.add_argument('--disk-interface', help='type of interface for the disk(s)',
choices=('nvme', 'virtio', 'scsi-multipath'), default='virtio')
choices=('nvme', 'virtio', 'scsi', 'scsi-multipath'), default='virtio')
parser.add_argument('-d', '--disksize', action='append', dest='disks_sizes', default=[],
help='size of disk to create (12G default) (repeat to specify size of extra disks)')
parser.add_argument('-i', '--img', action='store', help='use this img')
Expand Down Expand Up @@ -595,9 +595,25 @@ def storage_args(ctx) -> list[str]:
for idx, target in enumerate(ctx.targets):
args.extend(drive(target, id_=f'localdisk{idx}', if_="none"))
args.extend(('-device', f'nvme,drive=localdisk{idx},serial=deadbeef{idx}'))
case 'scsi':
args.extend(('-device', 'virtio-scsi-pci,id=scsi'))
for idx, target in enumerate(ctx.targets):
args.extend(drive(target, id_=f'localdisk{idx}', if_="none"))
args.extend(('-device', f'scsi-hd,drive=localdisk{idx},serial=deadbeef{idx}'))
note = '''
NOTE:
----
If the guest supports it (plucky does but noble doesn't), you can create a fake \
IMSM RAID using commands such as:
# IMSM_NO_PLATFORM=1 mdadm --create /dev/md/imsm0 -n 2 --metadata=imsm /dev/sda /dev/sdb
# IMSM_NO_PLATFORM=1 mdadm --create /dev/md/raid1_1 -n 2 --level 1 /dev/md/imsm0
If you only have one disk, you can still do a RAID 0 (i.e., --level=0) but you \
will need to pass the --force option.
----'''
print(note, file=sys.stderr)
case 'scsi-multipath':
args.extend(("-device", "virtio-scsi-pci,id=scsi"))
for args, target in enumerate(ctx.targets):
for idx, target in enumerate(ctx.targets):
args.extend(drive(target, id_=f"mdisk{idx}0", if_="none", file_locking=False))
args.extend(("-device", f"scsi-hd,drive=mdisk{idx}0,serial=MPIO{idx}"))
args.extend(drive(target, id_=f"mdisk{idx}1", if_="none", file_locking=False))
Expand Down

0 comments on commit 954e39f

Please sign in to comment.