About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / device-mapper / kcopyd.txt

Custom Search

Based on kernel version 4.13.3. Page generated on 2017-09-23 13:54 EST.

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);
Hide Line Numbers
About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Information is copyright its respective author. All material is available from the Linux Kernel Source distributed under a GPL License. This page is provided as a free service by mjmwired.net.