cp mit Reflink-Flag: Wie kann ermittelt werden, ob Reflink möglich ist?

cp mit Reflink-Flag: Wie kann ermittelt werden, ob Reflink möglich ist?

Wenn ich eine Datei mit der Option „Reflink“ kopiere, z. B.

cp --reflink foo bar

wie und in welcher Phase der Ausführung von cp bestimmt wird, ob das darunterliegende Dateisystem COW unterstützt. Ich habe versucht, nachzuschauen, coreutils/src/cp.ckonnte aber weder den spezifischen Systemaufruf/ioctl noch eine andere Methode finden, die die COW-Fähigkeit bestimmt und dementsprechend mit der Ausführung von cp fortfährt/Fehler meldet:

cp: „bar“ konnte nicht von „foo“ geklont werden: Ungültige Adresse

Kurz gesagt, ich möchte herausfinden, wie die Auflösung der --reflink=autoOption erfolgt.

Antwort1

DerCoderuft eine Funktion namensclone_filewenn die Reflink-Option auf „immer“ oder „auto“ eingestellt ist, und greift auf das Kopieren zurück, wenn Reflink auf „immer“ eingestellt ist (und geht direkt zum Kopieren über, wenn Reflink ausgeschaltet ist). clone_fileruft denBTRFS_IOC_CLONE ioctl. Es wird also nicht getestet, ob das System Copy-on-Write unterstützt, sondern es wird einfach die BTRFS-Methode ausprobiert.

verwandte Informationen