| // Demonstrate that moving the "acquire" in iderw after the loop that | |
| // appends to the idequeue results in a race. | |
| // For this to work, you should also add a spin within iderw's | |
| // idequeue traversal loop. Adding the following demonstrated a panic | |
| // after about 5 runs of stressfs in QEMU on a 2.1GHz CPU: | |
| // for (i = 0; i < 40000; i++) | |
| // asm volatile(""); | |
| int | |
| main(int argc, char *argv[]) | |
| { | |
| int fd, i; | |
| char path[] = "stressfs0"; | |
| char data[512]; | |
| printf(1, "stressfs starting\n"); | |
| memset(data, 'a', sizeof(data)); | |
| for(i = 0; i < 4; i++) | |
| if(fork() > 0) | |
| break; | |
| printf(1, "write %d\n", i); | |
| path[8] += i; | |
| fd = open(path, O_CREATE | O_RDWR); | |
| for(i = 0; i < 20; i++) | |
| // printf(fd, "%d\n", i); | |
| write(fd, data, sizeof(data)); | |
| close(fd); | |
| printf(1, "read\n"); | |
| fd = open(path, O_RDONLY); | |
| for (i = 0; i < 20; i++) | |
| read(fd, data, sizeof(data)); | |
| close(fd); | |
| wait(); | |
| exit(); | |
| } | |
Xet Storage Details
- Size:
- 1.03 kB
- Xet hash:
- 72c5cc04bfe3016c399487bce4a5e7b514655d02397bb3314e10d4570023356a
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.