Hi folks, These two patches are followups to my recent series of shutdown/recovery fixes. The cluster buffer lock patch addresses a race condition that started to show up regularly once the fixes in the previous series were done - it is a regression from the async inode reclaim work that was done almost 2 years ago now. The second patch is something I'm really surprised has taken this long to uncover. There is a check in intent recovery/cancellation that checks that there are no intent items in the AIL after the first non-intent item is found. This behaviour was correct back when we only had standalone intent items (i.e. EFI/EFD), but when we started to chain complex operations by intents, the recovery of an incomplete intent can log and commit new intents and they can end up in the AIL before log recovery is complete and finished processing the deferred items. Hence the ASSERT() check that no intents exist in the AIL after the first non-intent item is simply invalid. With these two patches, I'm back to being able to run hundreds of cycles of g/388 or -g recoveryloop without seeing any failures. -Dave.