Btrfs

帶有 reflink 標誌的 cp:如何確定是否可以進行 reflink?

  • October 25, 2016

當我使用 reflink 選項複製文件時,例如,

cp --reflink foo bar

cp 執行的方式和階段決定了底層文件系統是否支持 COW。我嘗試查看coreutils/src/cp.c但找不到特定的系統呼叫/ioctl 或任何其他確定 COW 功能並因此繼續執行 cp/報告錯誤的方法:

cp:從 ‘foo’ 複製 ‘bar’ 失敗:地址錯誤

簡而言之,我正在尋找如何解決--reflink=auto選項。

如果 reflink 選項設置為“always”或“auto ” ,則程式碼呼叫一個函式clone_file,如果 reflink 為“always”,則回退到複製(如果 reflink 關閉,則直接進行複制)。clone_file呼叫BTRFS_IOC_CLONE ioctl。所以沒有測試系統是否支持寫時複製,它只是嘗試了BTRFS方法。

引用自:https://unix.stackexchange.com/questions/318705