]> xenbits.xensource.com Git - people/royger/linux.git/commit
xen-block: implement indirect descriptors xen-block-indirect
authorRoger Pau Monne <roger.pau@citrix.com>
Mon, 25 Feb 2013 16:24:54 +0000 (17:24 +0100)
committerRoger Pau Monne <roger.pau@citrix.com>
Wed, 27 Feb 2013 17:07:35 +0000 (18:07 +0100)
commit7069fe6144b6c871bd009288f6f1125681d17c38
treea6730ff259a6270f4d0cb3dc093def44950e7503
parente3ac88b1b363fd7091eebd04d9feee4374fbbba8
xen-block: implement indirect descriptors

Indirect descriptors introduce a new block operation
(BLKIF_OP_INDIRECT) that passes grant references instead of segments
in the request. This grant references are filled with arrays of
blkif_request_segment_aligned, this way we can send more segments in a
request.

The proposed implementation sets the maximum number of indirect grefs
(frames filled with blkif_request_segment_aligned) to 256 in the
backend and 64 in the frontend. The value in the frontend has been
chosen experimentally, and the backend value has been set to a sane
value that allows expanding the maximum number of indirect descriptors
in the frontend if needed.

The migration code has changed from the previous implementation, in
which we simply remapped the segments on the shared ring. Now the
maximum number of segments allowed in a request can change depending
on the backend, so we have to requeue all the requests in the ring and
in the queue and split the bios in them if they are bigger than the
new maximum number of segments.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: xen-devel@lists.xen.org
drivers/block/xen-blkback/blkback.c
drivers/block/xen-blkback/common.h
drivers/block/xen-blkback/xenbus.c
drivers/block/xen-blkfront.c
include/xen/interface/io/blkif.h