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) err_exit("wait sem0 0", errno); if (fcntl(fd, getlk_macro, &flk) < 0) -- 2.7.4