Messages in this thread | | | Subject | AIO and DIO testing on 2.6.0-test7-mm1 | From | Daniel McNeil <> | Date | 17 Oct 2003 16:12:58 -0700 |
| |
I've been doing some testing on 2.6.0-test7-mm1 with O_DIRECT and AIO. I wrote some tests to check the buffered i/o verses O_DIRECT i/o races and O_DIRECT verses truncate.
I still had apply suparna's direct-io.c patch to prevent oopses. Suparna, you said the patch was not the complete patch, do you have the complete patch?
I wrote some simple tests to create 2 processes with one doing O_DIRECT i/o (of zeros) and the other doing buffered i/o and checking that the buffered i/o process never saw non-zero data which was posssible before the i_alloc_sem and other changes. The test I wrote are: dio_append - use O_DIRECT to append while doing buffered reads dio_sparse - write O_DIRECT to holes while doing buffered reads dio_truncate - do O_DIRECT reads while truncating aiodio_append - same as dio_append but with AIO aiodio_sparse - same as dio_sparse but with AIO
These and a simple README are available here http://developer.osdl.org/daniel/AIO/TESTS/
The good news was I never got any non-zero data or oops on test7-mm1 (with the direct-io patch).
Unfortunately, when I ran these on test7, I also did not get any non-zero data. On AIO test7 still gives me oopses:
Slab corruption: start=e7d9573c, expend=e7d957db, problemat=e7d95774 Last user: [<c018b612>](__aio_put_req+0x97/0x185) Data: ********************************************************00 00 89 02 00 00 00 00 ***********************************************************************************************A5 Next: 71 F0 2C .12 B6 18 C0 71 F0 2C .******************** slab error in check_poison_obj(): cache `kiocb': object was modified after freeing Call Trace: [<c0148c95>] check_poison_obj+0x106/0x18f [<c0148ed4>] slab_destroy+0x1b6/0x1be [<c014bf2f>] reap_timer_fnc+0x254/0x326 [<c014bcdb>] reap_timer_fnc+0x0/0x326 [<c012d80d>] run_timer_softirq+0xed/0x226 [<c0128dcd>] do_softirq+0xc9/0xcb [<c011a165>] smp_apic_timer_interrupt+0xcd/0x135 [<c0108029>] default_idle+0x0/0x32 [<c010b0b6>] apic_timer_interrupt+0x1a/0x20 [<c0108029>] default_idle+0x0/0x32 [<c0108056>] default_idle+0x2d/0x32 [<c01080d4>] cpu_idle+0x3a/0x43 [<c0125050>] printk+0x1b4/0x258
I guess this expected because it does not have the ref counting and other AIO fixes.
I'm planning on doing more testing and write some AIO verses truncate tests.
If you have any ideas on how to better test the AIO and O_DIRET changes in -mm, just let me know.
Daniel
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |