Coming from a "simplify things" pov:

On Fri, Apr 06, 2007 at 04:32:24PM -0700, [EMAIL PROTECTED] wrote:
>  struct container {
>       unsigned long flags;            /* "unsigned long" so bitops work */
> 
>       /*
> -      * Count is atomic so can incr (fork) or decr (exit) without a lock.
> -      */
> -     atomic_t count;                 /* count tasks using this container */
> -
> -     /*
>        * We link our 'sibling' struct into our parent's 'children'.
>        * Our children link their 'sibling' into our 'children'.
>        */
> @@ -43,11 +106,13 @@ struct container {
>       struct list_head children;      /* my children */
> 
>       struct container *parent;       /* my parent */
> -     struct dentry *dentry;          /* container fs entry */
> +     struct dentry *dentry;          /* container fs entry */
> 
> -#ifdef CONFIG_CPUSETS
> -     struct cpuset *cpuset;
> -#endif
> +     /* Private pointers for each registered subsystem */
> +     struct container_subsys_state *subsys[CONTAINER_SUBSYS_COUNT];
> +
> +     struct containerfs_root *root;

Could this root pointer derived from dentry pointer
(cont->dentry->d_sb->s_fs_info)?

> +     struct container *top_container;

and this as well?

        cont->dentry->d_sb->s_fs_info->top_container

>  };

So we have the foward subsys pointer array being stored in both 
'struct container' and 'struct container_group' and reverse container pointer 
stored in struct container_subsys_state. Can we reduce this pointer maze by:

        struct container {
                /* All shared stuff like flags, parent/child pointers etc */
                ..

                struct container_group *my_group;
                
        }

The forward mapping from 'struct container' to subsys objects is made via
'my_group'. This also lets 'struct container' be a placeholder strictly for
shared state. 

On further thoughts, perhaps even my_group can be avoided by having:

        dentry->d_fsdata point to my_group 

and cont->dentry->d_fsdata will point to my_group which we wanted to store
above.

I don't see distinct adv of doing this, but I suspect it will simplify
the structure relationship (and code) a bit.

-- 
Regards,
vatsa
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to