Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

extend item data structure to better deal with large xattr-like things? #1681

Open
enkore opened this issue Oct 3, 2016 · 1 comment
Open
Projects
Milestone

Comments

@enkore
Copy link
Contributor

enkore commented Oct 3, 2016

Round-up of #51 #1337 #1342

  • xattrs (Linux, OSX, BSD) are currently stored in-line in the items, as a dictionary.
  • NTFS ADS are more file-like and are currently separate items altogether, using the Windows notation of file:stream.
  • SunOS fsattrs are not supported (but, as a quick summary: they essentially attach a completely independent FS namespace to every file).

On Linux xattrs are small by Kernel limitation. On OSX resource forks can be as big as normal files. Ditto for ADS.

There have been a couple ideas how to manage this better:

  1. Add "subitems" to items; a chunk ID list for items that are attached to this item, as

    • streams / resource forks
    • fsattrs

    This approach allows to encode even SunOS extremely advanced structure, and the added indirection avoids inflating the length of the items list unnecessarily.

  2. Use in-band signalling in paths. Because no OS accepts NUL in paths, this is the obvious choice for the ISB (and could be thus argued to be out-of-band, but in-stream, in fact).

    This is pretty much the same thing as 1.), with the advantage that older Borg correctly syncs to this and finds all chunks, while having the disadvantage that these items would be in the main items list, enlarging the length of it.

Either way allows for the semantics required and enables support for large xattrs/fsattrs/ADS. They also allow the proper case selection when extracting.

@enkore enkore added this to the 1.1 - near future goals milestone Oct 14, 2016
@enkore enkore removed this from the 1.1 - near future goals milestone Jun 4, 2017
@enkore enkore removed this from Borg 1.1 release pipe (Beta/RC) in Columns-of-issues Jun 4, 2017
@infectormp
Copy link
Contributor

just for info, kernel 4.13 get large xattr support https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e50e5129f384ae282adebfb561189cdb19b81cee

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
win32 port
advanced stuff
Development

No branches or pull requests

3 participants