~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/admin-guide/device-mapper/kcopyd.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

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

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php