Btrfs
帶有 reflink 標誌的 cp:如何確定是否可以進行 reflink?
當我使用 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方法。