lkml.org 
[lkml]   [2001]   [Apr]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: Kernel panics on raw I/O stress test
    From
    Date

    > Could you try again with 2.4.4pre4 plus the below patch?
    >
    > ftp://ftp.us.kernel.org/pub/linux/kernel/people/andrea/patches/v2.4/2.4.4pre2/rawio-3

    I suppose that 2.4.4-pre4 + rawio-3 patch still has SMP-unsafe
    raw i/o code and can cause the same panic I reported.

    I think the following scenario is possible if there are 3 or more CPUs.

    (1) CPU0 enter rw_raw_dev()
    (2) CPU0 execute alloc_kiovec(1, &iobuf) // drivers/char/raw.c line 309
    (3) CPU0 enter brw_kiovec(rw, 1, &iobuf,..) // drivers/char/raw.c line 362
    (4) CPU0 enter __wait_on_buffer()
    (5) CPU0 execute run_task_queue() and wait
    while buffer_locked(bh) is true. // fs/buffer.c line 152-158
    (6) CPU1 enter end_buffer_io_kiobuf() with
    iobuf allocated at (2)
    (7) CPU1 execute unlock_buffer() // fs/buffer.c line 1994
    (8) CPU0 exit __wait_on_buffer()
    (9) CPU0 exit brw_kiovec(rw, 1, &iobuf,..)
    (10) CPU0 execute free_kiovec(1, &iobuf) // drivers/char/raw.c line 388
    (11) The task on CPU2 reused the area freed
    at (10).
    (12) CPU1 enter end_kio_request() and touch
    the corrupted iobuf, then panic.

    ---
    Takanori Kawano
    Hitachi Ltd,
    Internet Systems Platform Division
    t-kawano@ebina.hitachi.co.jp



    -
    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/

    \
     
     \ /
      Last update: 2005-03-22 13:26    [W:0.025 / U:0.304 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site