REQUEST

REQUEST

REQUEST 로그

로컬 I/O request의 생성, 상태 전이, 재시도, 완료와 제거에 해당하는 로그를 현재 코드 기준으로 정리합니다.

분류 상수: BSR_LC_REQUEST

이 카테고리에서 확인할 사항

  • 출력 맥락: 로컬 I/O request의 생성, 상태 전이, 재시도, 완료와 제거

  • 우선 점검: request 주소, sector+size, state bit, completion/net queue reference와 재시도 여부

  • 플랫폼 분기: 같은 인덱스가 여러 행이면 Linux/Windows, 호환성 또는 실행 조건에 따른 메시지 변형입니다.

로그 목록

로그 인덱스

로그 수준

현재 코드 메시지

상세 의미 및 영향

비고

코드 위치

로그 인덱스

로그 수준

현재 코드 메시지

상세 의미 및 영향

비고

코드 위치

1

err

Set the default(%d) value because the max_req_write_cnt(%d) setting is incorrect.

max-req-write-cnt 설정이 최소(10000)와 최대(1000000) 기준에 맞지 않습니다. 기본(100000) 으로 설정 됩니다.

bsr 최대 I/O 요청은 resource 설정중 options 섹션에서 max_req_write_cnt 으로 설정 할 수 있습니다.

bsr/bsr_int.h:4440

2

err

Ignore restart transfer because of no device assigned in request.

완료 되지 않은 요청에 대해 상태 재설정 시 device 정보를 찾을 수 없어 재요청을 하지 못했습니다. 재요청을 하지 못한 요청은 완료되지 않을 수 있습니다.

로그에서 device 할당, 해제 시점 확인이 필요합니다.

bsr/bsr_main.c:722

3

err

req(%p) completion reference(%d) request state(%x)

이미 완료 된 요청을 재요청 했을 수 있습니다.

debug 로그 출력 후 요청처리에 대한 분석이 필요합니다.

bsr/bsr_main.c:4125

4

info

The request was not completed, so we proceeded with the request again. request(%p) request net queue reference (%d)

요청을 재시도할때 출력됩니다.

  •  

bsr/bsr_main.c:4172

5

err

%s => Failed to find request 0x%llx, sector %llus

해당하는 요청을 찾지 못했습니다. 피어 노드와 재연결됩니다.

  •  

bsr/bsr_receiver.c:3044

6

err

Request Buffer Overflow Occurred

최대 I/O 요청(max-req-write-cnt)를 초과했습니다. 설정에 따라서 재연결 또는 대기가 발생하며 대기 시 I/O 요청이 지연됩니다.

bsr 최대 I/O 요청 초과 후 동작은 options 섹션에서 on-req-write-congestion 으로 설정 할 수 있습니다.

bsr/bsr_receiver.c:11682

7

err

request destroy Logic BUG. request state(0:%x, %d:%x), completion reference(%d)

  •  

  •  

bsr/bsr_req.c:259

8

err

request destroy Logic BUG. request state(%x), completion reference(%d)

요청 제거 시 완료 되지 않은 요청이므로 제거하지 않습니다. 로직 버그로 예상됩니다.

  •  

bsr/bsr_req.c:268

9

err

request destroy Logic BUG. interval empty, but request state(0x%x), sect(%llu), size(%u)

요청 제거 시 interval 비어있습니다. 로직 버그로 예상됩니다.

  •  

bsr/bsr_req.c:296

10

info

Found disappeared out-of-sync, need to send new one(sector(%llu), size(%u))

요청 완료 시 해당 영역이 out of sync면 피어 노드들에게 out of sync을 전송합니다.

  •  

bsr/bsr_req.c:351

15

err

Failed to complete request(%p) due to logic bug. request state(0:%x, %d:%x), completion reference (%d)

로직 버그로 인해 요청을 완료하지 못했습니다.

로그에 출력 된 request state, completion reference 확인이 필요합니다.

bsr/bsr_req.c:795

16

err

Failed to complete request(%p) due to logic bug. request state(%x), completion reference(%d)

로직 버그로 인해 요청을 완료하지 못했습니다.

로그에 출력 된 request state, completion reference 확인이 필요합니다.

bsr/bsr_req.c:804

17

err

Failed to complete request(%p) due to logic bug, master block I/O is NULL.

로직 버그로 인해 요청을 완료하지 못했습니다.

  •  

bsr/bsr_req.c:811

18

err

request state modify Logic BUG. 0: state(%x -> %x), idx %d state(%x -> %x), refcount = %d, should be >= %d

요청 상태 변경이 정상적이지 않습니다. 로직 버그로 인해 요청을 완료하지 못했습니다.

로그에 출력 된 state, refcount, should be 등 확인이 필요합니다.

