Fix kfree under spin lock Both put_lseg and put_layout are called under the inode i_lock where the last reference will end up freeing structures. I know there has been a lot of churn in this code, but free'ing under the spin lock is a no-no. In this patch I refactor the layout allocation, combining it with the layout segment lookup code. The new function, pnfs_get_layout_segment takes inode spin lock, and looks to see if the requested range is serviced by an existing layout segment. If the layout has not been allocated, allocate it. If a layout segement is found, reference it and give up the lock. If no layout segment is found, reference the layout for the layoutget call and give up the lock. 0001-SQUASHME-pnfs-submit-alloc-layout-don-t-call-put_lay.patch 0002-SQUASHME-pnfs-submit-use-atomic_dec_and_lock-for-lay.patch Fix the put_lseg under spin lock. 0003-SQUASHME-pnfs-submit-don-t-call-put_lseg-under-spin-.patch Cleanup. 0004-SQUASHME-pnfs-submit-pnfs_release_layout-just-use-in.patch 0005-SQUASHME-pnfs-submit-fix-has_layout-compile-error.patch Tests: CONFIG_NFS_V4_1 set: Connectathon tests pass against GFS2 and pyNFS file layout servers. CONFIG_NFS_V4_1 not set: Connectathon tests pass. -->Andy -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html