diff options
author | Xiong Zhou <xzhou@redhat.com> | 2018-03-23 10:49:37 +0800 |
---|---|---|
committer | Eryu Guan <guaneryu@gmail.com> | 2018-03-23 14:06:33 +0800 |
commit | 545e7ca67bea43fc206b135cbc60637c52a2e3f3 (patch) | |
tree | b7bb456a26dd2f0b5016a8d80ed22f09563dbfea | |
parent | 8aa212310d62295488d23bf7958d2329c287a8c9 (diff) | |
download | xfstests-545e7ca67bea43fc206b135cbc60637c52a2e3f3.tar.gz |
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 <xzhou@redhat.com>
Reviewed-by: Eryu Guan <guaneryu@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
-rw-r--r-- | src/t_ofd_locks.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/t_ofd_locks.c b/src/t_ofd_locks.c index d578cd71fd..e3b15ddc6e 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); |