Re: ConfigFS + Target Mode Engine API discussion

Joel Becker
2008-09-12T20:17:53Z

On Thu, Sep 11, 2008 at 01:58:49AM -0700, Nicholas A. Bellinger wrote:
> *) $CONFIGFS/target is created with configfs_register_subsystem()
>
> *) $CONFIGFS/target/core is created as a default group under struct
> configfs_subsystem->su_group to interact with generic target mode
> engine's storage objects (eg: SCSI HCTL referenced devices, LVM UUID, MD
> UUID).
>
> ...........
>
> # Load LIO-Target using function symbols from target_core_configfs
> modprobe iscsi_target_mod
>
> module_init() from iscsi_target_mod (eg: the fabric module) calls
> target_fabric_configfs_register() in target_core_configfs.ko, which is a
> small wrapper for calling sys_mkdir($CONFIGFS/target/$FABRIC) to kick
> off the struct config_group_operations->make_group() to create a struct
> config_item for /sys/kernel/config/target/iscsi (or whatever the fabric
> is called).

No, you don't do this. Like I said, configfs clients let
userspace create and destroy items. Not kernelspace. Do not call
sys_mkdir()/sys_rmdir() from your modules.
If you don't do this, you also don't need your lookup_hash()
export. Your code should be behaving as if it didn't know the
filesystem view existed.
I'm trying to understand what you're actually doing. Not the
"I want iscsi_target_mod to appear under target/iscsi" part, but why it
needs to be there in the first place. how it all connects together.

Joel

--

"Every new beginning comes from some other beginning's end."

Joel Becker
Principal Software Developer
Oracle
E-mail: joel.becker@oracle.com
Phone: (650) 506-8127