From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kevin Wolf Subject: Re: [PATCH 14/18] xen: add implementations of xen-qdisk connect and disconnect functions... Date: Thu, 29 Nov 2018 11:46:19 +0100 Message-ID: <20181129104619.GD4797@linux.fritz.box> References: <20181121151211.15997-1-paul.durrant@citrix.com> <20181121151211.15997-15-paul.durrant@citrix.com> <20181128163447.GF4222@dhcp-200-186.str.redhat.com> <20181129090046.GA4797@linux.fritz.box> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gSJpw-0003Xa-PR for xen-devel@lists.xenproject.org; Thu, 29 Nov 2018 10:46:24 +0000 Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Paul Durrant Cc: Stefano Stabellini , "qemu-block@nongnu.org" , "qemu-devel@nongnu.org" , Max Reitz , Anthony Perard , "xen-devel@lists.xenproject.org" List-Id: xen-devel@lists.xenproject.org QW0gMjkuMTEuMjAxOCB1bSAxMDozMyBoYXQgUGF1bCBEdXJyYW50IGdlc2NocmllYmVuOgo+ID4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+IEZyb206IEtldmluIFdvbGYgW21haWx0bzpr d29sZkByZWRoYXQuY29tXQo+ID4gU2VudDogMjkgTm92ZW1iZXIgMjAxOCAwOTowMQo+ID4gVG86 IFBhdWwgRHVycmFudCA8UGF1bC5EdXJyYW50QGNpdHJpeC5jb20+Cj4gPiBDYzogcWVtdS1ibG9j a0Bub25nbnUub3JnOyBxZW11LWRldmVsQG5vbmdudS5vcmc7IHhlbi0KPiA+IGRldmVsQGxpc3Rz LnhlbnByb2plY3Qub3JnOyBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5v cmc+Owo+ID4gQW50aG9ueSBQZXJhcmQgPGFudGhvbnkucGVyYXJkQGNpdHJpeC5jb20+OyBNYXgg UmVpdHogPG1yZWl0ekByZWRoYXQuY29tPgo+ID4gU3ViamVjdDogUmU6IFtQQVRDSCAxNC8xOF0g eGVuOiBhZGQgaW1wbGVtZW50YXRpb25zIG9mIHhlbi1xZGlzayBjb25uZWN0Cj4gPiBhbmQgZGlz Y29ubmVjdCBmdW5jdGlvbnMuLi4KPiA+IAo+ID4gQW0gMjguMTEuMjAxOCB1bSAxNzo0MCBoYXQg UGF1bCBEdXJyYW50IGdlc2NocmllYmVuOgo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tCj4gPiA+ID4gRnJvbTogS2V2aW4gV29sZiBbbWFpbHRvOmt3b2xmQHJlZGhhdC5jb21dCj4g PiA+ID4gU2VudDogMjggTm92ZW1iZXIgMjAxOCAxNjozNQo+ID4gPiA+IFRvOiBQYXVsIER1cnJh bnQgPFBhdWwuRHVycmFudEBjaXRyaXguY29tPgo+ID4gPiA+IENjOiBxZW11LWJsb2NrQG5vbmdu dS5vcmc7IHFlbXUtZGV2ZWxAbm9uZ251Lm9yZzsgeGVuLQo+ID4gPiA+IGRldmVsQGxpc3RzLnhl bnByb2plY3Qub3JnOyBTdGVmYW5vIFN0YWJlbGxpbmkKPiA+IDxzc3RhYmVsbGluaUBrZXJuZWwu b3JnPjsKPiA+ID4gPiBBbnRob255IFBlcmFyZCA8YW50aG9ueS5wZXJhcmRAY2l0cml4LmNvbT47 IE1heCBSZWl0ego+ID4gPG1yZWl0ekByZWRoYXQuY29tPgo+ID4gPiA+IFN1YmplY3Q6IFJlOiBb UEFUQ0ggMTQvMThdIHhlbjogYWRkIGltcGxlbWVudGF0aW9ucyBvZiB4ZW4tcWRpc2sKPiA+IGNv bm5lY3QKPiA+ID4gPiBhbmQgZGlzY29ubmVjdCBmdW5jdGlvbnMuLi4KPiA+ID4gPgo+ID4gPiA+ IEFtIDIxLjExLjIwMTggdW0gMTY6MTIgaGF0IFBhdWwgRHVycmFudCBnZXNjaHJpZWJlbjoKPiA+ ID4gPiA+IC4uLmFuZCB3aXJlIGluIHRoZSBkYXRhcGxhbmUuCj4gPiA+ID4gPgo+ID4gPiA+ID4g VGhpcyBwYXRjaCBhZGRzIHRoZSByZW1haW5pbmcgY29kZSB0byBtYWtlIHRoZSB4ZW4tcWRpc2sg WGVuRGV2aWNlCj4gPiA+ID4gPiBmdW5jdGlvbmFsLiBUaGUgcGFyYW1ldGVycyB0aGF0IGEgYmxv Y2sgZnJvbnRlbmQgZXhwZWN0cyB0byBmaW5kIGFyZQo+ID4gPiA+ID4gcG9wdWxhdGVkIGluIHRo ZSBiYWNrZW5kIHhlbnN0b3JlIGFyZWEsIGFuZCB0aGUgJ3JpbmctcmVmJyBhbmQKPiA+ID4gPiA+ ICdldmVudC1jaGFubmVsJyB2YWx1ZXMgc3BlY2lmaWVkIGluIHRoZSBmcm9udGVuZCB4ZW5zdG9y ZSBhcmVhIGFyZQo+ID4gPiA+ID4gbWFwcGVkL2JvdW5kIGFuZCB1c2VkIHRvIHNldCB1cCB0aGUg ZGF0YXBsYW5lLgo+ID4gPiA+ID4KPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFBhdWwgRHVycmFu dCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+Cj4gPiA+ID4gPiAtLS0KPiA+ID4gPiA+IENjOiBT dGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+Cj4gPiA+ID4gPiBDYzog QW50aG9ueSBQZXJhcmQgPGFudGhvbnkucGVyYXJkQGNpdHJpeC5jb20+Cj4gPiA+ID4gPiBDYzog S2V2aW4gV29sZiA8a3dvbGZAcmVkaGF0LmNvbT4KPiA+ID4gPiA+IENjOiBNYXggUmVpdHogPG1y ZWl0ekByZWRoYXQuY29tPgo+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiAgaHcvYmxvY2sveGVuLXFk aXNrLmMgICAgICAgfCAxNDAKPiA+ID4gPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKPiA+ID4gPiA+ICBody94ZW4veGVuLWJ1cy5jICAgICAgICAgICB8ICAx MiArKy0tCj4gPiA+ID4gPiAgaW5jbHVkZS9ody94ZW4veGVuLWJ1cy5oICAgfCAgIDggKysrCj4g PiA+ID4gPiAgaW5jbHVkZS9ody94ZW4veGVuLXFkaXNrLmggfCAgMTIgKysrKwo+ID4gPiA+ID4g IDQgZmlsZXMgY2hhbmdlZCwgMTY2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCj4gPiA+ ID4gPgo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2h3L2Jsb2NrL3hlbi1xZGlzay5jIGIvaHcvYmxv Y2sveGVuLXFkaXNrLmMKPiA+ID4gPiA+IGluZGV4IDM1ZjdiNzA0ODAuLjhjODgzOTM4MzIgMTAw NjQ0Cj4gPiA+ID4gPiAtLS0gYS9ody9ibG9jay94ZW4tcWRpc2suYwo+ID4gPiA+ID4gKysrIGIv aHcvYmxvY2sveGVuLXFkaXNrLmMKPiA+ID4gPiA+IEBAIC05LDYgKzksMTAgQEAKPiA+ID4gPiA+ ICAjaW5jbHVkZSAicWFwaS92aXNpdG9yLmgiCj4gPiA+ID4gPiAgI2luY2x1ZGUgImh3L2h3Lmgi Cj4gPiA+ID4gPiAgI2luY2x1ZGUgImh3L3hlbi94ZW4tcWRpc2suaCIKPiA+ID4gPiA+ICsjaW5j bHVkZSAic3lzZW11L2Jsb2NrZGV2LmgiCj4gPiA+ID4gPiArI2luY2x1ZGUgInN5c2VtdS9ibG9j ay1iYWNrZW5kLmgiCj4gPiA+ID4gPiArI2luY2x1ZGUgInN5c2VtdS9pb3RocmVhZC5oIgo+ID4g PiA+ID4gKyNpbmNsdWRlICJkYXRhcGxhbmUveGVuLXFkaXNrLmgiCj4gPiA+ID4gPiAgI2luY2x1 ZGUgInRyYWNlLmgiCj4gPiA+ID4gPgo+ID4gPiA+ID4gIHN0YXRpYyBjaGFyICp4ZW5fcWRpc2tf Z2V0X25hbWUoWGVuRGV2aWNlICp4ZW5kZXYsIEVycm9yICoqZXJycCkKPiA+ID4gPiA+IEBAIC0y Myw2ICsyNywxMSBAQCBzdGF0aWMgdm9pZCB4ZW5fcWRpc2tfcmVhbGl6ZShYZW5EZXZpY2UgKnhl bmRldiwKPiA+ID4gPiBFcnJvciAqKmVycnApCj4gPiA+ID4gPiAgewo+ID4gPiA+ID4gICAgICBY ZW5RZGlza0RldmljZSAqcWRpc2tkZXYgPSBYRU5fUURJU0tfREVWSUNFKHhlbmRldik7Cj4gPiA+ ID4gPiAgICAgIFhlblFkaXNrVmRldiAqdmRldiA9ICZxZGlza2Rldi0+dmRldjsKPiA+ID4gPiA+ ICsgICAgQmxvY2tDb25mICpjb25mID0gJnFkaXNrZGV2LT5jb25mOwo+ID4gPiA+ID4gKyAgICBE cml2ZUluZm8gKmRpbmZvOwo+ID4gPiA+ID4gKyAgICBib29sIGlzX2Nkcm9tOwo+ID4gPiA+ID4g KyAgICB1bnNpZ25lZCBpbnQgaW5mbzsKPiA+ID4gPiA+ICsgICAgaW50NjRfdCBzaXplOwo+ID4g PiA+ID4KPiA+ID4gPiA+ICAgICAgaWYgKCF2ZGV2LT52YWxpZCkgewo+ID4gPiA+ID4gICAgICAg ICAgZXJyb3Jfc2V0ZyhlcnJwLCAidmRldiBwcm9wZXJ0eSBub3Qgc2V0Iik7Cj4gPiA+ID4gPiBA QCAtMzAsMTMgKzM5LDEzNCBAQCBzdGF0aWMgdm9pZCB4ZW5fcWRpc2tfcmVhbGl6ZShYZW5EZXZp Y2UKPiA+ICp4ZW5kZXYsCj4gPiA+ID4gRXJyb3IgKiplcnJwKQo+ID4gPiA+ID4gICAgICB9Cj4g PiA+ID4gPgo+ID4gPiA+ID4gICAgICB0cmFjZV94ZW5fcWRpc2tfcmVhbGl6ZSh2ZGV2LT5kaXNr LCB2ZGV2LT5wYXJ0aXRpb24pOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyAgICBpZiAoIWNvbmYt PmJsaykgewo+ID4gPiA+ID4gKyAgICAgICAgZXJyb3Jfc2V0ZyhlcnJwLCAiZHJpdmUgcHJvcGVy dHkgbm90IHNldCIpOwo+ID4gPiA+ID4gKyAgICAgICAgcmV0dXJuOwo+ID4gPiA+ID4gKyAgICB9 Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArICAgIGlmICghYmxrX2lzX2luc2VydGVkKGNvbmYtPmJs aykpIHsKPiA+ID4gPiA+ICsgICAgICAgIGVycm9yX3NldGcoZXJycCwgImRldmljZSBuZWVkcyBt ZWRpYSwgYnV0IGRyaXZlIGlzIGVtcHR5Iik7Cj4gPiA+ID4gPiArICAgICAgICByZXR1cm47Cj4g PiA+ID4gPiArICAgIH0KPiA+ID4gPgo+ID4gPiA+IEhtLCB0aGUgY29kZSBiZWxvdyBzdWdnZXN0 cyB0aGF0IHlvdSBzdXBwb3J0IENELVJPTXMuIERvbid0IHlvdSB3YW50Cj4gPiB0bwo+ID4gPiA+ IHN1cHBvcnQgbWVkaWEgY2hhbmdlIGFzIHdlbGwgdGhlbj8gV2hpY2ggd291bGQgbWVhbiB0aGF0 IHlvdSBuZWVkIHRvCj4gPiA+ID4gc3VwcG9ydCBlbXB0eSBkcml2ZXMuCj4gPiA+Cj4gPiA+IFll cywgdGhhdCdzIGEgZ29vZCBwb2ludC4gSSBzaG91bGQgZ2V0IHJpZCBvZiB0aGF0IGNoZWNrLgo+ ID4gCj4gPiBPciByYXRoZXIgYXBwbHkgaXQgb25seSB0byBoYXJkIGRpc2tzLiBBbmQgZm9yIGVt cHR5IENEcywgeW91J2xsCj4gPiBwcm9iYWJseSBuZWVkIHRvIGNyZWF0ZSBhbiBlbXB0eSBCbG9j a0JhY2tlbmQgKHRoZSAhY29uZi0+YmxrIGNhc2UpLgo+ID4gSnVzdCBjaGVjayB0aGUgSURFIGFu ZC9vciBTQ1NJIGNvZGUgZm9yIGNvbXBhcmlzb24uCj4gPiAKPiA+ID4gPgo+ID4gPiA+ID4gKyAg ICBpZiAoIWJsa2NvbmZfYXBwbHlfYmFja2VuZF9vcHRpb25zKGNvbmYsIGJsa19pc19yZWFkX29u bHkoY29uZi0KPiA+ID4gPiA+YmxrKSwKPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmYWxzZSwgZXJycCkpIHsKPiA+ID4gPiA+ICsgICAgICAgIHJldHVy bjsKPiA+ID4gPiA+ICsgICAgfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKyAgICBpZiAoIWJsa2Nv bmZfZ2VvbWV0cnkoY29uZiwgTlVMTCwgNjU1MzUsIDI1NSwgMjU1LCBlcnJwKSkgewo+ID4gPiA+ ID4gKyAgICAgICAgcmV0dXJuOwo+ID4gPiA+ID4gKyAgICB9Cj4gPiA+ID4gPiArCj4gPiA+ID4g PiArICAgIGRpbmZvID0gYmxrX2xlZ2FjeV9kaW5mbyhjb25mLT5ibGspOwo+ID4gPiA+ID4gKyAg ICBpc19jZHJvbSA9IChkaW5mbyAmJiBkaW5mby0+bWVkaWFfY2QpOwo+ID4gPiA+Cj4gPiA+ID4g SXQncyBjYWxsZWQgbGVnYWN5IGZvciBhIHJlYXNvbi4gRG9uJ3QgdXNlIHRoaXMgaW4gbmV3IGRl dmljZXMuCj4gPiA+ID4KPiA+ID4gPiBUaGUgcHJvcGVyIHdheSBpcyB0byBoYXZlIHR3byBkaWZm ZXJlbnQgZGV2aWNlcyBmb3IgaGFyZCBkaXNrcyBhbmQgQ0RzCj4gPiA+ID4gKGxpa2Ugc2NzaS1o ZCBhbmQgc2NzaS1jZCkuCj4gPiA+Cj4gPiA+IC4uLm9yIHByZXN1bWFibHkgSSBjb3VsZCBoYXZl IGEgcHJvcGVydHk/IFRoZSBsZWdhY3kgaW5pdCBjb2RlIGNvdWxkCj4gPiA+IHRoZW4gc2V0IGl0 IGJhc2VkIG9uIHRoZSBkcml2ZSBpbmZvLgo+ID4gCj4gPiBUZWNobmljYWxseSB5ZXMsIGJ1dCB3 aHkgd291bGQgdGhhdCBiZSBhIGdvb2Qgd2F5IHRvIG1vZGVsIHRoaW5ncz8gSQo+ID4gbWVhbiwg aXQncyB0cnVlIHRoYXQgeGVuLXFkaXNrIGlzIG5vdCByZWFsIGhhcmR3YXJlLCBidXQgSSd2ZSBu ZXZlciBzZWVuCj4gPiBhbnkgaGFyZHdhcmUgdGhhdCBoYXMgYSBzd2l0Y2ggdG8gZGVjaWRlIHdo ZXRoZXIgaXQgc2hvdWxkIGJlaGF2ZSBhcyBhCj4gPiBDRCBkcml2ZSBvciBhIGhhcmQgZGlzay4K PiA+IAo+ID4gQm90aCBoYXZlIHZlcnkgZGlmZmVyZW50IGNoYXJhY3RlcmlzdGljcyAocmVhZC1v bmx5IHdpdGggcmVtb3ZhYmxlCj4gPiBtZWRpYSwgb3IgYSBzaW5nbGUgcmVhZC13cml0ZSBkaXNr KSwgYW5kIHRoZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbnMKPiA+IHVzZSB0d28gc2VwYXJhdGUg ZGV2aWNlcy4gU28gZXZlbiBpZiB5b3UncmUgbm90IGNvbnZpbmNlZCB0aGF0IHVzZXJzCj4gPiB3 aWxsIGNvbnNpZGVyIHRoZW0gZGlmZmVyZW50IGNvbmNlcHRzIChJIGFtOyBhbmQgaWYgdGhleSB3 ZXJlbid0Cj4gPiBkaWZmZXJlbnQgY29uY2VwdHMsIHlvdSB3b3VsZG4ndCBuZWVkIGFuIGlzX2Nk cm9tIHZhcmlhYmxlKSwgY29uc2lzdGVuY3kKPiA+IGlzIHN0aWxsIGEgZ29vZCB0aGluZy4KPiAK PiBPay4gSSdsbCBzcGxpdCB0aGUgZGV2aWNlIGFzIHlvdSBzdWdnZXN0Li4uIGl0IG1heSBtZWFu IGR1cGxpY2F0ZWQKPiBjb2RlLCBidXQgdGhlIGRhdGFwYXRoIGNhbiBzdGlsbCBiZSBjb21tb24u CgpJZiB5b3UgaGF2ZSBhIGxvb2sgYXQgSURFIGFuZCBTQ1NJLCB0aGV5IGRvbid0IHJlYWxseSBk dXBsaWNhdGUgYSBsb3Qgb2YKY29kZS4gQmFzaWNhbGx5IGl0J3MganVzdCBhIHNlY29uZCBRT00g Y2xhc3MgZGVmaW5pdGlvbiwgdGhlIHJlc3QgaXMKc2hhcmVkLiBFdmVuIHRoZSByZWFsaXplIGZ1 bmN0aW9ucyBhcmUgZXNzZW50aWFsbHkgc2hhcmVkLCB3aXRoIGp1c3QgdHdvCnNtYWxsIHdyYXBw ZXJzIGZvciBlYWNoIGRldmljZSB0eXBlIGFyb3VuZCB0aGUgY29tbW9uIGNvZGUuCgpLZXZpbgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0 cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58031) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gSJq1-0002ph-TS for qemu-devel@nongnu.org; Thu, 29 Nov 2018 05:46:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gSJq0-00071T-MT for qemu-devel@nongnu.org; Thu, 29 Nov 2018 05:46:29 -0500 Date: Thu, 29 Nov 2018 11:46:19 +0100 From: Kevin Wolf Message-ID: <20181129104619.GD4797@linux.fritz.box> References: <20181121151211.15997-1-paul.durrant@citrix.com> <20181121151211.15997-15-paul.durrant@citrix.com> <20181128163447.GF4222@dhcp-200-186.str.redhat.com> <20181129090046.GA4797@linux.fritz.box> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Subject: Re: [Qemu-devel] [PATCH 14/18] xen: add implementations of xen-qdisk connect and disconnect functions... List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paul Durrant Cc: "qemu-block@nongnu.org" , "qemu-devel@nongnu.org" , "xen-devel@lists.xenproject.org" , Stefano Stabellini , Anthony Perard , Max Reitz Am 29.11.2018 um 10:33 hat Paul Durrant geschrieben: > > -----Original Message----- > > From: Kevin Wolf [mailto:kwolf@redhat.com] > > Sent: 29 November 2018 09:01 > > To: Paul Durrant > > Cc: qemu-block@nongnu.org; qemu-devel@nongnu.org; xen- > > devel@lists.xenproject.org; Stefano Stabellini ; > > Anthony Perard ; Max Reitz > > Subject: Re: [PATCH 14/18] xen: add implementations of xen-qdisk connect > > and disconnect functions... > > > > Am 28.11.2018 um 17:40 hat Paul Durrant geschrieben: > > > > -----Original Message----- > > > > From: Kevin Wolf [mailto:kwolf@redhat.com] > > > > Sent: 28 November 2018 16:35 > > > > To: Paul Durrant > > > > Cc: qemu-block@nongnu.org; qemu-devel@nongnu.org; xen- > > > > devel@lists.xenproject.org; Stefano Stabellini > > ; > > > > Anthony Perard ; Max Reitz > > > > > > Subject: Re: [PATCH 14/18] xen: add implementations of xen-qdisk > > connect > > > > and disconnect functions... > > > > > > > > Am 21.11.2018 um 16:12 hat Paul Durrant geschrieben: > > > > > ...and wire in the dataplane. > > > > > > > > > > This patch adds the remaining code to make the xen-qdisk XenDevice > > > > > functional. The parameters that a block frontend expects to find are > > > > > populated in the backend xenstore area, and the 'ring-ref' and > > > > > 'event-channel' values specified in the frontend xenstore area are > > > > > mapped/bound and used to set up the dataplane. > > > > > > > > > > Signed-off-by: Paul Durrant > > > > > --- > > > > > Cc: Stefano Stabellini > > > > > Cc: Anthony Perard > > > > > Cc: Kevin Wolf > > > > > Cc: Max Reitz > > > > > --- > > > > > hw/block/xen-qdisk.c | 140 > > > > +++++++++++++++++++++++++++++++++++++++++++++ > > > > > hw/xen/xen-bus.c | 12 ++-- > > > > > include/hw/xen/xen-bus.h | 8 +++ > > > > > include/hw/xen/xen-qdisk.h | 12 ++++ > > > > > 4 files changed, 166 insertions(+), 6 deletions(-) > > > > > > > > > > diff --git a/hw/block/xen-qdisk.c b/hw/block/xen-qdisk.c > > > > > index 35f7b70480..8c88393832 100644 > > > > > --- a/hw/block/xen-qdisk.c > > > > > +++ b/hw/block/xen-qdisk.c > > > > > @@ -9,6 +9,10 @@ > > > > > #include "qapi/visitor.h" > > > > > #include "hw/hw.h" > > > > > #include "hw/xen/xen-qdisk.h" > > > > > +#include "sysemu/blockdev.h" > > > > > +#include "sysemu/block-backend.h" > > > > > +#include "sysemu/iothread.h" > > > > > +#include "dataplane/xen-qdisk.h" > > > > > #include "trace.h" > > > > > > > > > > static char *xen_qdisk_get_name(XenDevice *xendev, Error **errp) > > > > > @@ -23,6 +27,11 @@ static void xen_qdisk_realize(XenDevice *xendev, > > > > Error **errp) > > > > > { > > > > > XenQdiskDevice *qdiskdev = XEN_QDISK_DEVICE(xendev); > > > > > XenQdiskVdev *vdev = &qdiskdev->vdev; > > > > > + BlockConf *conf = &qdiskdev->conf; > > > > > + DriveInfo *dinfo; > > > > > + bool is_cdrom; > > > > > + unsigned int info; > > > > > + int64_t size; > > > > > > > > > > if (!vdev->valid) { > > > > > error_setg(errp, "vdev property not set"); > > > > > @@ -30,13 +39,134 @@ static void xen_qdisk_realize(XenDevice > > *xendev, > > > > Error **errp) > > > > > } > > > > > > > > > > trace_xen_qdisk_realize(vdev->disk, vdev->partition); > > > > > + > > > > > + if (!conf->blk) { > > > > > + error_setg(errp, "drive property not set"); > > > > > + return; > > > > > + } > > > > > + > > > > > + if (!blk_is_inserted(conf->blk)) { > > > > > + error_setg(errp, "device needs media, but drive is empty"); > > > > > + return; > > > > > + } > > > > > > > > Hm, the code below suggests that you support CD-ROMs. Don't you want > > to > > > > support media change as well then? Which would mean that you need to > > > > support empty drives. > > > > > > Yes, that's a good point. I should get rid of that check. > > > > Or rather apply it only to hard disks. And for empty CDs, you'll > > probably need to create an empty BlockBackend (the !conf->blk case). > > Just check the IDE and/or SCSI code for comparison. > > > > > > > > > > > + if (!blkconf_apply_backend_options(conf, blk_is_read_only(conf- > > > > >blk), > > > > > + false, errp)) { > > > > > + return; > > > > > + } > > > > > + > > > > > + if (!blkconf_geometry(conf, NULL, 65535, 255, 255, errp)) { > > > > > + return; > > > > > + } > > > > > + > > > > > + dinfo = blk_legacy_dinfo(conf->blk); > > > > > + is_cdrom = (dinfo && dinfo->media_cd); > > > > > > > > It's called legacy for a reason. Don't use this in new devices. > > > > > > > > The proper way is to have two different devices for hard disks and CDs > > > > (like scsi-hd and scsi-cd). > > > > > > ...or presumably I could have a property? The legacy init code could > > > then set it based on the drive info. > > > > Technically yes, but why would that be a good way to model things? I > > mean, it's true that xen-qdisk is not real hardware, but I've never seen > > any hardware that has a switch to decide whether it should behave as a > > CD drive or a hard disk. > > > > Both have very different characteristics (read-only with removable > > media, or a single read-write disk), and the existing implementations > > use two separate devices. So even if you're not convinced that users > > will consider them different concepts (I am; and if they weren't > > different concepts, you wouldn't need an is_cdrom variable), consistency > > is still a good thing. > > Ok. I'll split the device as you suggest... it may mean duplicated > code, but the datapath can still be common. If you have a look at IDE and SCSI, they don't really duplicate a lot of code. Basically it's just a second QOM class definition, the rest is shared. Even the realize functions are essentially shared, with just two small wrappers for each device type around the common code. Kevin