<div class="gmail_quote">On Fri, Dec 4, 2009 at 8:24 PM, Daniel Veillard <span dir="ltr"><<a href="mailto:veillard@redhat.com">veillard@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div><div></div><div class="h5">On Fri, Dec 04, 2009 at 03:31:06PM +0100, Matthias Bolte wrote:<br>
> ---<br>
> src/vbox/vbox_tmpl.c | 48 +++++++++---------------------------------------<br>
> 1 files changed, 9 insertions(+), 39 deletions(-)<br>
><br>
> diff --git a/src/vbox/vbox_tmpl.c b/src/vbox/vbox_tmpl.c<br>
> index 10cc1ed..33f5334 100644<br>
> --- a/src/vbox/vbox_tmpl.c<br>
> +++ b/src/vbox/vbox_tmpl.c<br>
> @@ -426,15 +426,14 @@ static void vboxUtf8toIID(virConnectPtr conn, char *uuidstr, vboxIID **iid) {<br>
> * @param aMaxSlotPerPort Input array of max slot per device port<br>
> *<br>
> */<br>
> -static char *vboxGenerateMediumName(virConnectPtr conn,<br>
> - PRUint32 storageBus,<br>
> +static char *vboxGenerateMediumName(PRUint32 storageBus,<br>
> PRInt32 deviceInst,<br>
> PRInt32 devicePort,<br>
> PRInt32 deviceSlot,<br>
> PRUint32 *aMaxPortPerInst,<br>
> PRUint32 *aMaxSlotPerPort) {<br>
> + const char *prefix = NULL;<br>
> char *name = NULL;<br>
> - int len = 0;<br>
> int total = 0;<br>
> PRUint32 maxPortPerInst = 0;<br>
> PRUint32 maxSlotPerPort = 0;<br>
> @@ -453,48 +452,20 @@ static char *vboxGenerateMediumName(virConnectPtr conn,<br>
> + (devicePort * maxSlotPerPort)<br>
> + deviceSlot;<br>
><br>
> - if ((total >= 0) && (total < 26))<br>
> - len = 4;<br>
> - else if ((total >= 26) && (total < 26*26 + 26))<br>
> - len = 5;<br>
> - else if ((total >= 26*26 + 26) && (total < 26*26*26 + 26*26 + 26))<br>
> - len = 6;<br>
> - else<br>
> - return NULL;<br>
> -<br>
> - if (VIR_ALLOC_N(name, len) < 0) {<br>
> - virReportOOMError(conn);<br>
> - return NULL;<br>
> - }<br>
> -<br>
> - /* TODO: use virIndexToDiskName() here when available */<br>
> if (storageBus == StorageBus_IDE) {<br>
> - name[0] = 'h';<br>
> - name[1] = 'd';<br>
> + prefix = "hd";<br>
> } else if ( (storageBus == StorageBus_SATA)<br>
> || (storageBus == StorageBus_SCSI)) {<br>
> - name[0] = 's';<br>
> - name[1] = 'd';<br>
> + prefix = "sd";<br>
> } else if (storageBus == StorageBus_Floppy) {<br>
> - name[0] = 'f';<br>
> - name[1] = 'd';<br>
> + prefix = "fd";<br>
> }<br>
><br>
> - if (len == 4) {<br>
> - name[2] = (char)(97 + total);<br>
> - } else if (len == 5) {<br>
> - name[2] = (char)(96 + (total / 26));<br>
> - name[3] = (char)(97 + (total % 26));<br>
> - } else if (len == 6) {<br>
> - name[2] = (char)(96 + (total / 26*26));<br>
> - name[3] = (char)(96 + ((total % (26*26)) / 26));<br>
> - name[4] = (char)(97 + ((total % (26*26)) % 26));<br>
> - }<br>
> + name = virIndexToDiskName(total, prefix);<br>
><br>
> - name[len - 1] = '\0';<br>
> - DEBUG("name=%s, len=%d, total=%d, storageBus=%u, deviceInst=%d, "<br>
> + DEBUG("name=%s, total=%d, storageBus=%u, deviceInst=%d, "<br>
> "devicePort=%d deviceSlot=%d, maxPortPerInst=%u maxSlotPerPort=%u",<br>
> - name, len, total, storageBus, deviceInst, devicePort,<br>
> + NULLSTR(name), total, storageBus, deviceInst, devicePort,<br>
> deviceSlot, maxPortPerInst, maxSlotPerPort);<br>
> return name;<br>
> }<br>
> @@ -2496,8 +2467,7 @@ static char *vboxDomainDumpXML(virDomainPtr dom, int flags) {<br>
><br>
> imediumattach->vtbl->GetPort(imediumattach, &devicePort);<br>
> imediumattach->vtbl->GetDevice(imediumattach, &deviceSlot);<br>
> - def->disks[diskCount]->dst = vboxGenerateMediumName(dom->conn,<br>
> - storageBus,<br>
> + def->disks[diskCount]->dst = vboxGenerateMediumName(storageBus,<br>
> deviceInst,<br>
> devicePort,<br>
> deviceSlot,<br>
<br>
</div></div> ACK, now that we have the common routine ... let's use it !<br>
<br></blockquote><div><br></div><div>ACK to this, now that virIndexToDiskName() is available.</div><div><br></div><div>-pritesh</div></div>