296ec9e30e
- No need to take the snapshot lock while the file system is suspended. - Allow ffs_copyonwrite() one level of recursion with snapshots locked. - Do the block address lookup with snapshots locked. - Take the snapshot lock while removing a snapshot from the list. While hunting deadlocks change the transaction scope for ffs_snapremove(). We could deadlock from UFS_WAPBL_BEGIN() with a buffer held.