mirror of
https://github.com/ukui/kernel.git
synced 2026-03-09 10:07:04 -07:00
[SCSI] libfc: add hook to notify providers of local port changes
When an SCST provider is registered, it needs to know what local ports are available for configuration as targets. Add a notifier chain that is invoked when any local port that is added or deleted. Maintain a global list of local ports and add an interator function that calls a given function for every existing local port. This is used when first loading a provider. Signed-off-by: Joe Eykholt <jeykholt@cisco.com> Signed-off-by: Robert Love <robert.w.love@intel.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
committed by
James Bottomley
parent
baf9fdf076
commit
70d53b046a
+13
-1
@@ -763,6 +763,15 @@ struct fc_disc {
|
||||
enum fc_disc_event);
|
||||
};
|
||||
|
||||
/*
|
||||
* Local port notifier and events.
|
||||
*/
|
||||
extern struct blocking_notifier_head fc_lport_notifier_head;
|
||||
enum fc_lport_event {
|
||||
FC_LPORT_EV_ADD,
|
||||
FC_LPORT_EV_DEL,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct fc_lport - Local port
|
||||
* @host: The SCSI host associated with a local port
|
||||
@@ -803,9 +812,10 @@ struct fc_disc {
|
||||
* @lso_max: The maximum large offload send size
|
||||
* @fcts: FC-4 type mask
|
||||
* @lp_mutex: Mutex to protect the local port
|
||||
* @list: Handle for list of local ports
|
||||
* @list: Linkage on list of vport peers
|
||||
* @retry_work: Handle to local port for delayed retry context
|
||||
* @prov: Pointers available for use by passive FC-4 providers
|
||||
* @lport_list: Linkage on module-wide list of local ports
|
||||
*/
|
||||
struct fc_lport {
|
||||
/* Associations */
|
||||
@@ -862,6 +872,7 @@ struct fc_lport {
|
||||
struct list_head list;
|
||||
struct delayed_work retry_work;
|
||||
void *prov[FC_FC4_PROV_SIZE];
|
||||
struct list_head lport_list;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1016,6 +1027,7 @@ struct fc_lport *libfc_vport_create(struct fc_vport *, int privsize);
|
||||
struct fc_lport *fc_vport_id_lookup(struct fc_lport *, u32 port_id);
|
||||
int fc_lport_bsg_request(struct fc_bsg_job *);
|
||||
void fc_lport_set_local_id(struct fc_lport *, u32 port_id);
|
||||
void fc_lport_iterate(void (*func)(struct fc_lport *, void *), void *);
|
||||
|
||||
/*
|
||||
* REMOTE PORT LAYER
|
||||
|
||||
Reference in New Issue
Block a user