DF-5026 / run.log
== kldload == crw-r----- 1 root operator 32, 0x1e110007 Sep 26 05:00 /dev/df50260 crw-r----- 1 root operator 32, 0x1e100007 Sep 26 05:00 /dev/df50260s0 == sanity: read while ONLINE completes normally == wedge: pread@2097152 r=512 errno=0(ok) โ returned only after the bio was completed externally == take the adapter offline (ips_timeout: 'AIEE! adapter reset failed') == offline: pread@3145728 r=512 errno=0(ok) โ returned only after the bio was completed externally == wedge: read @2M with adapter offline (bio parks forever) == == ps: wedge process state (expect D-state / biowait) == PID STAT WCHAN COMMAND 1275 D3 physstr /tmp/poc/df5026_trigger wedge /dev/df50260 == kill -9 the wedged process == -- after SIGKILL, still present? -- PID STAT WCHAN COMMAND 1275 D3 physstr /tmp/poc/df5026_trigger wedge /dev/df50260 == recovery poke: drain the parked bio with EIO == poke: pread@1048576 r=512 errno=0(ok) โ returned only after the bio was completed externally -- wedge process now -- PID STAT WCHAN COMMAND gone == kernel log == df5026: raw disk "df50260" up (ONLINE) M-bM^@M^T read@3M toggle-offline, read@2M park, read@1M drain df5026: OFFLINE (ips_timeout reinit failed) -- ips_get_free_cmd now returns EIO, ips_start_io_request will swallow it df5026: poke -- draining 7 parked bio(s) with EIO (what the driver should have done) == unload (clean; drain hook fires if anything is still parked) ==