git: b72d51cfffab - stable/13 - Avoid "consumer not attached in g_io_request" panic when disk lost while using a UFS snapshot.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 07 Oct 2021 23:08:03 UTC
The branch stable/13 has been updated by mckusick:
URL: https://cgit.FreeBSD.org/src/commit/?id=b72d51cfffab35f43cd05ee385047f222e0ab8e0
commit b72d51cfffab35f43cd05ee385047f222e0ab8e0
Author: Kirk McKusick <mckusick@FreeBSD.org>
AuthorDate: 2021-09-28 03:03:43 +0000
Commit: Kirk McKusick <mckusick@FreeBSD.org>
CommitDate: 2021-10-07 23:05:39 +0000
Avoid "consumer not attached in g_io_request" panic when disk lost
while using a UFS snapshot.
Differential revision: https://reviews.freebsd.org/D32150
Sponsored by: Netflix
(cherry picked from commit 4a365e863f209b0c82641c909a858dab53b19134)
---
sys/ufs/ffs/ffs_snapshot.c | 17 ++++++-----------
1 file changed, 6 insertions(+), 11 deletions(-)
diff --git a/sys/ufs/ffs/ffs_snapshot.c b/sys/ufs/ffs/ffs_snapshot.c
index baad50cab2ba..5855a679ab84 100644
--- a/sys/ufs/ffs/ffs_snapshot.c
+++ b/sys/ufs/ffs/ffs_snapshot.c
@@ -63,6 +63,7 @@ __FBSDID("$FreeBSD$");
#include <vm/vm_extern.h>
#include <geom/geom.h>
+#include <geom/geom_vfs.h>
#include <ufs/ufs/extattr.h>
#include <ufs/ufs/quota.h>
@@ -2554,22 +2555,16 @@ readblock(vp, bp, lbn)
ufs2_daddr_t lbn;
{
struct inode *ip;
- struct bio *bip;
struct fs *fs;
ip = VTOI(vp);
fs = ITOFS(ip);
- bip = g_alloc_bio();
- bip->bio_cmd = BIO_READ;
- bip->bio_offset = dbtob(fsbtodb(fs, blkstofrags(fs, lbn)));
- bip->bio_data = bp->b_data;
- bip->bio_length = bp->b_bcount;
- bip->bio_done = NULL;
-
- g_io_request(bip, ITODEVVP(ip)->v_bufobj.bo_private);
- bp->b_error = biowait(bip, "snaprdb");
- g_destroy_bio(bip);
+ bp->b_iocmd = BIO_READ;
+ bp->b_iooffset = dbtob(fsbtodb(fs, blkstofrags(fs, lbn)));
+ bp->b_iodone = bdone;
+ g_vfs_strategy(&ITODEVVP(ip)->v_bufobj, bp);
+ bufwait(bp);
return (bp->b_error);
}