Unified · Split
| @@ -14,7 +14,7 @@ main(int argc, char **argv) · 13 unmodified lines | ||
| 14 | 14 | { |
| 15 | 15 | int hp, sp, cmd, ctl, vol, lastvol, newvol; |
| 16 | 16 | int hpsafevol, spsafevol; |
| 17 | − u32int x, y[4], has, had; | |
| 17 | + u32int x, y[4], has, had, c; | |
| 18 | 18 | Biobuf *b; |
| 19 | 19 | char *s, *a[16], tmp[32]; |
| 20 | 20 | |
| @@ -61,10 +61,16 @@ main(int argc, char **argv) · 40 unmodified lines | ||
| 61 | 61 | had = -1; |
| 62 | 62 | lastvol = (spsafevol < hpsafevol ? spsafevol : hpsafevol)*2/3; |
| 63 | 63 | for(;;){ |
| 64 | + c = 0; | |
| 65 | +again: | |
| 64 | 66 | if(write(cmd, &x, 4) != 4 || read(cmd, y, sizeof(y)) < 4) |
| 65 | 67 | sysfatal("failed"); |
| 66 | 68 | has = y[0] & (1<<31); |
| 67 | 69 | if(has != had){ |
| 70 | + if(c++ < 2){ | |
| 71 | + sleep(75); | |
| 72 | + goto again; | |
| 73 | + } | |
| 68 | 74 | newvol = lastvol; |
| 69 | 75 | if(pread(vol, tmp, sizeof(tmp)-1, 0) > 0 && strncmp(tmp, "master ", 7) == 0) |
| 70 | 76 | lastvol = atoi(tmp+7); |