On Tue, Sep 01, 2020 at 10:52:05AM -0400, Theodore Y. Ts'o wrote: > On Tue, Sep 01, 2020 at 01:34:05PM +1000, Dave Chinner wrote: > > > > But, unlike your implication that this is -really complex and hard > > to do-, it's actually relatively trivial to do with the XFS > > implementation I mentioned as each ADS stream is a fully fledged > > inode that can point to shared data extents. If you can do data > > manipulation on a regular inode, you'll be able to do it on an ADS, > > and that includes copying ADS streams via reflink. > > Is the reflink system call on a file with ADS's atomic, or not? What > if there are a million files is ADS hierarchy which is 100 > subdirectories deep in some places, comprising several TB's worth of > data? Is that all going to fit in a single XFS transaction? What if > you crash in the middle of it? Is a partially reflinked copy of an > ADS file OK? Or a reflinked ADS file missing some portion of the > alternate data streams? Oh, and if the answer is that the ADS inodes should be reflinked individually in userspace, wonderful! An ADS inode could then just be a directory, like it was in the NeXT operating system, and copying an ADS file could *also* be done in userspace, as a cp -r. :-) That's fine too, and keeps the file system completely out of it. :-) - Ted