mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
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>
This commit is contained in:
+10
-6
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user