On Tue, Feb 15, 2011 at 10:06 AM, Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote: > Btw, what's the point for deferring the free_lseg calls? It looks like it's > to avoid calling something that might block under i_lock, but looking around > the pnfs-submit branch it seems that root cause could be fixed trivially. > > In common code *free_lseg* and *put_layout_hdr* do nothing but list > manipulations and kfrees. And in filelayout_free_lseg we have just kfrees > and a call to pnfs_put_deviceid which may sleep due to calling > synchronize_rcu. But synchronize_rcu is horribly inefficient to start with, > and you'd better be off using call_rcu to free the device id, which will > lead to much saner code and better performance. > The fundamental reason was that filelayout_free_lseg can call nfs_put_client (through nfs4_fl_free_deviceid_callback), which in some codepaths grabs a mutex. Fred -- 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