I think there is some general confusion on the relation between all four of these items scattered throughout the web. I wanted to get this straightened out.
- Are named forks the same as extended attributes? If not, what are extended attributes?
- Is the resource fork still implemented as a fork or as an extended attribute? If it is implemented some other way, then how?
- The metadata stored with a file (creator, date modified…) is there any relation or overlap in terminology between the other three mentioned. An example would be, are extended attributes just extra metadata pairs (key + value) stored on a file.
Any answers that can clarify how all four of these are interrelated, especially regarding the three question would be greatly appreciated, and contribute to settling disputes I see occurring across different resources.
Best Answer
Confusion arises from the fact that the relationship between these concepts is complex and has changed over time. In current systems the difference between a named fork and an extended attribute is largely academic.
For an extended attribute, the actual data is stored in the attribute data record.
For a fork, what's stored is the list of disk allocation blocks that contain the data. A resource fork is still a fork.
Basic file system metadata is stored in dedicated elements of the file system record itself, independent of the attributes and named fork references.