53 Commits

Author SHA1 Message Date
mav
3e85febb12 MFC r288310: Add to CTL initial support for CDROMs and removable devices.
Relnotes:       yes
2015-10-05 11:30:18 +00:00
mav
4d9db975e6 MFC r288259: Remove some duplicate, legacy, dead and questionable code. 2015-10-05 11:25:48 +00:00
mav
2ae17b4970 MFC r287707: CTL documentation update, mostly for HA. 2015-10-05 09:01:19 +00:00
mav
63b0da2b15 MFC r287620: Remove unused target and initiator IDs. 2015-10-05 08:55:59 +00:00
mav
3f61db5756 MFC r287500: Allow LUN options modification via CTL_LUNREQ_MODIFY.
Not all changes take effect, but that is a different question.
2015-10-05 08:52:37 +00:00
mav
158f0406b0 MFC r287455, r287458, r287459: Remove some dead code. 2015-10-05 08:50:15 +00:00
mav
656a5c3136 MFC r286806: Drop "internal" CTL frontend.
Its idea was to be a simple initiator and execute several commands from
kernel level, but FreeBSD never had consumer for that functionality,
while its implementation polluted many unrelated places.
2015-10-05 08:42:43 +00:00
bapt
76e00b9ec3 make ctdladm(8) return 0 is everything was ok.
retval is used to test the return of XML_Parse function which is ok if 1 is
returned and retval it directly returned to the main function and used as an
exit value.

if all the parsing part is done reset retval to 0 so that the command return 0
if everything ok

Differential Revision:	https://reviews.freebsd.org/D3102
Reviewed by:	trasz
Sponsored by:	gandi.net
2015-07-28 05:48:58 +00:00
trasz
88bb9f05c4 MFC r283285:
Advertise ctlstat(8) a little better.

Sponsored by:	The FreeBSD Foundation
2015-06-21 06:54:54 +00:00
trasz
2c0772761b MFC r278316:
Make "ctladm islist" ignore unknown elements, so the old version
continues to work with newer kernel.

Other ctladm(8) "*list" subcommands seem to already handle it in
a reasonable way.

Sponsored by:	The FreeBSD Foundation
2015-05-15 10:53:06 +00:00
mav
2116079c78 MFC r278161: Bring some more order into iSCSI portal group tags support.
While ctld(8) still does not allow multiple portal groups per target
to be configured, kernel should now be able to handle it.

Sponsored by:	iXsystems, Inc.
2015-02-19 14:33:46 +00:00
mav
aa6a7df89f MFC r278037: CTL LUN mapping rewrite.
Replace iSCSI-specific LUN mapping mechanism with new one, working for any
ports.  By default all ports are created without LUN mapping, exposing all
CTL LUNs as before.  But, if needed, LUN mapping can be manually set on
per-port basis via ctladm.  For its iSCSI ports ctld does it via ioctl(2).
The next step will be to teach ctld to work with FibreChannel ports also.

Respecting additional flexibility of the new mechanism, ctl.conf now allows
alternative syntax for LUN definition.  LUNs can now be defined in global
context, and then referenced from targets by unique name, as needed.  It
allows same LUN to be exposed several times via multiple targets.

While there, increase limit for LUNs per target in ctld from 256 to 1024.
Some initiators do not support LUNs above 255, but that is not our problem.

Relnotes:	yes
Sponsored by:	iXsystems, Inc.
2015-02-19 14:31:16 +00:00
mav
091e4e720c MFC r278621: Fix man page to match real option names. 2015-02-15 08:38:43 +00:00
mav
5d78bffe2b MFC r275865:
Add configuration options to override physical and UNMAP blocks geometry.

While in most cases CTL should correctly fetch those values from backing
storages, there are some initiators (like MS SQL), that may not like large
physical block sizes, even if they are true.  For such cases allow override
fetched values with supported ones (like 4K).
2014-12-24 13:49:40 +00:00
mav
9cec814411 MFC r275959: Report initiator id in portlist XML in more formalized way. 2014-12-23 12:45:29 +00:00
mav
be31195072 MFC r275958: Report XML parsing errors. 2014-12-23 12:44:16 +00:00
mav
66c7f00f29 MFC r275482: Document r275481 changes. 2014-12-18 08:49:50 +00:00
mav
a0e66849d7 MFC r275568:
Count consecutive read requests as blocking in CTL for files and ZVOLs.

Technically read requests can be executed in any order or simultaneously
since they are not changing any data.  But ZFS prefetcher goes crasy when
it receives consecutive requests from different threads.  Since prefetcher
works on level of separate blocks, instead of two consecutive 128K requests
it may receive 32 8K requests in mixed order.

This patch is more workaround then a real fix, and it does not fix all of
prefetcher problems, but it improves sequential read speed by 3-4x times
in some configurations.  On the other side it may hurt performance if
some backing store has no prefetch, that is why it is disabled by default
for raw devices.
2014-12-18 08:46:53 +00:00
trasz
38906efd97 MFC r273464:
Whitespace fixes.

Sponsored by:	The FreeBSD Foundation
2014-11-22 17:50:14 +00:00
mav
6414b04c27 MFC r274154, r274163:
Add to CTL support for logical block provisioning threshold notifications.

For ZVOL-backed LUNs this allows to inform initiators if storage's used or
available spaces get above/below the configured thresholds.

Sponsored by:	iXsystems, Inc.
2014-11-20 01:55:12 +00:00
mav
c9979422b8 MFC r273687:
Add "rpm" and "formfactor" LUN options to match istgt functionality.
2014-11-02 17:30:30 +00:00
mav
d8647fe277 MFC r272978: Improve and document ctladm portlist subcommand.
Make this subcommand less FC-specific, reporting target and port addresses
in more generic way.  Also make it report list of connected initiators in
unified way, working for both FC and iSCSI, and potentially others.
2014-10-20 08:03:23 +00:00
mav
b61a1b5706 MFC r272911:
Make ctld start even if some LUNs are unable to open backing storage.

Such LUNs will be visible to initiators, but return "not ready" status
on media access commands.  If backing storage become available later,
`ctladm modify ...` or `service ctld reload` can trigger its reopen.
2014-10-20 07:41:37 +00:00
mav
cc6cca3f1e MFC r272748:
Implement software (mode page) and hardware (config) write protection.
2014-10-20 07:34:37 +00:00
mav
36c0adf871 MFC r271507:
Implement control over command reordering via options and control mode page.

It allows to bypass range checks between UNMAP and READ/WRITE commands,
which may introduce additional delays while waiting for UNMAP parameters.
READ and WRITE commands are always processed in safe order since their
range checks are almost free.
2014-10-06 13:19:20 +00:00
mav
143513e376 MFC r271505:
Add "readcache" and "writecache" LUN options to control default behavior.

Default values are "on".  Disabling requires backend to support IO_DIRECT
and IO_SYNC flags respectively, or some alternatives.
2014-10-06 13:18:28 +00:00
mav
dd34ac0859 MFC r268767:
Add support for VMWare dialect of EXTENDED COPY command, aka VAAI Clone.

This allows to clone VMs and move them between LUNs inside one storage
host without generating extra network traffic to the initiator and back,
and without being limited by network bandwidth.

LUNs participating in copy operation should have UNIQUE NAA or EUI IDs set.
For LUNs without these IDs VMWare will use traditional copy operations.

Beware: the above LUN IDs explicitly set to values non-unique from the VM
cluster point of view may cause data corruption if wrong LUN is addressed!

Sponsored by:	iXsystems, Inc.
2014-07-30 07:18:32 +00:00
mav
bc8d80ff4e MFC r268457 (by pluknet):
Fix typos.
2014-07-24 15:49:28 +00:00
mav
e65da97c90 MFC r268289:
Fix minor copy-paste bug in r268284.
2014-07-24 15:48:18 +00:00
mav
c0be426ce6 MFC r268447:
Add LUN options to specify 64-bit EUI and NAA identifiers.
2014-07-15 17:20:40 +00:00
mav
7bd4e3c249 MFC r268363:
Add support for READ FULL STATUS action of PERSISTENT RESERVE IN command.
2014-07-15 17:16:06 +00:00
mav
f1200cac15 MFC r268293:
Burry devid port method, which was a gross hack.

Instead make ports provide wanted port and target IDs, and LUNs provide
wanted LUN IDs.  After that core Device ID VPD code only had to link all
of them together and add relative port and port group numbers.

LUN ID for iSCSI LUNs no longer created by CTL, but by ctld, and passed
to CTL as "scsiname" LUN option.  This makes LUNs to report the same set
of IDs, independently from the port through which it is accessed, as
required by SCSI specifications.
2014-07-15 17:06:10 +00:00
mav
7da5c8a0d6 MFC r268284:
Introduce new IOCTL CTL_PORT_LIST reporting in more flexible XML format.

Leave old CTL_GET_PORT_LIST in place so far.  Garbage-collect it later.
2014-07-15 16:59:46 +00:00
mav
712f53c0c4 MFC r267516i (by joel):
mdoc: add missing width to Bl -tag.
2014-07-02 10:49:06 +00:00
mav
cdc0d0159f MFC r267506:
Document additional LUN/backend options.
2014-07-02 10:48:06 +00:00
trasz
baae40831d MFC r257379:
Rename '-h' option to '-p', and use "portal" instead of "host" or "address",
in order to be consistent with iSCSI terminology.  Besides, calling the
option '-h' was just wrong.

This changes usage for newly added iscsictl(8), and two newly added
subcommands to ctladm(8).  This breaks POLA between CURRENT and 10,
but since 10.0 has not been released yet, it's still ok to do.

MFC r257380:

Bump .Dd after r257379.

Approved by:	re (glebius)
Sponsored by:	The FreeBSD Foundation
2013-11-02 02:38:32 +00:00
trasz
e282c243a6 Fix two off-by-ones.
Coverity CID:	1087999, 1011375
Approved by:	re (glebius)
Sponsored by:	FreeBSD Foundation
2013-10-09 12:30:52 +00:00
trasz
089479fb9e Fix incorrect use of sizeof().
Coverity CID:	1011303
Approved by:	re (glebius)
Sponsored by:	FreeBSD Foundation
2013-10-09 12:19:48 +00:00
trasz
a992abf041 Bring in the new iSCSI target and initiator.
Reviewed by:	ken (parts)
Approved by:	re (delphij)
Sponsored by:	FreeBSD Foundation
2013-09-14 15:29:06 +00:00
jh
080f111dcb Check the return value of sbuf_finish().
MFC after:	1 week
2013-05-10 09:58:32 +00:00
joel
d5b5017793 Remove contractions. 2013-04-11 18:46:41 +00:00
trasz
7843a647ca Make ctladm(8) try to load ctl.ko kernel module if needed.
Reviewed by:	ken
2013-04-10 08:48:10 +00:00
trasz
fc0ee61e33 Fix dates in manual pages modified in 249009. 2013-04-02 09:44:59 +00:00
trasz
124d4c1899 Make it possible to build CTL as a module.
Reviewed by:	ken
Sponsored by:	FreeBSD Foundation
2013-04-02 09:42:42 +00:00
ed
af31e8843c More -Wmissing-variable-declarations fixes.
In addition to adding `static' where possible:

- bin/date: Move `retval' into extern.h to make it visible to date.c.
- bin/ed: Move globally used variables into ed.h.
- sbin/camcontrol: Move `verbose' into camcontrol.h and fix shadow warnings.
- usr.bin/calendar: Remove unneeded variables.
- usr.bin/chat: Make `line' local instead of global.
- usr.bin/elfdump: Comment out unneeded function.
- usr.bin/rlogin: Use _Noreturn instead of __dead2.
- usr.bin/tset: Pull `Ospeed' into extern.h.
- usr.sbin/mfiutil: Put global variables in mfiutil.h.
- usr.sbin/pkg: Remove unused `os_corres'.
- usr.sbin/quotaon, usr.sbin/repquota: Remove unused `qfname'.
2012-10-19 14:49:42 +00:00
dim
b74733884c In usr.sbin/ctladm/ctladm.c, function cctl_error_inject(), initialize
the 'retval' variable to zero, to avoid returning garbage in several
cases.

This fixes the following clang 3.2 warnings:

  usr.sbin/ctladm/ctladm.c🔢6: error: variable 'retval' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized]
          if (ioctl(fd, CTL_ERROR_INJECT, &err_desc) == -1) {
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  usr.sbin/ctladm/ctladm.c:1243:10: note: uninitialized use occurs here
          return (retval);
                  ^~~~~~
  usr.sbin/ctladm/ctladm.c🔢2: note: remove the 'if' if its condition is always true
          if (ioctl(fd, CTL_ERROR_INJECT, &err_desc) == -1) {
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  usr.sbin/ctladm/ctladm.c:1161:7: error: variable 'retval' is used uninitialized whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized]
                  if (ioctl(fd, CTL_ERROR_INJECT_DELETE, &err_desc) == -1) {
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  usr.sbin/ctladm/ctladm.c:1243:10: note: uninitialized use occurs here
          return (retval);
                  ^~~~~~
  usr.sbin/ctladm/ctladm.c:1161:3: note: remove the 'if' if its condition is always true
                  if (ioctl(fd, CTL_ERROR_INJECT_DELETE, &err_desc) == -1) {
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  usr.sbin/ctladm/ctladm.c:1029:12: note: initialize the variable 'retval' to silence this warning
          int retval;
                    ^
                     = 0

MFC after:      1 week
2012-08-05 17:23:47 +00:00
eadler
9d2aff8e01 Remove variables which are initialized but never used thereafter reported by gcc46 warning
Approved by:	cperciva
MFC After:	3 days
2012-06-19 06:10:24 +00:00
joel
401c81aaa9 Minor spelling fixes. 2012-06-03 11:29:48 +00:00
wblock
9fa9a2acad Fixes to man8 groff mandoc style, usage mistakes, or typos.
PR:		168016
Submitted by:	Nobuyuki Koganemaru
Approved by:	gjb
MFC after:	3 days
2012-05-24 02:24:03 +00:00
eadler
1ef5fe44d3 Remove trailing whitespace per mdoc lint warning
Disussed with:	gavin
No objection from:	doc
Approved by:	joel
MFC after:	3 days
2012-03-29 05:02:12 +00:00