โฌข DragonFlyBSD Kernel Audit
DF-5026 / run.log
โ† back to finding โ†“ download raw
== 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) ==