root-odJJhXpcy38dnm+
2012-01-26 18:58:23 UTC
Revision: 2827
Author: tv
Date: 2012-01-26 19:58:23 +0100 (Thu, 26 Jan 2012)
Log Message:
-----------
(ensure_dev_exists,find_media) add support for virtio discs
Modified Paths:
--------------
drakx/trunk/mdk-stage1/NEWS
drakx/trunk/mdk-stage1/mount.c
drakx/trunk/mdk-stage1/probing.c
Modified: drakx/trunk/mdk-stage1/NEWS
===================================================================
--- drakx/trunk/mdk-stage1/NEWS 2012-01-26 18:58:20 UTC (rev 2826)
+++ drakx/trunk/mdk-stage1/NEWS 2012-01-26 18:58:23 UTC (rev 2827)
@@ -1,3 +1,5 @@
+- add support for virtio discs
+
1.59
- try to use arch-prefixed location for FTP & HTTP installs (mga#2578)
Modified: drakx/trunk/mdk-stage1/mount.c
===================================================================
--- drakx/trunk/mdk-stage1/mount.c 2012-01-26 18:58:20 UTC (rev 2826)
+++ drakx/trunk/mdk-stage1/mount.c 2012-01-26 18:58:23 UTC (rev 2827)
@@ -60,6 +60,18 @@
}
} else if (name[3])
minor += (name[3] - '0');
+ } else if (ptr_begins_static_str(name, "vd")) {
+ /* Virtual disks */
+ major = 252;
+ minor = (name[2] - 'a') << 4;
+ if (name[3] && name[4]) {
+ minor += 10 + (name[4] - '0');
+ if (name[3] > 1 || name[4] > 5) {
+ log_message("I don't know how to create device %s, please post bugreport to me!", dev);
+ return -1;
+ }
+ } else if (name[3])
+ minor += (name[3] - '0');
} else if (ptr_begins_static_str(name, "hd")) {
/* IDE disks/cd's */
if (name[2] == 'a')
Modified: drakx/trunk/mdk-stage1/probing.c
===================================================================
--- drakx/trunk/mdk-stage1/probing.c 2012-01-26 18:58:20 UTC (rev 2826)
+++ drakx/trunk/mdk-stage1/probing.c 2012-01-26 18:58:23 UTC (rev 2827)
@@ -866,6 +866,41 @@
fclose(f);
}
}
+ /* ----------------------------------------------- */
+ log_message("looking for VirtIO");
+ {
+ int fd, i;
+ char b[50];
+ char *name = b+11;
+ strcpy(b, "/sys/block/vd");
+ for (b[13] = 'a'; b[13] <= 'c'; b[13]++) {
+ /* first, test if file exists (will tell if attached medium exists) */
+ b[14] = '\0';
+ if (access(b, R_OK))
+ continue;
+
+ tmp[count].name = strdup(name);
+ tmp[count].type = DISK; //UNKNOWN_MEDIA;
+ tmp[count].model = strdup("VirtIO disk");
+
+ /* media type */
+ strcpy(b + 14, "/capability");
+ fd = open(b, O_RDONLY);
+ if (fd == -1) {
+ log_message("failed to open %s for reading", b);
+ //continue;
+ }
+ i = read(fd, buf, sizeof(buf));
+ if (i == -1) {
+ log_message("Couldn't read capabilities file (%s)", b);
+ } else {
+ if (!strcmp(buf, "10"))
+ tmp[count].type = DISK;
+ }
+
+ count++;
+ }
+ }
find_media_after_scsi:
/* ----------------------------------------------- */
Author: tv
Date: 2012-01-26 19:58:23 +0100 (Thu, 26 Jan 2012)
Log Message:
-----------
(ensure_dev_exists,find_media) add support for virtio discs
Modified Paths:
--------------
drakx/trunk/mdk-stage1/NEWS
drakx/trunk/mdk-stage1/mount.c
drakx/trunk/mdk-stage1/probing.c
Modified: drakx/trunk/mdk-stage1/NEWS
===================================================================
--- drakx/trunk/mdk-stage1/NEWS 2012-01-26 18:58:20 UTC (rev 2826)
+++ drakx/trunk/mdk-stage1/NEWS 2012-01-26 18:58:23 UTC (rev 2827)
@@ -1,3 +1,5 @@
+- add support for virtio discs
+
1.59
- try to use arch-prefixed location for FTP & HTTP installs (mga#2578)
Modified: drakx/trunk/mdk-stage1/mount.c
===================================================================
--- drakx/trunk/mdk-stage1/mount.c 2012-01-26 18:58:20 UTC (rev 2826)
+++ drakx/trunk/mdk-stage1/mount.c 2012-01-26 18:58:23 UTC (rev 2827)
@@ -60,6 +60,18 @@
}
} else if (name[3])
minor += (name[3] - '0');
+ } else if (ptr_begins_static_str(name, "vd")) {
+ /* Virtual disks */
+ major = 252;
+ minor = (name[2] - 'a') << 4;
+ if (name[3] && name[4]) {
+ minor += 10 + (name[4] - '0');
+ if (name[3] > 1 || name[4] > 5) {
+ log_message("I don't know how to create device %s, please post bugreport to me!", dev);
+ return -1;
+ }
+ } else if (name[3])
+ minor += (name[3] - '0');
} else if (ptr_begins_static_str(name, "hd")) {
/* IDE disks/cd's */
if (name[2] == 'a')
Modified: drakx/trunk/mdk-stage1/probing.c
===================================================================
--- drakx/trunk/mdk-stage1/probing.c 2012-01-26 18:58:20 UTC (rev 2826)
+++ drakx/trunk/mdk-stage1/probing.c 2012-01-26 18:58:23 UTC (rev 2827)
@@ -866,6 +866,41 @@
fclose(f);
}
}
+ /* ----------------------------------------------- */
+ log_message("looking for VirtIO");
+ {
+ int fd, i;
+ char b[50];
+ char *name = b+11;
+ strcpy(b, "/sys/block/vd");
+ for (b[13] = 'a'; b[13] <= 'c'; b[13]++) {
+ /* first, test if file exists (will tell if attached medium exists) */
+ b[14] = '\0';
+ if (access(b, R_OK))
+ continue;
+
+ tmp[count].name = strdup(name);
+ tmp[count].type = DISK; //UNKNOWN_MEDIA;
+ tmp[count].model = strdup("VirtIO disk");
+
+ /* media type */
+ strcpy(b + 14, "/capability");
+ fd = open(b, O_RDONLY);
+ if (fd == -1) {
+ log_message("failed to open %s for reading", b);
+ //continue;
+ }
+ i = read(fd, buf, sizeof(buf));
+ if (i == -1) {
+ log_message("Couldn't read capabilities file (%s)", b);
+ } else {
+ if (!strcmp(buf, "10"))
+ tmp[count].type = DISK;
+ }
+
+ count++;
+ }
+ }
find_media_after_scsi:
/* ----------------------------------------------- */