Subject: Re: as long as we're hitting FFS...
To: Ted Lemon <mellon@isc.org>
From: Bill Studenmund <wrstuden@nas.nasa.gov>
List: tech-kern
Date: 03/23/1999 21:02:57
On Tue, 23 Mar 1999, Ted Lemon wrote:

> 
> > Our thought about this was that these extra uses could come along later.
> > The extra space has a flags field. We didn't expect 32 extra things to
> > come along - if we're trying to cram that much into an inode, we have bad
> > feature creap.
> 
> Oh no, this is exactly the opposite of what I meant.   You've already
> said that you're going to leave the first 128 bytes of the i-node
> alone.   I don't think we all agree that's the right thing to do.
> You say:
> 
> > These flag bits would indicate what extra goddies are there, like
> > Y2038-safe dates
> 
> This doesn't belong in the opaque data field - that would simply be a
> duplication, and wouldn't work if you needed the opaque data for
> anything else, thus rendering the opaque data useless.   Fixing the
> times on the inode pretty much requires a change in the existing inode
> structure.

I AGREE! :-)

These flags aren't in the opaque data. :-) They are, though, in the large
inode.

Here's the defenition of the on-disk large inode:

/*
 * Large dinode.  Requires alternate superblock magic.
 */
struct dinode_large {
        struct dinode   dil_dinode;     /*   0: standard dinode */
#define DINODE_LARGE_APPSPEC_SIZE       96
                                        /* 128: opaque app. specific data */
        u_int8_t        dil_appspec[DINODE_LARGE_APPSPEC_SIZE];
        u_int32_t       dil_flags;      /* 224: flags */
                                        /* 228: reserved for future use */
        u_int8_t        dil_reserved[28];
};

All these flags live in dil_flags.

> > support for more than 32-bits worth of blocks (I think that was one
> > of the things Perry mentioned, but I'm not sure if our indirect
> > block system would support that?)
> 
> This is another thing that doesn't belong in the opaque data.

I agree.

> > support for acl's, etc. As features arrive, dump, restore, ffs, &
> > friends get taught about them.
> 
> That's great, but the opaque data isn't a place where any of these
> features can go - you already have a use for the opaque data.  Any one
> of these uses would prevent the other uses.  This simply doesn't make
> sense.

Right.

> > That way we don't have to decide now what we want to do, we leave space
> > for future growth. Also, we don't have to wait for these features to be
> > defined to move forward. :-)
> 
> Unfortunately, I think we do have to wait.   Please don't take this
> the wrong way.   I think you're on the right track here.   I just
> think it's premature to cast what you have in concrete right now.
> The pressure of having to decide on this prior to 1.4 is just not
> reasonable.

Well, the only thing we'd be casting in stone is: the existance of opaque
data, and that it's 96 bytes. :-)

It might make sense to move dil_flags to one of the "spare" fields in the
struct dinode.

Take care,

Bill