와 함께 작동합니다. 무엇 내 전문가 것은입니다 :방법 ext4에 내가 ext4를 파일 시스템의 적절한 사용을 테스트하고, 최근 fallocate
시스템이 충돌 할 때, 데이터 쓰기 반환 확인을 할 수없는 손실,하지만 metadate 캔이었다.
내 용도는 다음과 같습니다 1. centin 공간 할당을 위해 fallocate 호출 fallocate (fd, 0, 0, 4 * 1024 * 1024); // 4메가바이트
2. 전화 fsync를 (FD) 할 데이터와 메타 데이터 무작위 4K 크기의 파일을 작성하는
3. 다음 내가 함수를 호출 디스크에 대한 쓰기 (임의의 데이터를하지만 0). O_DRICT 플래그를 사용하지만 fsync를 호출하지 않습니다. 반환 기록 확인 오프셋을 기록합니다.
4. 기록 된 그 오프셋. 하지만 일부 오프셋, 4k 데이터를 읽을 0에서 찾을. 그것은 오프셋을 홀 파일처럼 사용되지 않는 것을 의미합니다. 이 null를 돌려 읽을 때 파일의 메타 데이터를 fallocate를 호출하고 fsync를하는 것은 여전히 보인다 후 일부 블록을 나타내는 이유 < 1.
그렇게 사용되지 않습니다
내 질문이다. 그것은 내 이해입니다.
< 2. 다른 API를 호출하여 파일이있는 공간을 할당 할 때 구멍이 아닌지 확인한 다음 O_DIRECT로 데이터를 반환하면 데이터가 손실되지 않도록 확인할 수 있습니다.
Thanks.