cp com sinalizador reflink: como determinar se o reflink é possível?

cp com sinalizador reflink: como determinar se o reflink é possível?

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.cmas 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=autoacontece a resolução da opção.

Responder1

Ocódigochama uma função chamadaclone_filese 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_filechama 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.

informação relacionada