Menu

ChangeLog-8.0.22

Known issues :
* Please read the associated RELEASE-NOTES file !!!
* This source release intended for upstream kernel releases only!

Changes from 20050124 to 20050201

* Changed version number to 8.0.22
* Moved discovery timeout handler to worker thread. There are
function calls in this function which are not safe to call from
HW interrupt context.
* Removed free_irq from the error path of HBA initialization.
This will fix the free of uninitialised IRQ when config_port
fails.
* Make sure function which processes unsolicited IOCBs on ELS ring
still is called with the lock held.
* Clear LA bit from work_ha when we are not supposed to handle LA.
* Fix double locking bug in the error handling part of
lpfc_mbx_cmpl_read_la.
* Implemented fast IOCB processing for FCP ring.
* Since mboxes are now unconditionally allocated outside of the
lock, free them in cases where they are not used.
* Moved out a couple of GFP_ATOMICs in lpfc_disc_timeout, to
before locks so that they can GFP_KERNEL instead. Also cleaned
up code.
* Collapsed interrupt handling code into one function.
* Removed event posting and handling of solicited and unsolicited
iocbs.
* Remove ELS ring handling leftovers from the lpfc_sli_inter().
* ELS ring (any slow ring) moved from the lpfc_sli_inter() into a
worker thread. Link Attention, Mbox Attention, and Error
Attention, as well as slow rings' attention is passed to the
worker thread via worker thread copy of Host Attention
register. Corresponding events are removed from the event queue
handling.
* Add entries to hba structure to delegate some functionality from
the lpfc_sli_inter() to a worker thread.
* Reduced used of GFP_ATOMIC for memory allocations.
* Moved locks deeper in order to change GFP_ATOMIC to GFP_KERNEL.
* IOCB initialization fix for Raw IO.
* Removed qcmdcnt, iodonecnt, errcnt from lpfc_target and from
driver.
* Added call to lpfc_els_abort in lpfc_free_node. Modified
lpfc_els_abort to reset txq and txcmplq iterator after a
iocb_cmpl call.
* Fixed a use after free issue in lpfc_init.c.
* Defined default mailbox completion routine and removed code in
the sli layer which checks the mbox_cmpl == 0 to free mail box
resources.
* In lpfc_workq_post_event, clean up comment formatting and remove
unneeded cast of kmalloc's return.
* Removed loop which calls fc_remote_port_unblock and
fc_remote_port_delete for every target as this same effect is
accomplished by the scsi_remove_host call.
* Minor cleanup of header files. Stop header files including
other header files. Removed sentinels which hide multiple
inclusions. Removed unneeded #include directives.
* Fixed memory leaks in mailbox error paths.
* Moved lock from around of lpfc_work_done to lpfc_work_done
itself.
* Removed typedef for LPFC_WORK_EVT_t and left just struct
lpfc_work_evt to comply with linux_scsi review coding style.
* Fixed some trailing whitespaces, spaces used for indentation and
ill-formatting multiline comments.
* Bug fix for Raw IO errors. Reuse of IOCBs now mandates setting
of ulpPU and fcpi_parm to avoid incorrect read check of Write IO
and incorrect read length.

Changes from 20050110 to 20050124

* Changed version number to 8.0.21
* Removed unpleasant casting in the definition and use of
lpfc_disc_action function pointer array.
* Makefile cleanup. Use ?= operator for setting default
KERNELVERSION and BASEINCLUDE values. Use $(PWD) consistently.
* Removed call to lpfc_sli_intr from lpfc_config_port_post. All
Linux systems will service hardware interrupts while bringing up
the driver.
* Christoph Hellwig change request: Reorg of contents of
lpfc_hbadisc.c, lpfc_scsi.h, lpfc_init.c, lpfc_sli.c,
lpfc_attr.c, lpfc_scsi.c.
* Renamed discovery thread to lpfc_worker thread. Moved handling
of error attention and link attention and mbox event handler to
lpfc_worker thread.
* Removed .proc_info and .proc_name from the driver template and
associated code.
* Removed check of FC_UNLOADING flag in lpfc_queuecommand to
determine what result to return.
* Move modification of FC_UNLOADING flag under host_lock.
* Fix IOERR_RCV_BUFFER_WAITING handling for CT and ELS subsystem.
* Workaround firmware bug for IOERR_RCV_BUFFER_WAITING on ELS
ring.
* Fixed a couple lpfc_post_buffer problems in lpfc_init.c.
* Add missing spaces to the parameter descriptions for
lpfc_cr_delay, lpfc_cr_count and lpfc_discovery_threads.
* Lock before calling lpfc_sli_hba_down().
* Fix leak of "host" in the error path in the remove_one() path.
* Fix comment for lpfc_cr_count. It defaults to 1.
* Fix issue where we are calling lpfc_disc_done() recursively from
lpfc_linkdown(), but list_for_each_entry_safe() is not safe for
such use.
* Bump lpfc_discovery_threads (count of outstading ELS commands in
discovery) to 32
* If the SCSI midlayer tries to recover from an error on a lun
while the corresponding target is in the NPR state, lpfc driver
will reject all the resets. This will cause the target to be
moved to offline state and block all the I/Os. The fix for this
is to delay the lun reset to a target which is not in MAPPED
state until the target is rediscovered or nodev timeout is
fired.

