Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 11 Feb 2021 21:52:46 GMT
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: e07ac3f2fd73 - main - cam: Don't permit crashdumps on non-pollable devices.
Message-ID:  <202102112152.11BLqkrQ019404@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=e07ac3f2fd7336e04178d116033989a6c099fec4

commit e07ac3f2fd7336e04178d116033989a6c099fec4
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2021-02-11 21:51:01 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2021-02-11 21:52:18 +0000

    cam: Don't permit crashdumps on non-pollable devices.
    
    If a disk's SIM doesn't support polling, then it can't be used to
    store crashdumps.  Leave d_dump NULL in that case so that dumpon(8)
    fails gracefully rather than having dumps fail at crash time.
    
    Reviewed by:    scottl, mav, imp
    MFC after:      2 weeks
    Sponsored by:   Chelsio
    Differential Revision:  https://reviews.freebsd.org/D28454
---
 sys/cam/ata/ata_da.c   | 3 ++-
 sys/cam/nvme/nvme_da.c | 3 ++-
 sys/cam/scsi/scsi_da.c | 5 +++--
 3 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/sys/cam/ata/ata_da.c b/sys/cam/ata/ata_da.c
index a34df577174c..38d996510f98 100644
--- a/sys/cam/ata/ata_da.c
+++ b/sys/cam/ata/ata_da.c
@@ -1880,7 +1880,8 @@ adaregister(struct cam_periph *periph, void *arg)
 	softc->disk->d_close = adaclose;
 	softc->disk->d_strategy = adastrategy;
 	softc->disk->d_getattr = adagetattr;
-	softc->disk->d_dump = adadump;
+	if (cam_sim_pollable(periph->sim))
+		softc->disk->d_dump = adadump;
 	softc->disk->d_gone = adadiskgonecb;
 	softc->disk->d_name = "ada";
 	softc->disk->d_drv1 = periph;
diff --git a/sys/cam/nvme/nvme_da.c b/sys/cam/nvme/nvme_da.c
index 8e7f7318ce3b..baeaad182f3a 100644
--- a/sys/cam/nvme/nvme_da.c
+++ b/sys/cam/nvme/nvme_da.c
@@ -898,7 +898,8 @@ ndaregister(struct cam_periph *periph, void *arg)
 	disk->d_strategy = ndastrategy;
 	disk->d_ioctl = ndaioctl;
 	disk->d_getattr = ndagetattr;
-	disk->d_dump = ndadump;
+	if (cam_sim_pollable(periph->sim))
+		disk->d_dump = ndadump;
 	disk->d_gone = ndadiskgonecb;
 	disk->d_name = "nda";
 	disk->d_drv1 = periph;
diff --git a/sys/cam/scsi/scsi_da.c b/sys/cam/scsi/scsi_da.c
index 490f75336efd..e426fe07621b 100644
--- a/sys/cam/scsi/scsi_da.c
+++ b/sys/cam/scsi/scsi_da.c
@@ -2849,7 +2849,7 @@ daregister(struct cam_periph *periph, void *arg)
 	TASK_INIT(&softc->sysctl_task, 0, dasysctlinit, periph);
 
 	/*
-	 * Take an exclusive section lock qon the periph while dastart is called
+	 * Take an exclusive section lock on the periph while dastart is called
 	 * to finish the probe.  The lock will be dropped in dadone at the end
 	 * of probe. This locks out daopen and daclose from racing with the
 	 * probe.
@@ -2914,7 +2914,8 @@ daregister(struct cam_periph *periph, void *arg)
 	softc->disk->d_open = daopen;
 	softc->disk->d_close = daclose;
 	softc->disk->d_strategy = dastrategy;
-	softc->disk->d_dump = dadump;
+	if (cam_sim_pollable(periph->sim))
+		softc->disk->d_dump = dadump;
 	softc->disk->d_getattr = dagetattr;
 	softc->disk->d_gone = dadiskgonecb;
 	softc->disk->d_name = "da";



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202102112152.11BLqkrQ019404>