From: Xiong Zhou Date: Fri, 23 Mar 2018 02:49:37 +0000 (+0800) Subject: generic/478: fix potential test blocking X-Git-Tag: v2022.05.01~1619 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=545e7ca67bea43fc206b135cbc60637c52a2e3f3;p=xfstests-dev.git generic/478: fix potential test blocking Reduce semtimedop timeout to 5s, 15s is too long if something get tangled up. Add retry counting to getlk routine, infinite loop is dangerous. If something goes wrong unexpextedly, test is blocked and wasting time. Signed-off-by: Xiong Zhou Reviewed-by: Eryu Guan Signed-off-by: Eryu Guan --- diff --git a/src/t_ofd_locks.c b/src/t_ofd_locks.c index d578cd71..e3b15ddc 100644 --- a/src/t_ofd_locks.c +++ b/src/t_ofd_locks.c @@ -317,14 +317,14 @@ int main(int argc, char **argv) sop.sem_num = 0; sop.sem_op = 1; sop.sem_flg = 0; - ts.tv_sec = 15; + ts.tv_sec = 5; ts.tv_nsec = 0; if (semtimedop(semid, &sop, 1, &ts) == -1) err_exit("inc sem0 2", errno); sop.sem_num = 1; sop.sem_op = 1; sop.sem_flg = 0; - ts.tv_sec = 15; + ts.tv_sec = 5; ts.tv_nsec = 0; if (semtimedop(semid, &sop, 1, &ts) == -1) err_exit("inc sem1 2", errno); @@ -376,7 +376,7 @@ int main(int argc, char **argv) sop.sem_num = 1; sop.sem_op = 0; sop.sem_flg = 0; - ts.tv_sec = 15; + ts.tv_sec = 5; ts.tv_nsec = 0; if (semtimedop(semid, &sop, 1, &ts) == -1) err_exit("wait sem1 0", errno); @@ -391,14 +391,18 @@ int main(int argc, char **argv) /* getlck */ if (lock_cmd == 0) { /* wait sem created and initialized */ + retry = 5; do { semid = semget(semkey, 2, 0); if (semid != -1) break; - if (errno == ENOENT) + if (errno == ENOENT && retry) { + sleep(1); + retry--; continue; - else + } else { err_exit("getlk_semget", errno); + } } while (1); do { memset(&sem_ds, 0, sizeof(sem_ds)); @@ -410,7 +414,7 @@ int main(int argc, char **argv) sop.sem_num = 0; sop.sem_op = 0; sop.sem_flg = 0; - ts.tv_sec = 15; + ts.tv_sec = 5; ts.tv_nsec = 0; if (semtimedop(semid, &sop, 1, &ts) == -1) err_exit("wait sem0 0", errno);