On 08/26/2014 05:37 PM, Boaz Harrosh wrote: > On 08/26/2014 05:26 PM, Trond Myklebust wrote: >> On Tue, Aug 26, 2014 at 10:10 AM, Boaz Harrosh <boaz@xxxxxxxxxxxxx> wrote: >>> + >>> + /* kick out any segs held by need to commit */ >>> + pnfs_layoutcommit_inode(ino, true); >> >> Making this call synchronous could deadlock the entire back channel. >> Is there any reason why it can't just be made asynchonous? >> > > We were just talking about that. > > So the logic here is that we want to save round trips and make this > as efficient as possible with no extra round trips for the server > recall. A single RECALL => LAYOUT_COMMIT => LAYOUT_COMMIT_REPLAY > REACLL_REPLAY_NO_MATCHING. > > Please explain the deadlock you foresee. The worst is that the > mal-behaving server will time-out and after a long time the > RECALL_REPLAY will return with ERR. But why do you say deadlock > how can this deadlock? > > Otherwise Christoph's version of this patch does the asynchonous > way which will always cause another poll of the RECALL and more delays > for every RECALL operation, which I was trying to avoid. > Also, for any client there is only a single server on it's backchannel do you mean that ANY recall from any server can only come on a single thread? I did not know that I thought it was from a pool of RPC threads. So are you saying that waiting on this server operation will cause any other server's recall to some other mounts stall until the operation is complete for this server? Thanks Boaz -- 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