Created attachment 396238 [details] Patch to fix cache destroy issue and FDMI Description of problem: 1. Fix kmem_destroy_cache issue. In IOCTL path mempool is used and not freed. This causes following issue Apr 22 23:06:54 localhost kernel: slab error in kmem_cache_destroy(): cache `qla2xxx_srbs': Can't free all objects Apr 22 23:06:54 localhost kernel: Apr 22 23:06:54 localhost kernel: Call Trace:<ffffffff801646e7>{kmem_cache_destroy+202} <ffffffffa004f5df>{:qla2xxx:qla2x00_module_exit+19} Apr 22 23:06:54 localhost kernel: <ffffffff8014f9f3>{sys_delete_module+487} <ffffffff80110e21>{error_exit+0} Apr 22 23:06:55 localhost kernel: <ffffffff801102f6>{system_call+126} Apr 22 23:06:55 localhost kernel: qla2xxx: Unable to free SRB cache...Memory pools still active? The reason is memory from mempool is allocated in function qim_ioctl_ms_queuecommand and is never freed. Since this function is not fully incorporated return from this function as success . 2.Correct number of attribute passed in RHBA. With incorrect number of attribute passed the switch rejects the RHBA with following explanation code “Invalid HBA Attribute Block Length” 3. Updated the driver version for 4.9 release to 8.02.09.00.04.09-d How reproducible: 1. Load the driver, run QLogic SANsurfer. Close SANsurfer and unload the driver. 2. Load the module with ql2xfdmienable=1 and check FDMI on switch GUI Actual results: - Stack trace on driver unload - Vendor information not visible on switch side. Expected results: - On unload stack trace related to srb caches should not occur. - If ql2xfdmienable is set to 1 then vendor information on switch FDMI page should be visible.
After reviewing the patch, the hunk below needs some explanation as to why simply returning from a function with QIM_SUCCESS is an acceptable solution to this problem. If this turns out to be the correct solution after re-review by qlogic, please cleanup the function to eliminate all the un-needed code. @@ -3871,6 +3871,8 @@ qim_ioctl_ms_queuecommand(struct qla_host_ioctl *ha, EXT_IOCTL *pext, struct scsi_qla_host *dr_ha = ha->dr_data; + return QIM_SUCCESS; + /* alloc sp */ if ((sp = qim_get_new_sp(dr_ha)) == NULL) { Leaving this status as conditional nak pending more information from qlogic. Reassigning to Chad Dupuis.
Created attachment 407784 [details] Fix cache destroy & FDMI registration Removed the function qim_ioctl_ms_queuecommand as it is not completely implemented. Also removed other functions that were using qim_ioctl_ms_queuecommand function.
Created attachment 407785 [details] Updated version to 8.02.10.01.04.09-d Updated version to 8.02.10.01.04.09-d
Lalit, The patches that you submitted last night can be laid on top of the current RHEL 4.8 sources? Thanks, Chad
(In reply to comment #4) > Lalit, > The patches that you submitted last night can be laid on top of the current > RHEL 4.8 sources? > Thanks, > Chad Yes, the patches are on top of RHEL 4.8 qla2xxx driver source.
Created attachment 407917 [details] Snapshot of RHEL 4.9 qla2xxx sources on 4.20.2010
Lalit, My apologies, but can you regen your patches on the qla2xxx sources I just submitted? These are the latest RHEL 4.9 sources which differ slightly from the RHEL 4.8 sources. Thanks, Chad
Created attachment 407977 [details] Update version to 8.02.10.01.04.09-d All the patches apply to current qla2xxx source in 4.9 kernel.
Committed in 89.34.EL . RPMS are available at http://people.redhat.com/vgoyal/rhel4/
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on therefore solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHSA-2011-0263.html