mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-04 09:09:56 +00:00
Add USB Mass Storage CTL frontend. This makes it possible
for USB OTG-capable hardware to implement device side of USB Mass Storage, ie pretend it's a flash drive. It's configured in the same way as other CTL frontends, using ctladm(8) or ctld(8). Differently from usfs(4), all the configuration can be done without rebuilding the kernel. Testing and review is welcome. Right now I'm still moving, and I don't have access to my test environment, so I'm somewhat reluctant to making larger changes to this code; on the other hand I don't want to let it sit on Phab until my testing setup is back, because I want to get it into 11.1-RELEASE. Reviewed by: emaste (cursory), wblock (man page) MFC after: 2 weeks Relnotes: yes Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D8787
This commit is contained in:
parent
1f87cafa31
commit
cc5bbcb275
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=313959
@ -102,6 +102,7 @@ MAN= aac.4 \
|
||||
cd.4 \
|
||||
cdce.4 \
|
||||
cfi.4 \
|
||||
cfumass.4 \
|
||||
ch.4 \
|
||||
ciss.4 \
|
||||
cloudabi.4 \
|
||||
|
137
share/man/man4/cfumass.4
Normal file
137
share/man/man4/cfumass.4
Normal file
@ -0,0 +1,137 @@
|
||||
.\" Copyright (c) 2017 The FreeBSD Foundation
|
||||
.\" All rights reserved.
|
||||
.\"
|
||||
.\" This software was developed by Edward Tomasz Napierala under sponsorship
|
||||
.\" from the FreeBSD Foundation.
|
||||
.\"
|
||||
.\" Redistribution and use in source and binary forms, with or without
|
||||
.\" modification, are permitted provided that the following conditions
|
||||
.\" are met:
|
||||
.\" 1. Redistributions of source code must retain the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer.
|
||||
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||
.\" notice, this list of conditions and the following disclaimer in the
|
||||
.\" documentation and/or other materials provided with the distribution.
|
||||
.\"
|
||||
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.Dd January 27, 2017
|
||||
.Dt CFUMASS 4
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm cfumass
|
||||
.Nd USB device side support for Mass Storage Class Transport
|
||||
.Sh SYNOPSIS
|
||||
This driver can be compiled into the kernel by placing these lines in
|
||||
the kernel configuration file:
|
||||
.Bd -ragged -offset indent
|
||||
.Cd "device usb"
|
||||
.Cd "device usb_template"
|
||||
.Cd "device iscsi"
|
||||
.Cd "device ctl"
|
||||
.Cd "device cfumass"
|
||||
.Ed
|
||||
.Pp
|
||||
The driver module can also be loaded at boot by adding this line to
|
||||
.Xr loader.conf 5 :
|
||||
.Bd -literal -offset indent
|
||||
cfumass_load="YES"
|
||||
.Ed
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm
|
||||
driver provides device side support for emulating an USB mass storage
|
||||
device compliant with the USB Mass Storage Class Bulk-Only (BBB) Transport
|
||||
specification, implemented as a
|
||||
.Xr ctl 4
|
||||
frontend driver.
|
||||
.Pp
|
||||
To use
|
||||
.Nm :
|
||||
.Bl -bullet
|
||||
.It
|
||||
.Xr cfumass 4
|
||||
must be loaded as a module or compiled into the kernel.
|
||||
.It
|
||||
The USB Mass Storage template must be chosen by setting the
|
||||
.Va hw.usb.template
|
||||
sysctl to 0.
|
||||
.It
|
||||
The USB OTG port must be working in USB device-side mode.
|
||||
This happens automatically upon connection to a USB host.
|
||||
.It
|
||||
There must be a
|
||||
.Xr ctl
|
||||
LUN configured for the
|
||||
.Pa cfumass
|
||||
port.
|
||||
.El
|
||||
.Pp
|
||||
Upon loading, the driver creates a
|
||||
.Xr ctl 4
|
||||
port named
|
||||
.Pa cfumass ,
|
||||
presenting the first LUN mapped for that port - usually LUN 0 - to
|
||||
the USB host.
|
||||
See
|
||||
.Xr ctl.conf 5
|
||||
and
|
||||
.Xr ctld 8
|
||||
for details on configuring the LUN.
|
||||
.Sh SYSCTL VARIABLES
|
||||
These variables are available as both
|
||||
.Xr sysctl 8
|
||||
variables and
|
||||
.Xr loader 8
|
||||
tunables:
|
||||
.Bl -tag -width indent
|
||||
.It Va hw.usb.cfumass.debug
|
||||
Verbosity level for log messages from the
|
||||
.Nm
|
||||
driver.
|
||||
Set to 0 to disable logging or 1 to warn about potential problems.
|
||||
Larger values enable debugging output.
|
||||
Defaults to 1.
|
||||
.It Va hw.usb.cfumass.ignore_stop
|
||||
Ignore START STOP UNIT SCSI commands with START and LOEJ bits cleared.
|
||||
Some initiators send that command to stop the target when the user
|
||||
attempts to gracefully eject the drive, but fail to start it when the
|
||||
drive is reconnected.
|
||||
Set to 0 to handle the command in a standards-compliant way,
|
||||
1 to ignore it and log a warning, or 2 to ignore it silently.
|
||||
Defaults to 1.
|
||||
.It Va hw.usb.cfumass.max_lun
|
||||
Max LUN number to report to the initiator (USB host).
|
||||
Must be between 0 and 15.
|
||||
Some initiators incorrectly handle values larger than 0.
|
||||
Defaults to 0.
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Xr ctl 4 ,
|
||||
.Xr umass 4 ,
|
||||
.Xr usb 4 ,
|
||||
.Xr usb_template 4 ,
|
||||
.Xr ctl.conf 5 ,
|
||||
.Xr ctld 8
|
||||
.Sh HISTORY
|
||||
The
|
||||
.Nm
|
||||
driver first appeared in
|
||||
.Fx 11.1 .
|
||||
.Sh AUTHORS
|
||||
The
|
||||
.Nm
|
||||
driver was developed by
|
||||
.An Edward Tomasz Napierala Aq Mt trasz@FreeBSD.org
|
||||
under sponsorship from the FreeBSD Foundation.
|
@ -172,6 +172,7 @@ Set to 0 to disable sending NOP-In PDUs.
|
||||
Defaults to 5.
|
||||
.El
|
||||
.Sh SEE ALSO
|
||||
.Xr cfumass 4 ,
|
||||
.Xr ctladm 8 ,
|
||||
.Xr ctld 8 ,
|
||||
.Xr ctlstat 8
|
||||
|
@ -239,6 +239,7 @@ type as
|
||||
when using
|
||||
.Xr mount 8 .
|
||||
.Sh SEE ALSO
|
||||
.Xr cfumass 4 ,
|
||||
.Xr ehci 4 ,
|
||||
.Xr ohci 4 ,
|
||||
.Xr uhci 4 ,
|
||||
|
@ -84,6 +84,7 @@ Available templates are:
|
||||
.El
|
||||
.
|
||||
.Sh SEE ALSO
|
||||
.Xr cfumass 4 ,
|
||||
.Xr usb 4 ,
|
||||
.Xr usfs 4
|
||||
.Sh STANDARDS
|
||||
|
@ -58,6 +58,7 @@ sysctl is set to 0).
|
||||
.Pp
|
||||
Upon attach the driver creates a RAM disk which can be read and written.
|
||||
.Sh SEE ALSO
|
||||
.Xr cfumass 4 ,
|
||||
.Xr umass 4 ,
|
||||
.Xr usb 4 ,
|
||||
.Xr usb_template 4
|
||||
|
@ -3037,6 +3037,7 @@ dev/usb/controller/usb_controller.c optional usb
|
||||
#
|
||||
# USB storage drivers
|
||||
#
|
||||
dev/usb/storage/cfumass.c optional cfumass ctl
|
||||
dev/usb/storage/umass.c optional umass
|
||||
dev/usb/storage/urio.c optional urio
|
||||
dev/usb/storage/ustorage_fs.c optional usfs
|
||||
|
1075
sys/dev/usb/storage/cfumass.c
Normal file
1075
sys/dev/usb/storage/cfumass.c
Normal file
File diff suppressed because it is too large
Load Diff
@ -47,7 +47,7 @@ SUBDIR = usb
|
||||
SUBDIR += ${_dwc_otg} ehci ${_musb} ohci uhci xhci ${_uss820dci} ${_at91dci} \
|
||||
${_atmegadci} ${_avr32dci} ${_rsu} ${_rsufw} ${_saf1761otg}
|
||||
SUBDIR += ${_rum} ${_run} ${_runfw} ${_uath} upgt usie ural ${_zyd} ${_urtw}
|
||||
SUBDIR += atp uhid ukbd ums udbp ufm uep wsp ugold uled
|
||||
SUBDIR += atp cfumass uhid ukbd ums udbp ufm uep wsp ugold uled
|
||||
SUBDIR += ucom u3g uark ubsa ubser uchcom ucycom ufoma uftdi ugensa uipaq ulpt \
|
||||
umct umcs umodem umoscom uplcom uslcom uvisor uvscom
|
||||
SUBDIR += udl
|
||||
|
9
sys/modules/usb/cfumass/Makefile
Normal file
9
sys/modules/usb/cfumass/Makefile
Normal file
@ -0,0 +1,9 @@
|
||||
# $FreeBSD$
|
||||
|
||||
.PATH: ${.CURDIR}/../../../dev/usb/storage
|
||||
KMOD= cfumass
|
||||
|
||||
SRCS= bus_if.h device_if.h opt_bus.h opt_usb.h usb_if.h usbdevs.h \
|
||||
cfumass.c
|
||||
|
||||
.include <bsd.kmod.mk>
|
Loading…
Reference in New Issue
Block a user