svn commit: r307253 - in stable/10/sys: cam/ata sys
Sepherosa Ziehau
sephe at FreeBSD.org
Fri Oct 14 03:11:32 UTC 2016
Author: sephe
Date: Fri Oct 14 03:11:31 2016
New Revision: 307253
URL: https://svnweb.freebsd.org/changeset/base/307253
Log:
MFC 306396
cam/ata: Allow drivers to veto ATA disk attachment.
This eventhandler is mainly used by VMs, e.g. Hyper-V, whose disk
controllers share the disks with the simulated ATA controllers.
Submitted by: Hongjiang Zhang <honzhan microsoft com>
Discussed with: mav
Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D7693
Modified:
stable/10/sys/cam/ata/ata_xpt.c
stable/10/sys/sys/eventhandler.h
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sys/cam/ata/ata_xpt.c
==============================================================================
--- stable/10/sys/cam/ata/ata_xpt.c Fri Oct 14 03:00:53 2016 (r307252)
+++ stable/10/sys/cam/ata/ata_xpt.c Fri Oct 14 03:11:31 2016 (r307253)
@@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$");
#include <sys/interrupt.h>
#include <sys/sbuf.h>
+#include <sys/eventhandler.h>
#include <sys/lock.h>
#include <sys/mutex.h>
#include <sys/sysctl.h>
@@ -827,12 +828,24 @@ noerror:
{
struct ccb_pathinq cpi;
int16_t *ptr;
+ int veto = 0;
ident_buf = &softc->ident_data;
for (ptr = (int16_t *)ident_buf;
ptr < (int16_t *)ident_buf + sizeof(struct ata_params)/2; ptr++) {
*ptr = le16toh(*ptr);
}
+
+ /*
+ * Allow others to veto this ATA disk attachment. This
+ * is mainly used by VMs, whose disk controllers may
+ * share the disks with the simulated ATA controllers.
+ */
+ EVENTHANDLER_INVOKE(ada_probe_veto, path, ident_buf, &veto);
+ if (veto) {
+ goto device_fail;
+ }
+
if (strncmp(ident_buf->model, "FX", 2) &&
strncmp(ident_buf->model, "NEC", 3) &&
strncmp(ident_buf->model, "Pioneer", 7) &&
Modified: stable/10/sys/sys/eventhandler.h
==============================================================================
--- stable/10/sys/sys/eventhandler.h Fri Oct 14 03:00:53 2016 (r307252)
+++ stable/10/sys/sys/eventhandler.h Fri Oct 14 03:11:31 2016 (r307253)
@@ -283,4 +283,11 @@ typedef void (*unregister_framebuffer_fn
EVENTHANDLER_DECLARE(register_framebuffer, register_framebuffer_fn);
EVENTHANDLER_DECLARE(unregister_framebuffer, unregister_framebuffer_fn);
+/* Veto ada attachment */
+struct cam_path;
+struct ata_params;
+typedef void (*ada_probe_veto_fn)(void *, struct cam_path *,
+ struct ata_params *, int *);
+EVENTHANDLER_DECLARE(ada_probe_veto, ada_probe_veto_fn);
+
#endif /* SYS_EVENTHANDLER_H */
More information about the svn-src-stable
mailing list