<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">As the name indicates, PDM concerns itself with emulated devices and<br>
drivers that interfaces the host system.  A device may have multiple<br>
LUNs (abused SCSI term) each of which may have a chain of drivers<br>
attached to it.  The driver chain is a doubly linked list of driver<br>
instances anchored to the LUN at the &quot;top&quot;.  (Topology: The VMM is at<br>
the top, devices below it, drivers under there).  To see how we<br>
configure drivers for LUNs take a look at the CFGM dump in the VBox.log.<br></blockquote><div><br></div><div>What does this &quot;mean&quot; for a device to have a &quot;lun&quot; ? On SCSI it&#39;s sort of a partition ? What does it represent ?</div>
<div><br></div><div>Is it that you, say, have a &quot;disk subsystem&quot; driver which then has multiple disks (but it looks like that is implemented, at least for SATA, by having multiple &quot;ports&quot;) ? It&#39;s also confusing that you have an actual scsi driver that indeed supports multiple LUNs.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
Since each kind of LUN/device have different needs from their drivers<br>
and ditto between the drivers, a COM inspired approach was selected<br>
where interfaces could be queried and used.  Unlike COM there is no need<br>
for reference counting.  We&#39;d already chosen not to use C++ classes<br>
anywhere near the VMM, so there was no need to be compatible with any<br>
C++ object layout either.<br>
<br></blockquote><div><br></div><div>I have also a rather specific question : what does the code at DrvVD.cpp:1132 do ? The code just following this comment :</div><div><br></div><div><div>        /* First of all figure out what kind of TCP networking stack interface</div>
<div>         * to use. This is done unconditionally, as backends which don&#39;t need</div><div>         * it will just ignore it. */</div><div><br></div><div>Or is that for the exclusive usage of the iSCSI backend ?</div>
<div><br></div><div>Thanks a lot,</div><div><br></div><div>Christophe</div></div></div>