• K
    fs: configfs: Add unlocked version of configfs_depend_item() · d79d75b5
    Krzysztof Opasiak 提交于
    This change is necessary for the SCSI target usb gadget composed with
    configfs. In this case configfs will be used for two different purposes:
    to compose a usb gadget and to configure the target part. If an instance
    of tcm function is created in $CONFIGFS_ROOT/usb_gadget/<gadget>/functions
    a tpg can be created in $CONFIGFS_ROOT/target/usb_gadget/<wwn>/, but after
    a tpg is created the tcm function must not be removed until its
    corresponding tpg is gone. While the configfs_depend/undepend_item() are
    meant exactly for creating this kind of dependencies, they are not suitable
    if the other kernel subsystem happens to be another subsystem in configfs,
    so this patch adds unlocked versions meant for configfs callbacks.
    
    Above description has been provided by:
    Andrzej Pietrasiewicz <andrzej.p@samsung.com>
    
    In configfs_depend_item() we have to consider two possible cases:
    
    1) When we are called to depend another item in the same subsystem
       as caller
    	In this case we should skip locking configfs root as we know
    	that configfs is in valid state and our subsystem will not
    	be unregistered during this call.
    
    2) When we are called to depend item in different subsystem than
       our caller
    	In this case we are also sure that configfs is in valid state
    	but we have to lock root of configfs to avoid unregistration
    	of target's subsystem. As it is other than caller's subsystem,
    	there may be nothing what protects us against unregistration
    	of that subsystem.
    Signed-off-by: NKrzysztof Opasiak <k.opasiak@samsung.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Christoph Hellwig <hch@lst.de>
    Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
    d79d75b5
configfs.h 7.4 KB