bsr/bsr_req.c:1286

19

err

Failed to modify requst status due to logic bug. event(%d)

로직 버그로 요청 상태를 변경하지 못했습니다.

로그에 출력 된 변경 상태 확인이 필요합니다.

bsr/bsr_req.c:1441

20

err

FIXME, barrier came in before all requests were acked. (%p)

모든 요청이 처리되기 전에 barrier acked를 수신했습니다. 로직 버그로 예상됩니다.

  •  

bsr/bsr_req.c:1429

23

warn

FIXME: unexpected node id(%d)

알수없는 노드 ID의 요청 상태를 얻는데 실패했습니다. 로직 버그로 예상됩니다.

  •  

bsr/bsr_int.h:2428

24

warn

Digest mismatch, buffer modified by upper layers during write: %llus +%u

전송 데이터의 digest가 불일치 합니다. 쓰기 중 상위 계층에 의해 수정된 버퍼 입니다.

  •  

bsr/bsr_main.c:3339

25

warn

Remote failed to finish a request within %ums > ko-count (%u) * timeout (%u * 0.1s)

피어 노드에서 지정 시간내에 요청을 완료하지 못했습니다.

로그에 출력 된 시간들의 확인이 필요합니다.

bsr/bsr_req.c:3547

26

warn

We did not send a P_BARRIER for %ums > ko-count (%u) * timeout (%u * 0.1s); bsr kernel thread blocked?

P_BARRIER을 전송하지 않았습니다. thread block 으로 인해 보내지 못했을 수 있습니다.

Protocol A 사용 시 이미 복제 데이터의 ACK를 받았으나 BARRIER ACK를 받지 못했습니다.

bsr/bsr_req.c:3559

27

warn

Remote failed to answer a P_BARRIER (sent at %lu jif; now=%lu jif) within %ums > ko-count (%u) * timeout (%u * 0.1s)

피어 노드에서 P_BARRIER 응답을 지정 시간내에 보내지 않았습니다.

로그에 출력 된 시간 확인이 필요합니다.

bsr/bsr_req.c:3593

28

warn

Local backing device failed to meet the disk-timeout

로컬 backing device가 disk의 대기 시간을 초과했습니다. diskless 상태가 설정됩니다.

  •  

bsr/bsr_req.c:3673

29

debug

pi-cmd 0x%x(%s) sect:0x%llx sz:%d

  •  

  •  

bsr/bsr_receiver.c:11012

30

debug

do tl_release

  •  

  •  

bsr/bsr_receiver.c:11295

31

debug

(%s) completion_ref: put=%d !!!

  •  

  •  

bsr/bsr_req.c:908

32 (1/2 변형)

debug

(%s) completion_ref=%d. No complete req yet! sect=0x%llx sz=%d

  •  

  •  

bsr/bsr_req.c:918

32 (2/2 변형)

warn

ASSERTION %p, req->completion_ref (%d) < 0

  •  

  •  

bsr/bsr_req.c:915

33

debug

sect=0x%llx sz=%d done!!!

  •  

  •  

bsr/bsr_req.c:932

35

debug

(%s) req_mod: before __req_mod! IRQL(%d)

  •  

  •  

bsr/bsr_req.h:421

36

debug

(%s) req_mod: after __req_mod! IRQL(%d)

  •  

  •  

bsr/bsr_req.h:426

37

err

Ignore restart transfer because of no peer device assigned

  •  

  •  

bsr/bsr_main.c:729

38

info

bio(%p) split write to bio has already been requested(%p, %p), so a bitmap operation is waiting, but proceed with bio's write.

비트맵 작업을 대기 중이지만 신규 bio의 분할 된 bio가 이미 쓰기 요청 중이므로 신규 bio의 쓰기도 요청합니다.

일부 리눅스(sle12sp2)에서 bio가 분할되어 처리 될 때REQ_NOMERGE에 대한 bio가 독립적으로 처리되지 않아 이를 위해 추가한 로직으로 인해 출력되는 로그 입니다.

bsr/bsr_int.h:4413

39

warn

in_flight stuck: ap=%lld, rs=%lld, timeout

  •  

  •  

bsr/bsr_req.c:3727

공통 진단 순서

  1. 로그 수준과 최초 발생 시점을 기준으로 오류·경고 이전의 정상 상태를 확인합니다.

  2. 메시지의 객체, node/minor, sector/size, state와 오류 코드를 같은 시각의 로그와 연결합니다.

  3. request 주소, sector+size, state bit, completion/net queue reference와 재시도 여부를 대조해 직접 실패 지점과 후속 영향 범위를 구분합니다.

  4. 후속 성공·완료·상태 전이 로그가 없거나 같은 인덱스가 반복되면 관련 코드 위치와 플랫폼 분기를 확인합니다.