본문으로 건너뛰기

raw_block PR Landscape (2026-06-17 기준)

[!tldr] 업무 관점 takeaway upstream/dev 기준 우리 팀 OPEN PR: #3636(P0 io_uring-batch, dev 대상), #3698(dispatch rollback fix), #3494(L3). #3274 머지 완료 (2026-06-11, dev HEAD 45c02cbe). L2는 P0에 흡수·폐기. V1(batched_read) 로컬 구현 완료·PR 미생성. 다음 큰 탐색: io_uring write coalescing (Tier 1 키 내부 헤더+페이로드 2N→N 커맨드, Step 0 측정 먼저).


2026-06-17 현재 열린 raw_block 관련 PR

PR제목영역비고
#3274Missing io_uring changes + nvme io_uring_cmdI/O 계층머지 완료 (2026-06-11, dev HEAD 45c02cbe) — dispatcher, fixed buffer, use_uring_cmd, MDTS split
#3636[Perf][RawBlock] Batch io_uring put_many writes into a single submissionI/O 배칭🆕 우리 팀 OPEN (2026-06-11, dev 대상, perf/rawblock-put-many-iouring-batch) — P0 _put_many_batch_io
#3698[Fix][RawBlock] Roll back put-task refs when dispatch scheduling failscorrectness🆕 우리 팀 OPEN (2026-06-16) — batched_submit_put_task dispatch 실패 시 ref/put_task 누수 롤백 fix
#3526[Perf][RawBlock] Reduce put_many lock count 4N→2NPR drop (2026-06-08) — NVMe 50µs 구간 <1% 이득
#3494[perf] Reduce lock contention in batched_remove우리 팀 (L3), OPEN 리뷰 중
#3480[Fix] TOCTOU accounting bug in delete()정합성= T1
#3527[Core] Restore LRU eviction for rust raw-block backendeviction
#3523[Fix] Tighten raw-block alignment validation정합성
#3519[Feat][RawBlock] Add BLKDISCARD startup supportNVMe TRIMdiscard() + blkdiscard_on_init
#3449raw_block: compress checkpoint payload체크포인트= D1 계열
#3226raw_block: incremental base+delta checkpoint format체크포인트= D1/D2 계열
#3305Add raw-block payload checksum validation정합성DRAFT
#3154Add Rust BlkioBlockDevice backend (libblkio I/O)I/O 대체엔진io_engine="libblkio"
#3272[Tool] flame-graph profiling into bench l2 adapter측정 도구io_uring 벤치 확장

우선순위 항목 ↔ PR 매핑

항목정의진행 PR상태
T1delete() TOCTOU 과대계상#3480✅ PR 있음
L1put_many key당 4→2 lock#3526PR drop (2026-06-08)
L2legacy batched_submit_put_task N-key 배치 분해🚫 폐기 — P0(iouring-batch)에 흡수 (2026-06-10). dispatch 실패 누수 fix만 #3698로 분리
P0put_many 내부 N-SQE 배치 submit (_put_many_batch_io)#3636PR OPEN (2026-06-11, dev 대상). 실 NVMe 실측 미검증
V1_validate_loaded_entries io_uring batched_read 병렬화— (perf/validate-batched-read)🔧 로컬 구현 완료. PR 미생성
L3RustRawBlockBackend.batched_remove 락 N→1#3494✅ PR 있음 (우리 팀)
#3698 fixbatched_submit_put_task dispatch 실패 시 ref/put_task 누수 롤백#3698PR OPEN (2026-06-16)
io_uring write coalescing키 내부 헤더+페이로드 2N→N 커맨드 (Tier 1)🔬 계획 단계. Step 0 실측(go/no-go) 먼저
D1/D2checkpoint 용량/threshold#3449, #3226✅ PR 있음
B2+P2_free_slots deque+set⏸ 미착수
P1_snapshot_state lock 내 copy 분리⏸ 미착수
D3단일 글로벌 lock 분리⏸ 미착수

#3274 머지 후 한계 (여전히 남음)

  • 🆕 _read_uring_cmd_buffers는 chunk마다 동기 read_uring (batched_read 미사용)
  • 🆕 MP/L2 경로(RawBlockL2Adapter)는 fixed buffer 등록 안 함 — 경고만, zero-copy 미적용
  • ✅ G2(dispatcher 호출자 다중 키 단위) → #3636으로 해결 중

#3274와 겹치지 않는 미착수 Gap

Gap내용난이도상태
G2dispatcher 호출자를 다중 키 단위로 (P0 핵심)중간#3636 OPEN
G3MP/L2 경로 fixed-buffer 등록 hook중간⏸ 미착수
G4단일 _lock N-way 샤딩 (D3)높음⏸ 미착수

다음 액션

  • #3636 리뷰 대응 / 실 NVMe 실측 완료 후 결과 업로드
  • #3698 리뷰 대응 (Gemini 제안: except BaseException 전환 여부 판단)
  • V1 PR 제출 (dev 리베이스 → pre-pr-check)
  • io_uring write coalescing Step 0 측정 스파이크 (2N→N 커맨드 go/no-go)
  • D3(G4) 착수 전 단일 lock 실측 contention 프로파일

2026-06-17 갱신: #3274 머지 완료, #3636/#3698 OPEN, L2 폐기·#3698로 split, io_uring write coalescing 계획 추가.