diff --git a/sys/vfs/hammer/hammer_io.c b/sys/vfs/hammer/hammer_io.c --- a/sys/vfs/hammer/hammer_io.c +++ b/sys/vfs/hammer/hammer_io.c @@ -1498,7 +1498,8 @@ hammer_stats_disk_read += bp->b_bufsize; vn_strategy(volume->devvp, nbio); } - hammer_rel_volume(volume, 0); + if (volume != NULL) + hammer_rel_volume(volume, 0); done: if (error) { hdkprintf("failed @ %016jx\n", (intmax_t)zone2_offset); @@ -1597,7 +1598,8 @@ hammer_indirect_callback, bio); } } - hammer_rel_volume(volume, 0); + if (volume != NULL) + hammer_rel_volume(volume, 0); done: if (error) { hdkprintf("failed @ %016jx\n", (intmax_t)zone2_offset); @@ -1757,7 +1759,8 @@ vn_strategy(volume->devvp, nbio); hammer_io_flush_mark(volume); } - hammer_rel_volume(volume, 0); + if (volume != NULL) + hammer_rel_volume(volume, 0); } else { /* * Must fit in a standard HAMMER buffer. In this case all diff --git a/sys/vfs/hammer/hammer_ondisk.c b/sys/vfs/hammer/hammer_ondisk.c --- a/sys/vfs/hammer/hammer_ondisk.c +++ b/sys/vfs/hammer/hammer_ondisk.c @@ -530,6 +530,8 @@ { struct buf *bp; + if (volume == NULL) + return; if (hammer_rel_interlock(&volume->io.lock, locked)) { lwkt_gettoken(&volume->io.hmp->fs_token); volume->ondisk = NULL;