~ [ 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 ] ~

Diff markup

Differences between /Documentation/admin-guide/device-mapper/kcopyd.rst (Version linux-6.12-rc7) and /Documentation/admin-guide/device-mapper/kcopyd.rst (Version linux-5.5.19)


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