
Quando copio um arquivo usando a opção reflink, por exemplo,
cp --reflink foo bar
como e qual estágio da execução do cp determina se o sistema de arquivos abaixo suporta COW. Tentei pesquisar, coreutils/src/cp.c
mas não consegui encontrar a chamada de sistema/ioctl específica ou qualquer outro método que determine a capacidade do COW e, consequentemente, prossiga para a execução do cp/relata erros:
cp: falha ao clonar 'bar' de 'foo': endereço incorreto
Resumindo, estou procurando como --reflink=auto
acontece a resolução da opção.
Responder1
Ocódigochama uma função chamadaclone_file
se a opção reflink estiver definida como “always” ou “auto”, e volta para a cópia se o reflink estiver “always” (e vai diretamente para a cópia se o reflink estiver desativado). clone_file
chama oBTRFS_IOC_CLONE
ioctl. Portanto, não há como testar se o sistema suporta cópia na gravação, apenas tenta o método BTRFS.