From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: Re: [PATCH] libxl: virtio-blk-pci support for FV domain Date: Sun, 8 May 2011 12:56:56 +0800 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Takeshi HASEGAWA Cc: Anthony PERARD , Xen Devel , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org On Sun, May 8, 2011 at 11:48 AM, Takeshi HASEGAWA wrote= : > I am working to support virtio-blk-pci device on Xen FV domain. > This patch adds virtio-blk-pci support to libxl. > > New vbd type (252 << 8) is added. > I borrow 252 from major number of linux virtio-blk frontend (vd). > virtio-blk-pci does not use this type right now, but it should > also work with Wei Liu's work. > > > I have already seen virtio device on HVM domain with upstream-qemu, > but there looks some issues when I/O occurs. > (fdisk works, but qemu dies during mkfs) > I am going to look into the problem. > > Any suggestions are welcome! > > Thanks, > Takeshi > > > Signed-off-by: Takeshi HASEGAWA > > diff -r 4b0692880dfa docs/misc/vbd-interface.txt > --- a/docs/misc/vbd-interface.txt =C2=A0 =C2=A0 =C2=A0 Thu May 05 17:40:3= 4 2011 +0100 > +++ b/docs/misc/vbd-interface.txt =C2=A0 =C2=A0 =C2=A0 Sun May 08 12:46:0= 0 2011 +0900 > @@ -73,6 +73,7 @@ > > =C2=A0 =C2=A0 1 << 28 | disk << 8 | partition =C2=A0 =C2=A0 =C2=A0xvd, di= sks or partitions 16 onwards > =C2=A0 =C2=A0202 << 8 | disk << 4 | partition =C2=A0 =C2=A0 =C2=A0xvd, di= sks and partitions up to 15 > + =C2=A0 252 << 8 | disk << 4 | partition =C2=A0 =C2=A0 =C2=A0vd, disks a= nd partitions up to 15 > =C2=A0 =C2=A0 =C2=A08 << 8 | disk << 4 | partition =C2=A0 =C2=A0 =C2=A0sd= , disks and partitions up to 15 > =C2=A0 =C2=A0 =C2=A03 << 8 | disk << 6 | partition =C2=A0 =C2=A0 =C2=A0hd= , disks 0..1, partitions 0..63 > =C2=A0 =C2=A0 22 << 8 | (disk-2) << 6 | partition =C2=A0hd, disks 2..3, p= artitions 0..63 > diff -r 4b0692880dfa tools/libxl/libxl_device.c > --- a/tools/libxl/libxl_device.c =C2=A0 =C2=A0 =C2=A0 =C2=A0Thu May 05 17= :40:34 2011 +0100 > +++ b/tools/libxl/libxl_device.c =C2=A0 =C2=A0 =C2=A0 =C2=A0Sun May 08 12= :46:00 2011 +0900 > @@ -238,6 +238,13 @@ > =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (pdisk) *pdisk =3D disk; > =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (ppartition) *ppartition =3D partition; > =C2=A0 =C2=A0 =C2=A0 =C2=A0 return (8 << 8) | (disk << 4) | partition; > + =C2=A0 =C2=A0} > + =C2=A0 =C2=A0if (device_virtdisk_matches(virtpath, "vd", > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&disk, 15, > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0&partition, 15)) { > + =C2=A0 =C2=A0 =C2=A0 =C2=A0if (pdisk) *pdisk =3D disk; > + =C2=A0 =C2=A0 =C2=A0 =C2=A0if (ppartition) *ppartition =3D partition; > + =C2=A0 =C2=A0 =C2=A0 =C2=A0return (252 << 8) | (disk << 4) | partition; > =C2=A0 =C2=A0 } > =C2=A0 =C2=A0 return -1; > =C2=A0} > diff -r 4b0692880dfa tools/libxl/libxl_dm.c > --- a/tools/libxl/libxl_dm.c =C2=A0 =C2=A0Thu May 05 17:40:34 2011 +0100 > +++ b/tools/libxl/libxl_dm.c =C2=A0 =C2=A0Sun May 08 12:46:00 2011 +0900 > @@ -418,6 +418,10 @@ > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (strncmp(disks= [i].vdev, "sd", 2) =3D=3D 0) > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 dri= ve =3D libxl__sprintf > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 (gc, "file=3D%s,if=3Dscsi,bus=3D0,unit=3D%d,format=3D%s", > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 disks[i].pdev_path, disk, format); > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0else if (strncmp= (disks[i].vdev, "vd", 2) =3D=3D 0) > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0dr= ive =3D libxl__sprintf > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0(gc, "file=3D%s,if=3Dvirtio,bus=3D0,unit=3D%d,format=3D%s", > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0disks[i].pdev_path, disk, format); > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 else if (disk < 4= ) > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 dri= ve =3D libxl__sprintf > > -- > Takeshi HASEGAWA > Thanks, I just started working on VirtIO block support yesterday. I was trying to add support to parse_disk_config() so that we can specify "-if" option in the config file. I'm wondering which approach is better -- configure through device_virtdisk_matches() or parse_disk_config() . Any suggestions? --=20 Best regards Wei Liu Twitter: @iliuw Site: http://liuw.name