Extended File Attributes, how can we keep them around? .fr

Feb 7, 2010 - Only transport solution, no semantic interop (ex. no common mime type). ○ Not totally idempotent. ○ Some xattrs might be too large to be kept ...
208KB taille 10 téléchargements 414 vues
Extended File Attributes, how can we keep them around?

FOSDEM 2010 th Sunday 7 February 2010 François Revol

© François Revol (CC-BY-SA) Alt-OS devroom - FOSDEM 2010

2010-02-07

1

File Meta Data ? ●

Data about data ●



Not part of the fle content

Many kinds

© François Revol (CC-BY-SA) Alt-OS devroom - FOSDEM 2010

2010-02-07

2

Many kinds of fle meta data ●

Owner (uid/gid) & permissions bits (POSIX, DOS)



Dates (ctime, mtime, atime…)



Access Control Lists



Resource forks (HFS)



Names streams (NTFS)



Extended Attributes (EA or xattrs) ●

BFS, XFS, ext2… © François Revol (CC-BY-SA) Alt-OS devroom - FOSDEM 2010

2010-02-07

3

File System support for xattrs

© François Revol (CC-BY-SA) Alt-OS devroom - FOSDEM 2010

2010-02-07

4

FAT16/32 ●

EA support on FAT16 in OS/2



No support at all in FAT32 ●

Must be emulated

© François Revol (CC-BY-SA) Alt-OS devroom - FOSDEM 2010

2010-02-07

5

NTFS ●

Named streams ●



foo.txt:bar

Extended Attributes ($EA) ●

Totally unused in Windows™

© François Revol (CC-BY-SA) Alt-OS devroom - FOSDEM 2010

2010-02-07

6

SMB (CIFS) ●

EA as extension for OS/2



Linux smbfs supports XATTR (option)





Only user.*



Without mangling

Samba stores DOS permission bits in xattrs when possible

© François Revol (CC-BY-SA) Alt-OS devroom - FOSDEM 2010

2010-02-07

7

NFS ●

NFSv4 supports xattrs

© François Revol (CC-BY-SA) Alt-OS devroom - FOSDEM 2010

2010-02-07

8

Linux ●

XFS ●

xattrs supported –



64kB / fle ???

Ext2/3/4 ●

xattrs, but size limit –

1block / fle



ReiserFS ?



JFS ? © François Revol (CC-BY-SA) Alt-OS devroom - FOSDEM 2010

2010-02-07

9

BFS (BeOS, Haiku) ●

Supports xattrs ●

Typed (4CC)



Indexable



4GB/xattr or more



Small section optimization (inode block)

© François Revol (CC-BY-SA) Alt-OS devroom - FOSDEM 2010

2010-02-07

10

API & Usage

© François Revol (CC-BY-SA) Alt-OS devroom - FOSDEM 2010

2010-02-07

11

Linux ●

Several API with diferent semantics



Now settled to a withdrawn POSIX draft



Split namespace (user.* system.* ...)



Mostly used only to implement ACL



API garantees atomicity



Still no xattr support enabled by default in most distros !!! © François Revol (CC-BY-SA) Alt-OS devroom - FOSDEM 2010

2010-02-07

12

(Open)Solaris ●

A fle can have a whole hierarchy of xattrs, which can be used as fles (runat)

© François Revol (CC-BY-SA) Alt-OS devroom - FOSDEM 2010

2010-02-07

13

BeOS & Haiku ●

API allows accessing 4GB at 64bit ofsets ●



Cannot guarantee atomicity

Used everywhere ●

MIME type



Contacts (0byte People fles)



Bookmarks (URL)



Mails (To, From, …)



Music (Genre, Album...) © François Revol (CC-BY-SA) Alt-OS devroom - FOSDEM 2010

2010-02-07

14

Problem ●



How do I keep my xattrs when I ●

Zip fles in Haiku, Unzip from GNU/Linux



Move them to an HFS



Read them from HFS in ReactOS



Copy them to NTFS or FAT



Read them back from Haiku ?

Not a new question

© François Revol (CC-BY-SA) Alt-OS devroom - FOSDEM 2010

2010-02-07

15

Possible solution ●

Need for an interoperable scheme



Common canonical naming







Each OS should defne its own mangling in the OS-specifc namespace Each OS implements it in its native flesystems Fallback fle-based storage ●

cf. FreeDesktop.org spec ? © François Revol (CC-BY-SA) Alt-OS devroom - FOSDEM 2010

2010-02-07

16

Other problems ●

Only transport solution, no semantic interop (ex. no common mime type)



Not totally idempotent



Some xattrs might be too large to be kept

© François Revol (CC-BY-SA) Alt-OS devroom - FOSDEM 2010

2010-02-07

17

Any better idea ? ●

mailto:[email protected]

© François Revol (CC-BY-SA) Alt-OS devroom - FOSDEM 2010

2010-02-07

18