|
|
| version 1.25, 2004/05/13 17:40:15 | version 1.26, 2004/05/19 22:52:58 |
|---|---|
| Line 2753 biowait(struct buf * bp) | Line 2753 biowait(struct buf * bp) |
| * biodone does not mess with B_INVAL, allowing the I/O routine or the | * biodone does not mess with B_INVAL, allowing the I/O routine or the |
| * initiator to leave B_INVAL set to brelse the buffer out of existance | * initiator to leave B_INVAL set to brelse the buffer out of existance |
| * in the biodone routine. | * in the biodone routine. |
| * | |
| * b_dev is required to be reinitialized prior to the top level strategy | |
| * call in a device stack. To avoid improper reuse, biodone() sets | |
| * b_dev to NODEV. | |
| */ | */ |
| void | void |
| biodone(struct buf * bp) | biodone(struct buf * bp) |
| Line 2765 biodone(struct buf * bp) | Line 2769 biodone(struct buf * bp) |
| KASSERT(!(bp->b_flags & B_DONE), ("biodone: bp %p already done", bp)); | KASSERT(!(bp->b_flags & B_DONE), ("biodone: bp %p already done", bp)); |
| bp->b_flags |= B_DONE; | bp->b_flags |= B_DONE; |
| bp->b_dev = NODEV; | |
| runningbufwakeup(bp); | runningbufwakeup(bp); |
| if (bp->b_flags & B_FREEBUF) { | if (bp->b_flags & B_FREEBUF) { |