HI folks, This series of patches contain fixes for the generic/530 hangs that Chandan and Jan reported recently. The first patch in the series is the main fix for this, though in theory the last patch in the series is necessary to totally close the problem off. The second patch is an outstanding fix for a log flush wakeup race in the xlog_state_do_callback() code from Rik van Riel. Given that the next 5 patches in the series clean up iand address the tail pushing race in xlog_state_do_callback(), it makes sense to get this into the kernel at the same time. Patches 3-6 factor several independent chunks out of xlog_state_do_callback, greatly simplifying that function and breaking the iclog IO completion processing down into discrete chunks of separate functionality. This makes the code much easier to read, follow and understand. An the last patch kicks the AIL if necessary when the log tail is moved to avod the situation where the AIL pushing has stalled because the previous last_sync_lsn is further into the log than the push target reaches. Comments welcome. -Dave.