[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: node types etc.



On Mon, Jan 15, 2001 at 05:51:00PM +0000, David Woodhouse wrote:
> Please comment.
> 
> 
> /* Compatibility flags. */
> #define CJFFS_COMPAT_MASK 0xc000      /* What do to if an unknown nodetype is found */
> 
> /* INCOMPAT: Fail to mount the filesystem */
> #define CJFFS_FEATURE_INCOMPAT 0xc000
> /* ROCOMPAT: Mount read-only */
> #define CJFFS_FEATURE_ROCOMPAT 0x8000
> /* RWCOMPAT_COPY: Mount read/write, and copy the node when it's GC'd */
> #define CJFFS_FEATURE_RWCOMPAT_COPY 0x4000

> /* RWCOMPAT_DELETE: Mount read/write, and delete the node when it's GC'd */
> #define CJFFS_FEATURE_RWCOMPAT_DELETE 0x0000

I'm not sure when this type would ever make sense.  I think

/* RWCOMPAT_DELETE: Mount read/write, and make sure this node is deleted */

would make sense, but it requires a forced gc pass on mount.

> #define CJFFS_NODETYPE_DIRENT (CJFFS_FEATURE_INCOMPAT | 1)
> #define CJFFS_NODETYPE_INODE (CJFFS_FEATURE_INCOMPAT | 2)
> // Maybe later...
> //#define CJFFS_NODETYPE_CHECKPOINT (CJFFS_FEATURE_RWCOMPAT_DELETE | 3)
> //#define CJFFS_NODETYPE_OPTIONS (CJFFS_FEATURE_RWCOMPAT_COPY | 4)
> 
> struct cjffs_unknown_node
> {
> 	/* All start like this */
> 	__u32 magic;

this seems like overkill to me.

> 	__u16 nodetype;
> 	__u16 totlen; /* So we can skip over nodes we don't grok */

and this seems like it might become a problem one day when we have very
large flash chips

> };

struct cjffs_unknown_node
{
	__u16 magic;
	__u16 nodetype;
	__u32 totlen;
}

would make more sense, I think.

rest looks fine.

To unsubscribe from this list: send the line "unsubscribe jffs-dev" in
the body of a message to majordomo@xxxxxxx.com