From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from zeniv.linux.org.uk ([195.92.253.2]:59009 "EHLO ZenIV.linux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933243AbcBPXgM (ORCPT ); Tue, 16 Feb 2016 18:36:12 -0500 Date: Tue, 16 Feb 2016 23:36:09 +0000 From: Al Viro To: Mike Marshall Cc: Martin Brandenburg , Linus Torvalds , linux-fsdevel , Stephen Rothwell Subject: Re: Orangefs ABI documentation Message-ID: <20160216233609.GE17997@ZenIV.linux.org.uk> References: <20160213174738.GR17997@ZenIV.linux.org.uk> <20160214025615.GU17997@ZenIV.linux.org.uk> <20160214234312.GX17997@ZenIV.linux.org.uk> <20160215184554.GY17997@ZenIV.linux.org.uk> <20160215230434.GZ17997@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Tue, Feb 16, 2016 at 06:15:56PM -0500, Mike Marshall wrote: > Here's what I see: > > orangefs_create > service_operation > wait_for_matching_downcall purges op and returns -EAGAIN > orangefs_clean_up_interrupted_operation > if (EAGAIN) > ... > goto retry_servicing > wait_for_matching_downcall returns 0 > service_operation returns 0 > orangefs_create has good return value from service_operation > > op->khandle: 00000000-0000-0000-0000-000000000000 > op->fs_id: 0 > > subsequent getattr on bogus object fails orangefs_create on EINVAL. > > seems like the second time around, wait_for_matching_downcall > must have seen op_state_serviced, but I don't see how yet... I strongly suspect that this is what's missing. Could you check if it helps? diff --git a/fs/orangefs/waitqueue.c b/fs/orangefs/waitqueue.c index 2539813..36eedd6 100644 --- a/fs/orangefs/waitqueue.c +++ b/fs/orangefs/waitqueue.c @@ -244,6 +244,7 @@ static void orangefs_clean_up_interrupted_operation(struct orangefs_kernel_op_s gossip_err("%s: can't get here.\n", __func__); spin_unlock(&op->lock); } + reinit_completion(&op->waitq); } /*