Kernel: bread() should mark blocks as free on read failure
authorWill Sowerbutts <will@sowerbutts.com>
Thu, 5 Jan 2017 21:06:30 +0000 (21:06 +0000)
committerWill Sowerbutts <will@sowerbutts.com>
Fri, 6 Jan 2017 00:01:01 +0000 (00:01 +0000)
Kernel/devio.c

index da77df7..3e4b506 100644 (file)
@@ -61,6 +61,7 @@ uint8_t *bread(uint16_t dev, blkno_t blk, bool rewrite)
                if (!rewrite) {
                        if (bdread(bp) == -1) {
                                udata.u_error = EIO;
+                               bp->bf_busy = BF_FREE;
                                return (NULL);
                        }
                }