[SCSI] libfc: export seq_release() for users of seq_assign()
Target modules using lport->tt.seq_assign() get a hold on the exchange but have no way of releasing it. Add that. Signed-off-by: Joe Eykholt <jeykholt@cisco.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
parent
04885b16a1
commit
62bdb6455e
2 changed files with 21 additions and 0 deletions
|
@ -1282,6 +1282,8 @@ free:
|
|||
* @fp: The request frame
|
||||
*
|
||||
* On success, the sequence pointer will be returned and also in fr_seq(@fp).
|
||||
* A reference will be held on the exchange/sequence for the caller, which
|
||||
* must call fc_seq_release().
|
||||
*/
|
||||
static struct fc_seq *fc_seq_assign(struct fc_lport *lport, struct fc_frame *fp)
|
||||
{
|
||||
|
@ -1298,6 +1300,15 @@ static struct fc_seq *fc_seq_assign(struct fc_lport *lport, struct fc_frame *fp)
|
|||
return fr_seq(fp);
|
||||
}
|
||||
|
||||
/**
|
||||
* fc_seq_release() - Release the hold
|
||||
* @sp: The sequence.
|
||||
*/
|
||||
static void fc_seq_release(struct fc_seq *sp)
|
||||
{
|
||||
fc_exch_release(fc_seq_exch(sp));
|
||||
}
|
||||
|
||||
/**
|
||||
* fc_exch_recv_req() - Handler for an incoming request
|
||||
* @lport: The local port that received the request
|
||||
|
@ -2369,6 +2380,9 @@ int fc_exch_init(struct fc_lport *lport)
|
|||
if (!lport->tt.seq_assign)
|
||||
lport->tt.seq_assign = fc_seq_assign;
|
||||
|
||||
if (!lport->tt.seq_release)
|
||||
lport->tt.seq_release = fc_seq_release;
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(fc_exch_init);
|
||||
|
|
|
@ -571,6 +571,13 @@ struct libfc_function_template {
|
|||
*/
|
||||
struct fc_seq *(*seq_assign)(struct fc_lport *, struct fc_frame *);
|
||||
|
||||
/*
|
||||
* Release the reference on the sequence returned by seq_assign().
|
||||
*
|
||||
* STATUS: OPTIONAL
|
||||
*/
|
||||
void (*seq_release)(struct fc_seq *);
|
||||
|
||||
/*
|
||||
* Reset an exchange manager, completing all sequences and exchanges.
|
||||
* If s_id is non-zero, reset only exchanges originating from that FID.
|
||||
|
|
Loading…
Reference in a new issue