'struct io_job'
이 구조체는 I/O 작업을 관리하기 위한 구조체이다. 개별 I/O 작업의 세부 정보를 저장하며, io_submit으로 system call을 할 때, 중요한 역할을 한다.
struct io_job {
struct iocb iocb;
struct flist_head list;
struct timeval start_time, stop_time;
long long offset;
size_t bytes;
int rw;
char *buf;
}
- 'struct iocb iocb'
- I/O 제어 블록 (control block)이다.
- 비동기 (Asynchronous) I/O 요청을 나타내고, 'libaio' library에서 사용된다.
- I/O 작업의 구체적인 세부 사항을 포함한다. (e.g., file descriptor, offset, buffer , etc.)
- 'struct flist_head list'
- linked list의 헤더이다.
- I/O 작업을 list 구조로 관리하는 데 사용된다.
- 여러 I/O 작업을 체인 형태로 관리할 수 있다.
- 'struct timeval start_time, stop_time'
- I/O 작업의 시작/종료 시간이다.
- I/O 작업의 latency 및 수행 시간을 측정하는 데 사용된다.
- 'long long offset'
- I/O 작업의 byte 단위 offset이다.
- file or device 내에서 I/O 작업이 시작되는 위치를 나타낸다.
- 'size_t bytes'
- I/O 작업의 크기 (unit byte)이다.
- read or write data의 크기를 나타낸다.
- 'int rw'
- I/O 작업이 읽기인지 쓰기인지를 나타낸다.
- read : 1, write : 0
- 'char *buf'
- I/O 작업에 사용되는 buffer이다.
- read 작업의 경우, data가 이 buffer에 저장된다.
- write 작업의 경우, 이 buffer의 데이터가 disk로 전송된다.