Changes from 20041229 to 20050110

* Changed version number to 8.0.20
* rport fix: use new fc_remote_port_rolechg() function instead of
direct structure change
* rport fix: last null pointer check
* Phase II of GFP_ATOMIC effort. Replaced iocb_mem_pool and
scsibuf_mem_pool with kmalloc and linked list. Inserted list
operations for mempool_alloc calls. General code cleanup. All
abort and reset routines converted. Handle_ring_event
converted.
* If the mbox_cmpl == lpfc_sli_wake_mbox_wait in
lpfc_sli_handle_mb_event, pmb->context1 points to a waitq. Do
not free the structure.
* rport fixes: fix for rmmod crash
* rport fixes: when receiving PRLI's, set node/rport role values
* rport fixes: fix for unload and for fabric port deletes
* VPD info bug fix.
* lpfc_linkdown() should be able to process all outstanding events
by calling lpfc_disc_done() even if it is called from
lpfc_disc_done() Moving all events from phba->dpc_disc to local
local_dpc_disc prevents those events from being processed.
Removing that queue. From now on we should not see "Illegal
State Transition" messages.
* Release host lock and enable interrupts when calling
del_timer_sync()
* All related to rports: Clean up issues with rport deletion
Convert to using block/unblock on list remove (was del/add)
Moved rport delete to freenode - so rport tracks node.
* rport fixes: for fport, get maxframe and class support
information
* Added use of wait_event to work with kthread interface.
* Ensure that scsi_transport_fc.h is always pulled in by
lpfc_scsiport.c
* In remote port changes: no longer nulling target->pnode when
removing from mapped list. Pnode get nulled when the node is
freed (after nodev tmo). This bug was causing i/o recieved in
the small window while the device was blocked to be errored w/
did_no_connect. With the fix, it returns host_busy
(per the pre-remote port changes).
* Merge in support for fc transport remote port use. This removes
any consistent bindings within the driver. All scanning is now
on a per-target basis driven by the discovery engine.

Changes from 20041220 to 20041229

* Changed version number to 8.0.19
* Fixed bug for handling RSCN type 3. Terminate RSCN mode
properly after ADISC handling completes.
* Add list_remove_head macro. Macro cleans up memory allocation
list handling. Also clean up lpfc_reset_bus_handler - routine
does not need to allocate its own scsi_cmnd and scsi_device
structures.
* Fixed potential discovery bug, nlp list corrutpion fix potential
memory leak
* Part 1 of the memory allocation rework request by linux-scsi.
This effort fixes the number of bdes per scsi_buf to 64, makes
the scatter-gather count a module parameter, builds a linked
list of scsi_bufs, and removes all dependencies on lpfc_mem.h.
* Reverted lpfc_do_dpc, probe_one, remove_one to original
implementation. Too many problems (driver not completing
initial discovery, and IO not starting to disks). Backs out
kthread patch.
* Fix race condition in lpfc_do_dpc. If wake_up interrupt occurs
while lpfc_do_dpc is running disc_done and the dpc list is
empty, the latest insertion is missed and the schedule_timeout
does not wakeup. The sleep interval is MAX_SCHEDULE_TIMEOUT
defined as ~0UL >> 1, a very large number. Hacked it to 5*HZ
for now.
* Fixed bug introduced when discovery thread implementation was
moved to kthread. kthread_stop() is not able to wake up thread
waiting on a semaphore and "modprobe -r lpfc" is not always
(most of the times) able to complete. Fix is in not using
semaphore for the interruptable sleep.
* Small Makefile cleanup - Remove remnants of 2.4 vs. 2.6
determination.

Posted by James Smart 2005-02-02

Log in to post a comment.