[SPDK] spdk_bdev_read() 작동 방식

2024. 8. 26. 13:17·[ Laboratory ]/System Software & Storage

desc 블록 디바이스 디스크립터

ch io 작업에 사용할 채널

buf 데이터를 저장할 버퍼

offset 오프셋

nbytes 읽을 바이트 수 

cb 완료하면 호출될 콜백 함수

 

사용자가 spdk_bdev_read 함수를 호출하면

블록 디바이스 디스크립터에서 블록 디바이스 구조체를 가져오고

바이트 단위 오프셋과 크기를 블록 단위로 바꾸고

변환을 실패하면 오류를 반환하고

변환을 성공하면 spdk_bdev_read_blocks를 호출하여 읽기를 진행한다

 

 

spdk_bdev_read_blocks는

블록 단위로 데이터 읽는 함수이며

spdk_bdev_read_blocks_with_md 를 리턴한다

 

 

spdk_bdev_read_blocks_with_md 는

메타 데이터도 함께 읽을 수 있는 함수이다

 

spdk_bdev_read_blocks 에서 리턴할 때 

메타 베이터 버퍼를 NULL로 설정하였기 때문에

spdk_bdev_read_blocks_with_md 에서

spdk_bdev_read_blocks_with_md 를 다시 리턴할 때도

메타 데이터가 없이 단순히 io 버퍼만 담은 구조체를 넘겨주게 되고

 

실제로 io를 처리하는 spdk_bdev_read_blocks_with_md 함수로 연결된다

 

 

spdk_bdev_read_blocks_with_md 는

최종적으로 데이터를 읽는 함수이다

 

내부적으로 블록 디바이스에서 데이터를 읽고

필요할 때는 메타 데이터도 함께 읽는다

 

io 채널을 통해서 데이터를 처리하고

유효한 데이터인지 확인하고 

버퍼를 설정한 후에

데이터를 읽기 위해 블록 디바이스로 전달하는 bdev_io_submit 함수를 호출한다

 

728x90

'[ Laboratory ] > System Software & Storage' 카테고리의 다른 글

[SPDK/examples] spdk/build/examples 하위 예제 파일 실행하기  (0) 2024.10.10
[SPDK] spdk 빌드 및 example 실행  (4) 2024.10.10
[SPDK] blobfs/blobstore layer에서의 read 작업 처리  (1) 2024.08.27
[SPDK/NVMe] NVMe 마운트 방법  (1) 2024.08.06
[FIO] Flexible I/O tester FIO 설치 방법  (0) 2024.07.31
[Linux Kernel] 리눅스 커널 버전 업그레이드 빌드  (2) 2024.07.30
[SPDK/xNVMe] Getting Started xNVMe - xnvme 설치  (1) 2024.07.28
'[ Laboratory ]/System Software & Storage' 카테고리의 다른 글
  • [SPDK] spdk 빌드 및 example 실행
  • [SPDK] blobfs/blobstore layer에서의 read 작업 처리
  • [SPDK/NVMe] NVMe 마운트 방법
  • [FIO] Flexible I/O tester FIO 설치 방법
dev charlotte
dev charlotte
주 - 컴퓨터공학 / 복수 - 산업 보안
    250x250
  • dev charlotte
    int main() {
    dev charlotte
  • 전체
    오늘
    어제
    • 분류 전체보기
      • [ Laboratory ]
        • Paper review
        • Advanced Operating System
        • System Software & Storage
        • Lab etc
      • [ Computer Science ]
        • Algorithm_C++
        • Operating System
        • Information Retrieval
        • Database_sql
        • SW Engineering
        • Computer Network
        • JavaScript
        • Python
        • Data Structure
        • CS study
        • Distributed systems
      • [ Computer Security ]
        • Convergence Security
        • Web Security
        • PIMS
        • Network Security
        • Digital Finance
      • [ Artificial Intelligence ]
        • Trend
        • Seminar
      • [ 미래, 같이, LG ]
      • [ Development ]
        • [ Front-end ]
        • [ Back-end ] Spring 기본
        • [ Back-end ] Node.js
      • etc
        • 현대오토에버 스마트 모빌리티 공학 체험 교육
      • It's me
  • 블로그 메뉴

    • 링크

      • GitHub
    • 공지사항

    • 인기 글

    • 태그

      싸피
      hotstorage
      프로그래머스 c++
      비전공자 코딩
      MySQL
      소프트웨어 공학
      ssafy 13기
      공대생 대외활동
      프로그래머스 코테
      대학생 대외활동
      spdk
      데이터베이스
      스마트모빌리티공학체험교육
      코드잇
      코딩 교육
      프로그래밍 언어론
      프로그래머스
      싸피 13기
      SQL
      SSAFY
      백준
      티스토리챌린지
      자바스크립트
      현대오토에버
      현대오토에버 스마트모빌리티
      코딩 인강
      오블완
      현대오토에버 스마트 모빌리티
      프로그래머스 입문
      SQL 쿼리
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.4
    dev charlotte
    [SPDK] spdk_bdev_read() 작동 방식
    상단으로

    티스토리툴바