Proposed changes in NFS

yes that is also what i expected - but that’s not what people seem to think about it - i specifically asked if it was viewed as a entire tree snap-shot (like backup/restore) and the answer was yes.

@happybeing - would you be ok if it was like what fraser is saying ? (It’s not like a conventional snapshot tree backup/restore opreration - would you still prefer it ?)

@Fraser: Another point - with file only versioning, only one thing would grow - that particular file’s metadata vec.
So root/a/file-v0 then root/a/file-v1 would imply when you fetched SD::data(a) you would have fetched:

struct Dir {
    sub_dir: Vec<DirMetadata>,
    files: Vec<File>,
}
// where roughly
enum File {
    Versioned(Vec<FileMetadata>),
    Unversioned(FileMetadata),
}

So you can see, if a had 50 KiB of data (i.e. if sizeof(Dir-for-a) == 50 KiB) then new version of file would only cause a slight increment in size (previous size + size of new file’s metadata). Say the increase is 1 KiB. So now total size is 51 KiB. Assume next time it would be 52 KiB. But in dir versioning you would replicate the entire 50 KiB (as SD::data(a) is now SD::data(Vec<a>)) => new SD size ~ 101 KiB and probably kicked out of the SD. Next time 153 KiB etc. So in 3 updates for a file you would have reached 52 KiB in the file only versioning but 153 KiB in dir-versioning.