Re: [EXT] Re: [PATCH v2 04/14] qla2xxx: Optimize NPIV tear down process

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 9/26/19, 3:52 AM, "Martin Wilck" <mwilck@xxxxxxx> wrote:

    External Email
    
    ----------------------------------------------------------------------
    On Thu, 2019-09-12 at 11:09 -0700, Himanshu Madhani wrote:
    > From: Quinn Tran <qutran@xxxxxxxxxxx>
    > 
    > In the case of NPIV port is being torn down, this patch will
    > set a flag to indicate VPORT_DELETE. This would prevent relogin
    > to be triggered.
    > 
    > Signed-off-by: Quinn Tran <qutran@xxxxxxxxxxx>
    > Signed-off-by: Himanshu Madhani <hmadhani@xxxxxxxxxxx>
    > ---
    >  drivers/scsi/qla2xxx/qla_attr.c   |  2 ++
    >  drivers/scsi/qla2xxx/qla_def.h    |  1 +
    >  drivers/scsi/qla2xxx/qla_gs.c     |  3 ++-
    >  drivers/scsi/qla2xxx/qla_mid.c    | 32 ++++++++++++++++++++++-------
    > ---
    >  drivers/scsi/qla2xxx/qla_os.c     |  7 ++++++-
    >  drivers/scsi/qla2xxx/qla_target.c |  1 +
    >  6 files changed, 34 insertions(+), 12 deletions(-)
    > 
    > --- a/drivers/scsi/qla2xxx/qla_mid.c
    > +++ b/drivers/scsi/qla2xxx/qla_mid.c
    > @@ -66,6 +66,7 @@ qla24xx_deallocate_vp_id(scsi_qla_host_t *vha)
    >  	uint16_t vp_id;
    >  	struct qla_hw_data *ha = vha->hw;
    >  	unsigned long flags = 0;
    > +	u8 i;
    >  
    >  	mutex_lock(&ha->vport_lock);
    >  	/*
    > @@ -75,8 +76,9 @@ qla24xx_deallocate_vp_id(scsi_qla_host_t *vha)
    >  	 * ensures no active vp_list traversal while the vport is
    > removed
    >  	 * from the queue)
    >  	 */
    > -	wait_event_timeout(vha->vref_waitq, !atomic_read(&vha-
    > >vref_count),
    > -	    10*HZ);
    > +	for (i = 0; i < 10 && atomic_read(&vha->vref_count); i++)
    > +		wait_event_timeout(vha->vref_waitq,
    > +		    atomic_read(&vha->vref_count), HZ);
    
    Are you missing a negation in this last line?
    Also, what's the point of adding this loop? 

QT:  good catch.  The idea is to not sleep the full 10Hz, if the vref_count already reaches zero or reaches zero under 10Hz.  Otherwise, loop/wait for 10Hz.   We're trying to get NPIV tear down to go faster.
    
    
    > --- a/drivers/scsi/qla2xxx/qla_os.c
    > +++ b/drivers/scsi/qla2xxx/qla_os.c
    > @@ -1115,9 +1115,14 @@ static inline int
    > test_fcport_count(scsi_qla_host_t *vha)
    >  void
    >  qla2x00_wait_for_sess_deletion(scsi_qla_host_t *vha)
    >  {
    > +	u8 i;
    > +
    >  	qla2x00_mark_all_devices_lost(vha, 0);
    >  
    > -	wait_event_timeout(vha->fcport_waitQ, test_fcport_count(vha),
    > 10*HZ);
    > +	for (i = 0; i < 10; i++)
    > +		wait_event_timeout(vha->fcport_waitQ,
    > test_fcport_count(vha),
    > +		    HZ);
    > +
    >  	flush_workqueue(vha->hw->wq);
    >  }
    
    Perhaps here, the loop should be exited if test_fcport_count(vha) gets
    TRUE? And again, why is the loop necessary?
QT:  Yes.     Same answer as above with the looping.

    Regards
    Martin
    
    
    





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux