예를 들어 reflink 옵션을 사용하여 파일을 복사하면
cp --reflink foo bar
cp 실행 프로세스의 어느 단계에서 기본 파일 시스템이 COW를 지원하는지 여부를 어떻게 결정합니까? 찾아보았지만 coreutils/src/cp.c
특정 시스템 호출/ioctl 또는 COW 기능을 결정하고 그에 따라 cp를 지정하거나 오류를 보고하는 다른 방법을 찾을 수 없습니다.
cp: 'foo'에서 'bar'를 복제할 수 없습니다: 잘못된 주소
요컨대, 나는 --reflink=auto
옵션이 어떻게 발생하는지에 대한 해결책을 찾고 있습니다.
답변1
이것암호이름이 지정된 함수를 호출합니다.clone_file
reflink 옵션이 "always" 또는 "auto"로 설정된 경우 reflink가 "always"이면 복제로 대체됩니다(또는 reflink가 꺼져 있으면 복제로 직접 이동). clone_file
~라고 불리는BTRFS_IOC_CLONE
I/W 제어. 따라서 시스템이 쓰기 중 복사를 지원하는지 여부를 테스트할 필요가 없으며 단지 BTRFS 방법을 시도하면 됩니다.