루프 장치는 WRITE_ZEROES를 지원하지 않습니다.

루프 장치는 WRITE_ZEROES를 지원하지 않습니다.

임시 파일을 지원하는 루프 장치에서 mkfs.ext4가 작동하지 않는 이상한 문제가 발생했습니다.

tmp_file="$(mktemp)"
fallocate -l 8M "$tmp_file"
loop="$(losetup --show -f "$tmp_file")"
mkfs.ext4 "$loop"

나도 dd if=/dev/zero그것을 시도했습니다 truncate. 같은 결과. 역설적이게도 장애는 애플리케이션 계층으로 전파되지 않습니다. mkfs 프로그램이 0으로 종료되었지만 출력 파일 시스템이 본질적으로 손상되었습니다. 이는 버퍼링/지연된 IO와 관련이 있을 수 있습니다.

나는 이것을 할 수 없습니까? 아니면 버그인가요? 커널 코드를 읽어보면 더 자세히 조사할 수도 있겠지만 먼저 전문가의 의견을 듣고 싶습니다.

고쳐 쓰다 이런. 죄송합니다. 커널 버전: 5.7.10-201.fc32.x86_64

커널 메시지.

[ 3213.106709] blk_update_request: operation not supported error, dev loop6, sector 16256 op 0x9:(WRITE_ZEROES) flags 0x1000800 phys_seg 0 prio class 0
[ 3213.107013] blk_update_request: operation not supported error, dev loop6, sector 196 op 0x9:(WRITE_ZEROES) flags 0x1000800 phys_seg 0 prio class 0
[ 3213.108396] blk_update_request: operation not supported error, dev loop6, sector 708 op 0x9:(WRITE_ZEROES) flags 0x1000800 phys_seg 0 prio class 0
[ 3213.110006] blk_update_request: operation not supported error, dev loop6, sector 160 op 0x9:(WRITE_ZEROES) flags 0x1000800 phys_seg 0 prio class 0
[ 3213.110158] blk_update_request: operation not supported error, dev loop6, sector 166 op 0x9:(WRITE_ZEROES) flags 0x1000800 phys_seg 0 prio class 0
[ 3213.110852] blk_update_request: operation not supported error, dev loop6, sector 710 op 0x9:(WRITE_ZEROES) flags 0x1000800 phys_seg 0 prio class 0
[ 3223.152191] blk_update_request: operation not supported error, dev loop7, sector 16256 op 0x9:(WRITE_ZEROES) flags 0x1000800 phys_seg 0 prio class 0
[ 3223.152619] blk_update_request: operation not supported error, dev loop7, sector 196 op 0x9:(WRITE_ZEROES) flags 0x1000800 phys_seg 0 prio class 0
[ 3223.153694] blk_update_request: operation not supported error, dev loop7, sector 708 op 0x9:(WRITE_ZEROES) flags 0x1000800 phys_seg 0 prio class 0
[ 3223.155495] blk_update_request: operation not supported error, dev loop7, sector 160 op 0x9:(WRITE_ZEROES) flags 0x1000800 phys_seg 0 prio class 0
[ 3223.155670] blk_update_request: operation not supported error, dev loop7, sector 166 op 0x9:(WRITE_ZEROES) flags 0x1000800 phys_seg 0 prio class 0
[ 3223.156233] blk_update_request: operation not supported error, dev loop7, sector 710 op 0x9:(WRITE_ZEROES) flags 0x1000800 phys_seg 0 prio class 0
[ 3568.666245] blk_update_request: operation not supported error, dev loop6, sector 16256 op 0x9:(WRITE_ZEROES) flags 0x1000800 phys_seg 0 prio class 0
[ 3568.666543] blk_update_request: operation not supported error, dev loop6, sector 196 op 0x9:(WRITE_ZEROES) flags 0x1000800 phys_seg 0 prio class 0
[ 3568.667546] blk_update_request: operation not supported error, dev loop6, sector 708 op 0x9:(WRITE_ZEROES) flags 0x1000800 phys_seg 0 prio class 0
[ 3568.669204] blk_update_request: operation not supported error, dev loop6, sector 160 op 0x9:(WRITE_ZEROES) flags 0x1000800 phys_seg 0 prio class 0
[ 3568.669380] blk_update_request: operation not supported error, dev loop6, sector 166 op 0x9:(WRITE_ZEROES) flags 0x1000800 phys_seg 0 prio class 0
[ 3568.669974] blk_update_request: operation not supported error, dev loop6, sector 710 op 0x9:(WRITE_ZEROES) flags 0x1000800 phys_seg 0 prio class 0

내가 말했듯이, mkfs는 성공적으로 실행되어야 합니다. 오류는 조용합니다.

답변1

방금 같은 문제라고 생각되는 문제에 직면했습니다. 나는 당신이 mktemp 그 자체는 아니지만 /tmp는 tmpfs 파일 시스템이라고 생각합니다. 확실히tmpfs는 지원하지 않습니다FALLOC_FL_ZERO_RANGE. 흥미롭게도 tmpfs에 마운트된 파일에서 mkfs.ext4를 문제 없이 실행할 수 있습니다. 그러나 동일한 tmpfs의 파일이 지원하는 루프 장치인 경우 문제가 발생합니다.

0 범위(대부분의 표준 범위)를 지원하는 파일 시스템에서 경로를 설정하는 옵션을 사용하여 -p이 문제를 해결할 수 있습니다.mktempTMPDIR

관련 정보