1
1
import os
2
2
import logging as log
3
3
import aexpect
4
+ import time
4
5
5
6
from avocado .utils import process
6
7
11
12
from virttest import remote
12
13
from virttest import utils_disk
13
14
from virttest import utils_misc
15
+ from virttest .utils_libvirt .libvirt_disk import get_non_root_disk_name
14
16
from virttest .utils_test import libvirt
15
17
from virttest .libvirt_xml import vm_xml
16
18
from virttest .libvirt_xml .devices .disk import Disk
@@ -36,6 +38,19 @@ def run(test, params, env):
36
38
6.Confirm the test result.
37
39
"""
38
40
41
+ def _delete_scsi_disk ():
42
+ """ Helper function for wait_for in finally """
43
+ libvirt .delete_scsi_disk ()
44
+ cmd = "lsscsi|grep scsi_debug"
45
+ s1 , _ = utils_misc .cmd_status_output (cmd ,
46
+ shell = True ,
47
+ ignore_status = False )
48
+ cmd = "lsmod|grep scsi_debug"
49
+ s2 , _ = utils_misc .cmd_status_output (cmd ,
50
+ shell = True ,
51
+ ignore_status = False )
52
+ return s1 + s2 == 2
53
+
39
54
def set_vm_controller_xml (vmxml ):
40
55
"""
41
56
Set VM scsi controller xml.
@@ -239,7 +254,8 @@ def get_vm_disk_xml(dev_type, dev_name, **options):
239
254
test .fail ('Failed to hotplug disk device' )
240
255
elif 0 == result and not vms_list [i ]['status' ]:
241
256
test .fail ('Hotplug disk device unexpectedly.' )
242
-
257
+ time .sleep (5 )
258
+ added_disk , _ = get_non_root_disk_name (session )
243
259
# Check disk error_policy option in VMs.
244
260
if test_error_policy :
245
261
error_policy = vms_list [i ]['disk' ].driver ["error_policy" ]
@@ -248,7 +264,7 @@ def get_vm_disk_xml(dev_type, dev_name, **options):
248
264
if error_policy == "enospace" :
249
265
cmd = ("mount /dev/%s /mnt && dd if=/dev/zero of=/mnt/test"
250
266
" bs=1M count=2000 2>&1 | grep 'No space left'"
251
- % disk_target )
267
+ % added_disk )
252
268
s , o = session .cmd_status_output (cmd )
253
269
logging .debug ("error_policy in vm0 exit %s; output: %s" , s , o )
254
270
if 0 != s :
@@ -258,15 +274,15 @@ def get_vm_disk_xml(dev_type, dev_name, **options):
258
274
break
259
275
260
276
if session .cmd_status ("fdisk -l /dev/%s && mount /dev/%s /mnt; ls /mnt"
261
- % (disk_target , disk_target )):
277
+ % (added_disk , added_disk )):
262
278
session .close ()
263
279
test .fail ("Test error_policy: "
264
280
"failed to mount disk" )
265
281
if i == 1 :
266
282
try :
267
283
session0 = vms_list [0 ]['vm' ].wait_for_login (timeout = 10 )
268
284
cmd = ("fdisk -l /dev/%s && mkfs.ext3 -F /dev/%s "
269
- % (disk_target , disk_target ))
285
+ % (added_disk , added_disk ))
270
286
s , o = session .cmd_status_output (cmd )
271
287
logging .debug ("error_policy in vm1 exit %s; output: %s" , s , o )
272
288
session .close ()
@@ -312,9 +328,10 @@ def _check_error():
312
328
test_str = "teststring"
313
329
# Try to write on vm0.
314
330
session0 = vms_list [0 ]['vm' ].wait_for_login (timeout = 10 )
331
+ added_disk0 , _ = get_non_root_disk_name (session0 )
315
332
cmd = ("fdisk -l /dev/%s && mount /dev/%s /mnt && echo '%s' "
316
333
"> /mnt/test && umount /mnt"
317
- % (disk_target , disk_target , test_str ))
334
+ % (added_disk0 , added_disk0 , test_str ))
318
335
s , o = session0 .cmd_status_output (cmd )
319
336
logging .debug ("session in vm0 exit %s; output: %s" , s , o )
320
337
if s :
@@ -323,7 +340,7 @@ def _check_error():
323
340
# Try to read on vm1.
324
341
cmd = ("fdisk -l /dev/%s && mount /dev/%s /mnt && grep %s"
325
342
" /mnt/test && umount /mnt"
326
- % (disk_target , disk_target , test_str ))
343
+ % (added_disk , added_disk , test_str ))
327
344
s , o = session .cmd_status_output (cmd )
328
345
logging .debug ("session in vm1 exit %s; output: %s" , s , o )
329
346
if s :
@@ -377,7 +394,7 @@ def _check_error():
377
394
for img in disks :
378
395
if 'format' in img :
379
396
if img ["format" ] == "scsi" :
380
- utils_misc .wait_for (libvirt . delete_scsi_disk ,
397
+ utils_misc .wait_for (_delete_scsi_disk ,
381
398
120 , ignore_errors = True )
382
399
elif img ["format" ] == "iscsi" :
383
400
libvirt .setup_or_cleanup_iscsi (is_setup = False )
0 commit comments