On Thu, Apr 11, 2019 at 05:35:21PM +0800, ZhangXiaoxu wrote: > When test on nfs, maybe failed as below: > wait sem0 0: Resource temporarily unavailable > set sem0 0: Invalid argument > exit rmid: Invalid argument > > It means getlk routine wait sem0 timeout, because the setlk routine > maybe take too long time on ‘fcntl’ or 'dup'. > > So, let wait on sem0 in getlk routine until the setlk routine success > or fail. > > Signed-off-by: ZhangXiaoxu <zhangxiaoxu5@xxxxxxxxxx> > --- > src/t_ofd_locks.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/src/t_ofd_locks.c b/src/t_ofd_locks.c > index e3b15dd..32e90c0 100644 > --- a/src/t_ofd_locks.c > +++ b/src/t_ofd_locks.c > @@ -414,9 +414,7 @@ int main(int argc, char **argv) > sop.sem_num = 0; > sop.sem_op = 0; > sop.sem_flg = 0; > - ts.tv_sec = 5; > - ts.tv_nsec = 0; > - if (semtimedop(semid, &sop, 1, &ts) == -1) > + if (semtimedop(semid, &sop, 1, NULL) == -1) We set a timeout value on purpose in the first place, to avoid hanging the whole test if the setlk process went wrong. And I didn't reproduce it on NFS. Do I need any special NFS configuration? Thanks, Eryu > err_exit("wait sem0 0", errno); > > if (fcntl(fd, getlk_macro, &flk) < 0) > -- > 2.7.4 >