# block_copy_request Struct Reference

`#include <copy.h>`

Collaboration diagram for block_copy_request:

[legend]

## Data Fields
struct block_device * | source
| Source of the copy operation.
struct block_device * | target
| Target of the copy operation.
block_addr_t | source_start
| First block of the source to copy from.
block_addr_t | target_start
| First block of the target to copy to.
uint32_t | length
| Number of blocks to copy.
uint32_t | total_blocks_copied
| Number of blocks copied so far (passed to callbacks).
int | status
| Status of the copy operation.
int | source_status
| Status of the copy operation on source.
int | dest_status
| Status of the copy operation on destination.
void(* | completion_callback )(struct block_copy_request *req, uint32_t blocks_copied, void *data)
| Callback called when the operation is completed.
void(* | progress_callback )(struct block_copy_request *req, uint32_t blocks_copied, void *data)
| Callback called after each successful write operation.
void * | data
| Data passed to the callback.
struct block_request * | read_req
| Block request used when reading from source.
struct block_request * | write_req
| Block request used when writing to target.
struct slist | buffer_list
| List of buffers used for the transfer.
uint32_t | blocks_allocated
| Total number of blocks allocated as buffers.
size_t | block_size
| Block size of the devices (must match).
size_t | blocks_pr_buf
| Numbers of blocks that fit into one buffer.
struct workqueue_item | work
| Workqueue item used when adding work to the workqueue.

## Detailed Description

Structure holding a description of a copy operation.

Definition at line 59 of file copy.h.

## Field Documentation

size_t block_copy_request::block_size

Block size of the devices (must match).

Definition at line 95 of file copy.h.

Referenced by block_copy_alloc(), block_copy_set_dest(), and block_copy_set_source().

uint32_t block_copy_request::blocks_allocated

Total number of blocks allocated as buffers.

Definition at line 93 of file copy.h.

Referenced by block_copy_alloc().

size_t block_copy_request::blocks_pr_buf

Numbers of blocks that fit into one buffer.

Definition at line 97 of file copy.h.

Referenced by block_copy_alloc().

struct slist block_copy_request::buffer_list`[read]`

List of buffers used for the transfer.

Definition at line 91 of file copy.h.

Referenced by block_copy_alloc(), and block_copy_free().

void(* block_copy_request::completion_callback)(struct block_copy_request *req, uint32_t blocks_copied, void *data)

Callback called when the operation is completed.

Referenced by block_copy_set_completion_callback().

void* block_copy_request::data

Data passed to the callback.

Definition at line 85 of file copy.h.

Referenced by block_copy_alloc().

int block_copy_request::dest_status

Status of the copy operation on destination.

Definition at line 77 of file copy.h.

uint32_t block_copy_request::length

Number of blocks to copy.

Definition at line 69 of file copy.h.

Referenced by block_copy_alloc().

void(* block_copy_request::progress_callback)(struct block_copy_request *req, uint32_t blocks_copied, void *data)

Callback called after each successful write operation.

Referenced by block_copy_set_progress_callback().

struct block_request* block_copy_request::read_req`[read]`

Block request used when reading from source.

Definition at line 87 of file copy.h.

Referenced by block_copy_free(), block_copy_set_source(), and block_copy_submit().

struct block_device* block_copy_request::source`[read]`

Source of the copy operation.

Definition at line 61 of file copy.h.

Referenced by block_copy_free(), block_copy_set_source(), and block_copy_submit().

block_addr_t block_copy_request::source_start

First block of the source to copy from.

Definition at line 65 of file copy.h.

Referenced by block_copy_set_source().

int block_copy_request::source_status

Status of the copy operation on source.

Definition at line 75 of file copy.h.

int block_copy_request::status

Status of the copy operation.

Definition at line 73 of file copy.h.

struct block_device* block_copy_request::target`[read]`

Target of the copy operation.

Definition at line 63 of file copy.h.

Referenced by block_copy_free(), block_copy_set_dest(), and block_copy_submit().

block_addr_t block_copy_request::target_start

First block of the target to copy to.

Definition at line 67 of file copy.h.

Referenced by block_copy_set_dest().

uint32_t block_copy_request::total_blocks_copied

Number of blocks copied so far (passed to callbacks).

Definition at line 71 of file copy.h.

Referenced by block_copy_submit().

struct workqueue_item block_copy_request::work`[read]`

Workqueue item used when adding work to the workqueue.

Definition at line 99 of file copy.h.

struct block_request* block_copy_request::write_req`[read]`

Block request used when writing to target.

Definition at line 89 of file copy.h.

Referenced by block_copy_free(), block_copy_set_dest(), and block_copy_submit().

The documentation for this struct was generated from the following file:

- include/block/copy.h