[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [Patch 0/7] pvSCSI driver
> > > > What I don't understand is why you need this at all. It seems like it > > > > would make more sense to either: > > > > > > > > a) Hang every LUN off of the same scsi host, or > > > > b) Give each LUN its own scsi host. ... > > > Can I explain a numbering logic of assigning LUNs to guests? > > That was what I was hoping you'd do, yes. :) > > > > > Basically, each guest looks same SCSI tree as host except for following > > > two points. > > > > > > 1.) The "host" in 4-tuples "host:channel:id:lun" on guest may not be > > > same as that on host. > > > 2.) Tree on the guest may be sparse when some LUN doesn't assign to > > > the guest. > > > > > > Therefore, "a1:b:c:d" on host becomes "a2:b:c:d" on guest. (a1 != a2 > > > generally) > > Okay, why do you require that the device in the guest has the same > > channel:id:lun as the device on the host? That seems like a somewhat > > gratuitous restriction to me. > > > > > I think the numbering logic is same as b) you mentioned above. Is it > > > right? > > No, you've gone for option c: > > > > c) The topology inside the guest reflects a subset of the host > > topology > > > > which I hadn't previously considered. > The reason why we took the option c is as follows. > > - Some storage management software running on guest may asume physical > topology. (However, I'm not sure whether there is such a software or > not.) There are three obvious ways for them to make that kind of assumption: 1) There's some SCSI command which applies to a collection of devices, and that collection depends on the topology. Bus resets are the obvious one here. All of these commands will need special handling anyway, to prevent VMs from interfering with each other (and I don't think you currently support any of them, anyway). 2) There are some magic LUNs/targets/whatevers which the application tries to access at a particular address. sam4r10 requires that either LUN 0 or the REPORT LUNS well-known LUN be present, so that's pretty plausible. I think your current implementation may already have problems here if a user decides to only connect a subset of a device's LUNs, yes? 3) There's some SCSI command which returns LUNs in its results. REPORT LUNs is the obvious one here. The frontend will currently report incorrect results for these commands if the user has only connected a subset of the LUNs. This kind of suggests that we should be plumbing things through to the guest with a granularity of whole targets, rather than individual logical units. The alternative is a much more complicated scsi emulation which can fix up the LUN-sensitive commands. > - The "host" is Linux specific number and Scsi-Host structure for > dummy consumes relatively large memory space. Therefore, we decided > to compress the "host" number. (Not sparse. Contiguous.) Are you implying that frontend host numbers won't always match up with backend host numbers? If hosts are expensive to construct then that's a good reason to avoid model (b) (one host per LUN/target) (although my desktop has a scsi host for each SATA port, so they can't be *that* expensive). It doesn't rule out model (a) (one host shared by all LUNs). > Explicit declaration like below may be one solution. Of cource some > default setting is needed. > > > On Dom0 On Guest > ------------------------ > "1:2:3:4" ---> "5:6:7:8" Allowing this kind of mapping sounds reasonable to me. It would also make it possible (hopefully) to add support for some of the weirder SCSI logical unit addressing modes without changing the frontends (e.g. hierarchical addressing with 64 bit LUNs). That might involve a certain amount of munging of REPORT LUNS commands in the backend, though. Steven. Attachment:
signature.asc _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |