svn commit: r357848 - head/sys/cam/scsi
Warner Losh
imp at FreeBSD.org
Thu Feb 13 01:23:32 UTC 2020
Author: imp
Date: Thu Feb 13 01:23:32 2020
New Revision: 357848
URL: https://svnweb.freebsd.org/changeset/base/357848
Log:
Export the current da flags as bitfield
Export the current flags. They can be useful to other programs wanting to do
special thigns for removable or similar devices.
Differential Revision: https://reviews.freebsd.org/D23417
Modified:
head/sys/cam/scsi/scsi_da.c
Modified: head/sys/cam/scsi/scsi_da.c
==============================================================================
--- head/sys/cam/scsi/scsi_da.c Wed Feb 12 23:54:38 2020 (r357847)
+++ head/sys/cam/scsi/scsi_da.c Thu Feb 13 01:23:32 2020 (r357848)
@@ -122,6 +122,28 @@ typedef enum {
DA_FLAG_CAN_ATA_ZONE = 0x040000,
DA_FLAG_TUR_PENDING = 0x080000
} da_flags;
+#define DA_FLAG_STRING \
+ "\020" \
+ "\001PACK_INVALID" \
+ "\002NEW_PACK" \
+ "\003PACK_LOCKED" \
+ "\004PACK_REMOVABLE" \
+ "\005UNUSED" \
+ "\006NEED_OTAG" \
+ "\007WAS_OTAG" \
+ "\010RETRY_UA" \
+ "\011OPEN" \
+ "\012SCTX_INIT" \
+ "\013CAN_RC16" \
+ "\014PROBED" \
+ "\015DIRTY" \
+ "\016ANNOUCNED" \
+ "\017CAN_ATA_DMA" \
+ "\020CAN_ATA_LOG" \
+ "\021CAN_ATA_IDLOG" \
+ "\022CAN_ATA_SUPACP" \
+ "\023CAN_ATA_ZONE" \
+ "\024TUR_PENDING"
typedef enum {
DA_Q_NONE = 0x00,
@@ -1442,6 +1464,7 @@ static void dasysctlinit(void *context, int pending);
static int dasysctlsofttimeout(SYSCTL_HANDLER_ARGS);
static int dacmdsizesysctl(SYSCTL_HANDLER_ARGS);
static int dadeletemethodsysctl(SYSCTL_HANDLER_ARGS);
+static int daflagssysctl(SYSCTL_HANDLER_ARGS);
static int dazonemodesysctl(SYSCTL_HANDLER_ARGS);
static int dazonesupsysctl(SYSCTL_HANDLER_ARGS);
static int dadeletemaxsysctl(SYSCTL_HANDLER_ARGS);
@@ -2316,6 +2339,11 @@ dasysctlinit(void *context, int pending)
0,
"DIF protection type");
+ SYSCTL_ADD_PROC(&softc->sysctl_ctx, SYSCTL_CHILDREN(softc->sysctl_tree),
+ OID_AUTO, "flags", CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE,
+ softc, 0, daflagssysctl, "A",
+ "Flags for drive");
+
#ifdef CAM_TEST_FAILURE
SYSCTL_ADD_PROC(&softc->sysctl_ctx, SYSCTL_CHILDREN(softc->sysctl_tree),
OID_AUTO, "invalidate", CTLTYPE_U64 | CTLFLAG_RW | CTLFLAG_MPSAFE,
@@ -2588,6 +2616,24 @@ dadeletemethodchoose(struct da_softc *softc, da_delete
/* Fallback to default. */
dadeletemethodset(softc, default_method);
+}
+
+static int
+daflagssysctl(SYSCTL_HANDLER_ARGS)
+{
+ struct sbuf sbuf;
+ struct da_softc *softc = arg1;
+ int error;
+
+ sbuf_new_for_sysctl(&sbuf, NULL, 0, req);
+ if (softc->flags != 0)
+ sbuf_printf(&sbuf, "0x%b", softc->flags, DA_FLAG_STRING);
+ else
+ sbuf_printf(&sbuf, "0");
+ error = sbuf_finish(&sbuf);
+ sbuf_delete(&sbuf);
+
+ return (error);
}
static int
More information about the svn-src-all
mailing list