view tools/blktap/README.sept05 @ 6649:f59e0163540e

Updates to blktap driver and user code.

Mostly this makes the tap code work again with all of the changes that
have happened to the block drivers recently. We now use a shared page
per VBD (to the driver), and handle control information through the
store. The taplib interfaces have changed to be based around per-vbd
data structures that you can attach arbitrary handlers for.

There is also initial code for a user-level blockback driver, which
aims to get around the use of loopbacks for file-based vbds. Still
plenty of work to do here -- this is a working incremental checkin and
I'm away from this for the next four weeks.

Signed-off-by: Andrew Warfield <>
date Sun Sep 04 21:19:44 2005 +0000 (2005-09-04)
children b2f4823b6ff0 b35215021b32 9af349b055e5 3233e7ecfa9f
line source
1 The blktap has been rewritten substantially based on the current
2 blkback driver. I've removed passthrough support, as this is broken
3 by the move to grant tables and the lack of transitive grants. A
4 blktap VM is now only capable of terminating block requests in
5 userspace.
7 ublkback/ contains a _very_ initial cut at a user-level version of the block
8 backend driver. It gives a working example of how the current tap
9 interfaces are used, in particular w.r.t. the vbd directories in
10 xenstore.
12 parallax/ contains fairly recent parallax code. This does not run on
13 the changed blktap interface, but should only be a couple of hours
14 work to get going again.
16 All of the tricky bits are done, but there is plenty of cleaning to
17 do, and the top-level functionality is not here yet. At the moment,
18 the daemon ignores the pdev requested by the tools and opens the file
19 or device specified by TMP_IMAGE_FILE_NAME in ublkback.c.
21 TODO:
22 1. Fix to allow pdev in the store to specify the device to open.
23 2. Add support (to tools as well) to mount arbitrary files...
24 just write the filename to mount into the store, instead of pdev.
25 3. Reeximine blkif refcounting, it is almost certainly broken at the moment.
26 - creating a blkif should take a reference.
27 - each inflight request should take a reference on dequeue in blktaplib
28 - sending responses should drop refs.
29 - blkif should be implicitly freed when refcounts fall to 0.
30 4. Modify the parallax req/rsp code as per ublkback to use the new tap
31 interfaces.
32 5. Write a front end that allows parallax and normal mounts to coexist
33 6. Allow blkback and blktap to run at the same time.