
Cuando copio un archivo usando la opción reflink, por ejemplo,
cp --reflink foo bar
cómo y en qué etapa de la ejecución de cp se determina si el sistema de archivos subyacente es compatible con COW. Intenté buscar coreutils/src/cp.c
pero no pude encontrar la llamada al sistema específica/ioctl o cualquier otro método que determine la capacidad COW y, en consecuencia, proceda a la ejecución de cp/informe el error:
cp: no se pudo clonar 'barra' de 'foo': dirección incorrecta
En resumen, estoy buscando cómo --reflink=auto
se resuelve la opción.
Respuesta1
Elcódigollama a una función llamadaclone_file
si la opción de enlace de referencia está configurada en “siempre” o “automático”, y vuelve a copiar si el enlace de referencia está en “siempre” (y va directamente a copiar si el enlace de referencia está desactivado). clone_file
llama alBTRFS_IOC_CLONE
ioctl. Por lo tanto, no se puede comprobar si el sistema admite la copia en escritura, simplemente intenta utilizar el método BTRFS.