cp con bandera reflink: ¿cómo determinar si es posible reflink?

cp con bandera reflink: ¿cómo determinar si es posible reflink?

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.cpero 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=autose resuelve la opción.

Respuesta1

Elcódigollama a una función llamadaclone_filesi 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_filellama 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.

información relacionada