Re: Linux 2.1.69..

Albert D. Cahalan (acahalan@cs.uml.edu)
Sat, 6 Dec 1997 15:18:17 -0500 (EST)


>> There is not much space in the inode. Some of the proposed additions
>> can share space with each other in unions. We seem to need:
>>
>> __u32 i_res_fork Regular files only? (POSIX privs)
>> __u32 i_dir_acl Directories only.
>> __u16 i_size_high Regular files only.
>> __u16 i_uid_high Field already exists for the Hurd.
>> __u16 i_gid_high Field already exists for the Hurd.
>> ????? i_???????? Compression, regular files only?
>> ????? i_???????? High-resolution time stamps. (how high?)
>>
>> It appears that _something_ can share space with i_dir_acl.
>> If not i_res_fork, then perhaps i_size_high and compression info.
>> If i_res_fork only applies to executables (does it?), then it can
>> share space with both i_dir_acl and i_size_high.
>
> Currently only executables use i_res_fork because only executables
> have capabilities. However, the "resource fork" was intended to
> keep other attributes such as MAC- and information labels.
> These extended attributes are needed for directories as well.

Could the resource fork also keep ACLs? Looking up separate ACL
data and MAC data seems like it might be slow. The space saving
would help a great deal. So maybe rename i_*_acl and put privs
in there.

i_size_high could actually be a __u8, which gets us a terabyte.

I really wish all these ext2 projects would show some evidence
of communication, like a common inode format. It could go in
the kernel now even, with the code setting new stuff to 0.

In case it is of interest, here is how a directory could start.
(security from Digital Unix, performance hack from *BSD)
Maybe this is read-only compatible.

__u32 dot_ino;
__u16 dot_reclen;
__u8 dot_type; /* mode>>12 for Gnu /bin/ls and fsck */
__u8 dot_namlen;
char dot_name[4];
__u32 dot_sl; /* sensitivity label */
__u32 dot_il; /* info label */
__u32 dotdot_ino;
__u16 dotdot_reclen;
__u8 dotdot_type; /* mode>>12 for Gnu /bin/ls and fsck */
__u8 dotdot_namlen;
char dotdot_name[4];
__u32 dotdot_sl; /* sensitivity label */
__u32 dotdot_il; /* info label */