view Documentation/device-mapper/kcopyd.txt @ 524:7f8b544237bf

netfront: Allow netfront in domain 0.

This is useful if your physical network device is in a utility domain.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
author Keir Fraser <keir.fraser@citrix.com>
date Tue Apr 15 15:18:58 2008 +0100 (2008-04-15)
parents 831230e53067
line source
1 kcopyd
2 ======
4 Kcopyd provides the ability to copy a range of sectors from one block-device
5 to one or more other block-devices, with an asynchronous completion
6 notification. It is used by dm-snapshot and dm-mirror.
8 Users of kcopyd must first create a client and indicate how many memory pages
9 to set aside for their copy jobs. This is done with a call to
10 kcopyd_client_create().
12 int kcopyd_client_create(unsigned int num_pages,
13 struct kcopyd_client **result);
15 To start a copy job, the user must set up io_region structures to describe
16 the source and destinations of the copy. Each io_region indicates a
17 block-device along with the starting sector and size of the region. The source
18 of the copy is given as one io_region structure, and the destinations of the
19 copy are given as an array of io_region structures.
21 struct io_region {
22 struct block_device *bdev;
23 sector_t sector;
24 sector_t count;
25 };
27 To start the copy, the user calls kcopyd_copy(), passing in the client
28 pointer, pointers to the source and destination io_regions, the name of a
29 completion callback routine, and a pointer to some context data for the copy.
31 int kcopyd_copy(struct kcopyd_client *kc, struct io_region *from,
32 unsigned int num_dests, struct io_region *dests,
33 unsigned int flags, kcopyd_notify_fn fn, void *context);
35 typedef void (*kcopyd_notify_fn)(int read_err, unsigned int write_err,
36 void *context);
38 When the copy completes, kcopyd will call the user's completion routine,
39 passing back the user's context pointer. It will also indicate if a read or
40 write error occurred during the copy.
42 When a user is done with all their copy jobs, they should call
43 kcopyd_client_destroy() to delete the kcopyd client, which will release the
44 associated memory pages.
46 void kcopyd_client_destroy(struct kcopyd_client *kc);