mirror of https://gitee.com/openkylin/qemu.git
xen: use native disk xenbus protocol if possible
The qdisk implementation is using the native xenbus protocol only in case of no protocol specified at all. As using the explicit 32- or 64-bit protocol is slower than the native one due to copying requests not by memcpy but element for element, this is not optimal. Correct this by using the native protocol in case word sizes of frontend and backend match. Signed-off-by: Juergen Gross <jgross@suse.com> Reviewed-by: Anthony PERARD <anthony.perard@citrix.com> Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
This commit is contained in:
parent
12d2c4184c
commit
4ada797b05
|
@ -976,14 +976,16 @@ static int blk_connect(struct XenDevice *xendev)
|
|||
blkdev->feature_persistent = !!pers;
|
||||
}
|
||||
|
||||
blkdev->protocol = BLKIF_PROTOCOL_NATIVE;
|
||||
if (blkdev->xendev.protocol) {
|
||||
if (strcmp(blkdev->xendev.protocol, XEN_IO_PROTO_ABI_X86_32) == 0) {
|
||||
blkdev->protocol = BLKIF_PROTOCOL_X86_32;
|
||||
}
|
||||
if (strcmp(blkdev->xendev.protocol, XEN_IO_PROTO_ABI_X86_64) == 0) {
|
||||
blkdev->protocol = BLKIF_PROTOCOL_X86_64;
|
||||
}
|
||||
if (!blkdev->xendev.protocol) {
|
||||
blkdev->protocol = BLKIF_PROTOCOL_NATIVE;
|
||||
} else if (strcmp(blkdev->xendev.protocol, XEN_IO_PROTO_ABI_NATIVE) == 0) {
|
||||
blkdev->protocol = BLKIF_PROTOCOL_NATIVE;
|
||||
} else if (strcmp(blkdev->xendev.protocol, XEN_IO_PROTO_ABI_X86_32) == 0) {
|
||||
blkdev->protocol = BLKIF_PROTOCOL_X86_32;
|
||||
} else if (strcmp(blkdev->xendev.protocol, XEN_IO_PROTO_ABI_X86_64) == 0) {
|
||||
blkdev->protocol = BLKIF_PROTOCOL_X86_64;
|
||||
} else {
|
||||
blkdev->protocol = BLKIF_PROTOCOL_NATIVE;
|
||||
}
|
||||
|
||||
blkdev->sring = xengnttab_map_grant_ref(blkdev->xendev.gnttabdev,
|
||||
|
|
Loading…
Reference in New Issue