OpenSolaris

Printable Version Enter a New Search
Bug ID 6734155
Synopsis i_xvdi_oestate_cb() is racing with i_xvdi_oestate_handler()
State 10-Fix Delivered (Fix available in build)
Category:Subcategory xvm:kernel-io
Keywords xvm-server10-reviewed
Responsible Engineer Max Zhen
Reported Against snv_75
Duplicate Of
Introduced In solaris_nevada
Commit to Fix snv_100
Fixed In snv_100
Release Fixed solaris_nevada(snv_100)
Related Bugs 6609816
Submit Date 6-August-2008
Last Update Date 8-October-2008
Description
Before dispatching i_xvdi_oestate_handler(), i_xvdi_oestate_cb() will save the current oestate in dev->otherend_state for i_xvdi_oestate_handler() to read and handle. Let's consider two consecutive oestate change events happened in a row.  i_xvdi_oestate_handler() will be dispatched twice.  But, it is not guaranteed for i_xvdi_oestate_handler() to read every state change because two writes to dev->otherend_state can happen before the first i_xvdi_oestate_handler() taskq is executed.  So, it may happen that two i_xvdi_oestate_handler() taskq are handling the same state change.  If the last state change is XenbusStateClosed, we may end up to remove the device node twice, which will cause system to panic.
Work Around
N/A
Comments
N/A