263
263
dom = virDomainCreateLinux (*conn, xml, 0);
267
//generate xml for each attached vol and attach them
269
for (i=0 ; i < instance->volumesSize; ++i) {
270
char attach_xml[1024];
272
ncVolume *volume = &instance->volumes[i];
273
snprintf (attach_xml, 1024, "<disk type='block'><driver name='phy'/><source dev='%s'/><target dev='%s'/></disk>", volume->remoteDev, volume->localDevReal);
275
err = virDomainAttachDevice (dom, attach_xml);
278
logprintfl (EUCAERROR, "virDomainAttachDevice() failed (err=%d) XML=%s\n", err, attach_xml);
280
logprintfl (EUCAINFO, "reattached %s to %s in domain %s\n", volume->remoteDev, volume->localDevReal, instance->instanceId);
268
284
logprintfl (EUCAFATAL, "Failed to restart instance %s\n", instance->instanceId);
269
285
change_state (instance, SHUTOFF);
415
431
int is_iscsi_target = 0;
416
432
char *local_iscsi_dev;
435
/* only attach using virtio when the device is /dev/vdXX */
436
if (localDevReal[5] == 'v' && localDevReal[6] == 'd') {
418
439
if(check_iscsi(remoteDev)) {
419
440
is_iscsi_target = 1;
420
441
/*get credentials, decrypt them*/
425
446
logprintfl(EUCAERROR, "AttachVolume(): failed to connect to iscsi target\n");
428
snprintf (xml, 1024, "<disk type='block'><driver name='phy'/><source dev='%s'/><target dev='%s'/></disk>", local_iscsi_dev, localDevReal);
449
if (nc->config_use_virtio_disk && virtio_dev) {
450
snprintf (xml, 1024, "<disk type='block'><driver name='phy'/><source dev='%s'/><target dev='%s' bus='virtio'/></disk>", local_iscsi_dev, localDevReal);
452
snprintf (xml, 1024, "<disk type='block'><driver name='phy'/><source dev='%s'/><target dev='%s'/></disk>", local_iscsi_dev, localDevReal);
431
snprintf (xml, 1024, "<disk type='block'><driver name='phy'/><source dev='%s'/><target dev='%s'/></disk>", remoteDev, localDevReal);
456
if (nc->config_use_virtio_disk && virtio_dev) {
457
snprintf (xml, 1024, "<disk type='block'><driver name='phy'/><source dev='%s'/><target dev='%s' bus='virtio'/></disk>", remoteDev, localDevReal);
459
snprintf (xml, 1024, "<disk type='block'><driver name='phy'/><source dev='%s'/><target dev='%s'/></disk>", remoteDev, localDevReal);
432
461
rc = stat(remoteDev, &statbuf);
434
463
logprintfl(EUCAERROR, "AttachVolume(): cannot locate local block device file '%s'\n", remoteDev);
467
496
ncVolume * volume;
469
498
sem_p (inst_sem);
470
volume = add_volume (instance, volumeId, remoteDev, localDevTag, "attached");
499
volume = add_volume (instance, volumeId, remoteDev, localDevTag, localDevReal, "attached");
471
500
scSaveInstanceInfo(instance); /* to enable NC recovery */
472
501
sem_v (inst_sem);
473
502
if ( volume == NULL ) {
520
549
int is_iscsi_target = 0;
521
550
char *local_iscsi_dev;
552
/* only attach using virtio when the device is /dev/vdXX */
553
if (localDevReal[5] == 'v' && localDevReal[6] == 'd') {
522
556
if(check_iscsi(remoteDev)) {
523
557
is_iscsi_target = 1;
524
558
/*get credentials, decrypt them*/
526
560
/*logout from target*/
527
561
if((local_iscsi_dev = get_iscsi_target(nc->get_storage_cmd_path, remoteDev)) == NULL)
529
snprintf (xml, 1024, "<disk type='block'><driver name='phy'/><source dev='%s'/><target dev='%s'/></disk>", local_iscsi_dev, localDevReal);
563
if (nc->config_use_virtio_disk && virtio_dev) {
564
snprintf (xml, 1024, "<disk type='block'><driver name='phy'/><source dev='%s'/><target dev='%s' bus='virtio'/></disk>", local_iscsi_dev, localDevReal);
566
snprintf (xml, 1024, "<disk type='block'><driver name='phy'/><source dev='%s'/><target dev='%s'/></disk>", local_iscsi_dev, localDevReal);
531
snprintf (xml, 1024, "<disk type='block'><driver name='phy'/><source dev='%s'/><target dev='%s'/></disk>", remoteDev, localDevReal);
569
if (nc->config_use_virtio_disk && virtio_dev) {
570
snprintf (xml, 1024, "<disk type='block'><driver name='phy'/><source dev='%s'/><target dev='%s' bus='virtio'/></disk>", remoteDev, localDevReal);
572
snprintf (xml, 1024, "<disk type='block'><driver name='phy'/><source dev='%s'/><target dev='%s'/></disk>", remoteDev, localDevReal);
533
575
/* protect KVM calls, just in case */