cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

kcopyd.rst (1911B)


      1======
      2kcopyd
      3======
      4
      5Kcopyd provides the ability to copy a range of sectors from one block-device
      6to one or more other block-devices, with an asynchronous completion
      7notification. It is used by dm-snapshot and dm-mirror.
      8
      9Users of kcopyd must first create a client and indicate how many memory pages
     10to set aside for their copy jobs. This is done with a call to
     11kcopyd_client_create()::
     12
     13   int kcopyd_client_create(unsigned int num_pages,
     14                            struct kcopyd_client **result);
     15
     16To start a copy job, the user must set up io_region structures to describe
     17the source and destinations of the copy. Each io_region indicates a
     18block-device along with the starting sector and size of the region. The source
     19of the copy is given as one io_region structure, and the destinations of the
     20copy 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
     28To start the copy, the user calls kcopyd_copy(), passing in the client
     29pointer, pointers to the source and destination io_regions, the name of a
     30completion 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
     39When the copy completes, kcopyd will call the user's completion routine,
     40passing back the user's context pointer. It will also indicate if a read or
     41write error occurred during the copy.
     42
     43When a user is done with all their copy jobs, they should call
     44kcopyd_client_destroy() to delete the kcopyd client, which will release the
     45associated memory pages::
     46
     47   void kcopyd_client_destroy(struct kcopyd_client *kc);