On Tue, 2010-07-27 at 11:40 +0100, Stefano Stabellini wrote:
> On Tue, 27 Jul 2010, Ian Campbell wrote:
> > On Tue, 2010-07-27 at 01:36 +0100, Jeremy Fitzhardinge wrote:
> > > When creating a domain, "xl create" should fail if a block device is
> > > shared RW between domains, like xm create does.
> > >
> > > I'm not sure how this would be implemented. Search xenstore for
> > > references to the device when setting up a domain?
> >
> > The hotplug scripts have locking and calls to a function called
> > "check_device_sharing" in them, I've been wondering why that wasn't
> > kicking in for xl created domains for a little while but never got to
> > investigating.
> >
>
> those scripts are called by udev and theoretically should work
> exactly the same way with xend or libxl.
> I didn't test this but I believe that since libxl always uses blktap2,
> the script called is block and the codepath taken is the following:
>
> phys=$(xenstore_read_default "$XENBUS_PATH/physical-device" 'MISSING')
> if [ "$phys" != 'MISSING' ]
> then
> # Depending upon the hotplug configuration, it is possible for this
> # script to be called twice, so just bail.
> exit 0
> fi
>
> so we never do any checks.
...and in any case physical-device would be a unique /dev/xen/tapdisk-N
path, regardless of any sharing of the files tapdisk is backing onto so
it is rather hard to check for sharing at this level anyway.
> I also think that tap_ctl_create is the right place to do these checks,
> not a script called by udev after the device has been created.
Agreed. tapdisk should be taking out a flock() or something similar on
any vhd files it is going to write to and should fail if it can't lock
the file.
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|