5 ms·
I believe you're wrong here. If you modify a hardlinked file, the FS will create new inodes under the hood, leaving existing ones intact. So it's like CoW. At
by koiueo 6d ago
I believe you're wrong here.
If you modify a hardlinked file, the FS will create new inodes under the hood, leaving existing ones intact. So it's like CoW. At least on ext4.
// Didn't double-check, but I've held this belief for over decade now, would be surprised to be proven wrong
- dreamcompiler 6d agoChanging a hardlinked file changes it everywhere, unless your specific editor happens to create a new inode. Thus it depends on your editor. CoW is similar except the new inode is created by the file system itself and is independent of the editor.
- epcoa 6d agoNo this is completely incorrect. The filesystem doesn’t break a link just if you open it. Your editor or higher level utility is free to do so (by unlinking and copying the data into a new file/inode), but this is not how the filesystem works.
- drdexebtjl 6d agoYou're about to be very surprised! echo old > a ln a b echo new > a cat a b # prints "new" and "new" Some programs like GNU sed [1] do create new inodes, but that is a property of the application, not the filesystem: echo old > a ln a b sed -i 'c new' a cat a b # prints "new" and "old" With reflinks in a CoW filesystem the inodes are different from the start, but share the same underlying blocks: echo old > a cp --reflink=always a b ls -i a b # prints different inodes echo new > a cat a b # prints "new" and "old" [1] https://www.gnu.org/software/sed/manual/html_node/Command_002dLine-Options.html#index-_002di https://www.gnu.org/software/sed/manual/html_node/Command_00...
- koiueo 6d agoCool, I love surprises :D Thanks for examples and especially the doc link. I don't normally use hard links, and for some reason was sure that's how they behave. Maybe my belief indeed stemmed from observing software which overwrites opened file with a new copy.