| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Make XPT_GET_TRAN_SETTINGS to report CAM that command queueing is enabled,
but make couple changes to handle non-queued commands too, if happen.
|
|
|
|
|
|
|
|
| |
Make iSCSI initiator keep Initiator Session ID (ISID) across reconnects.
Previously ISID was changed every time, that made impossible correct
persistent reservation, because reconnected session was identified as
completely new one.
|
|
|
|
|
|
|
| |
Add persistent reservation support to camcontrol(8).
camcontrol(8) now supports a new 'persist' subcommand that allows users to
issue SCSI PERSISTENT RESERVE IN / OUT commands.
|
|
|
|
| |
Add LUN options to specify 64-bit EUI and NAA identifiers.
|
|
|
|
| |
Remove status setting from datamove() path. Leave that to other places.
|
|
|
|
|
|
|
|
| |
Enable TAS feature: notify initiator if its command was aborted by other.
That should make operation more kind to multi-initiator environment.
Without this, other initiators may find out that something bad happened
to their commands only via command timeout.
|
|
|
|
|
| |
Fix task management functions status: task not found is not an error,
while not implemented function is.
|
|
|
|
| |
Fix "use after free" on port creation error in r268291.
|
|
|
|
| |
Add support for READ FULL STATUS action of PERSISTENT RESERVE IN command.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Teach ctl_add_initiator() to dynamically allocate IIDs from pool.
If port passed negative IID value, the function will try to allocate IID
from the pool of unused, based on passed wwpn or name arguments. It does
all its best to make IID unique and persistent across reconnects.
This makes persistent reservation properly work for iSCSI. Previously,
in case of reconnects, reservation could be unexpectedly lost, or even
migrate between intiators.
|
|
|
|
|
|
| |
When new connection comes in, check whether we already have session from
the same intiator (Name+ISID). If so -- terminate the old session and let
the new one take its place, as required by iSCSI RFC.
|
|
|
|
|
|
|
| |
Implement ABORT TASK SET and I_T NEXUS RESET task management functions.
Use the last one to terminate active commands on iSCSI session termination.
Previous code was aborting only commands doing some data moves.
|
|
|
|
| |
Make gcc happy, init idlen2.
|
|
|
|
|
|
|
|
| |
Close race in r268291 between port destruction, delayed by sessions
teardown, and new port creation during `service ctld restart`.
Close it by returning iSCSI port internal state, that allows to identify
dying ports, which should not be counted as existing, from really alive.
|
|
|
|
| |
Add support for SCSI Ports (88h) VPD page.
|
|
|
|
|
| |
Make REPORT TARGET PORT GROUPS command report realistic data instead of
hardcoded garbage.
|
|
|
|
|
|
|
| |
Move lun_map() method from command nexus to port.
Previous implementation made impossible to do some things, such as calling
it for ports other then one through which command arrived.
|
|
|
|
|
|
|
| |
Pass through iSCSI session ISID from LOGIN request to the CTL frontend.
ISID is an important part of initiator transport ID for iSCSI. It is not
used now, but should be to properly implement persistent reservation.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Create separate CTL port for every iSCSI target (and maybe portal group).
Having single port for all iSCSI connections makes problematic implementing
some more advanced SCSI functionality in CTL, that require proper ports
enumeration and identification.
This change extends CTL iSCSI API, making ctld daemon to control list of
iSCSI ports in CTL. When new target is defined in config fine, ctld will
create respective port in CTL. When target is removed -- port will be
also removed after all active commands through that port properly aborted.
This change require ctld to be rebuilt to match the kernel.
As a minor side effect, this allows to have iSCSI targets without LUNs.
While that may look odd and not very useful, that is not incorrect.
|
|
|
|
| |
Improve CTL_BEARG_* flags support, including optional values copyout.
|
|
|
|
| |
Implement and use ctl_frontend_find().
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Make options KPI more generic to allow it to be used for ports too,
not only for LUNs.
|
|
|
|
|
|
|
|
|
| |
Separate concepts of frontend and port.
Before iSCSI implementation CTL had no knowledge about frontend drivers,
it had only frontends, which really were ports (alike to LUNs, if comparing
to backends). But iSCSI added there ioctl() method, which does not belong
to frontend as a port, but belongs to a frontend driver.
|
|
|
|
|
|
|
| |
Remove targ_enable()/targ_disable() frontend methods.
Those methods were never implemented, and I believe that their concept is
wrong, since single frontend (SCSI port) can not handle several targets.
|
|
|
|
| |
Add support for REPORT TIMESTAMP command.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add more formal and strict command parsing and validation.
For every supported command define CDB length and mask of bits that are
allowed to be set. This allows to remove bunch of checks through the code
and still make the validation more strict. To properly do it for commands
supporting multiple service actions, formalize their parsing by adding
subtables for each of such commands.
As visible effect, this change allows to add support for REPORT SUPPORTED
OPERATION CODES command, reporting to client all the data about supported
SCSI commands, except timeouts.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Increase CTL_DEVID_LEN from 16 to 64 bytes.
SPC-4 recommends T10 vendor ID based LUN ID was created by concatenating
product name and serial number (and istgt follows that). But product name
is 16 bytes long by itself, so 16 bytes total length is clearly not enough
to fit both.
To keep compatibility with existing configurations, pad short device IDs
to old length of 16, same as before.
This change probably breaks CTL user-level ABI, so control tools should
be rebuilt after this change.
|
|
|
|
| |
Make this compilable on latest Linux'es without warnings.
|
|
|
|
| |
Correct si_code for the SIGBUS signal generated by the alignment trap.
|
|
|
|
| |
4929 want prevsnap property
|
|
|
|
| |
4924 LZ4 Compression for metadata
|
|
|
|
| |
4914 zfs on-disk bookmark structure should be named *_phys_t
|
|
|
|
| |
4756 metaslab_group_preload() could deadlock
|
|
|
|
| |
4897 Space accounting mismatch in L2ARC/zpool
|
|
|
|
| |
4891 want zdb option to dump all metadata
|
|
|
|
|
| |
4881 zfs send performance degradation when embedded block pointers are
encountered
|
|
|
|
|
| |
4390 i/o errors when deleting filesystem/zvol can lead to space map
corruption
|
|
|
|
|
| |
4757 ZFS embedded-data block pointers ("zero block compression")
4913 zfs release should not be subject to space checks
|
|
|
|
| |
4373 add block contents print to zstreamdump
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a new zfs property, "redundant_metadata" which can have values "all" or
"most". The default will be "all", which is the current behavior. When set
to all, ZFS stores an extra copy of all metadata. If a single on-disk block
is corrupt, at worst a single block of user data (which is recordsize bytes
long) can be lost.
Setting to "most" will cause us to only store 1 copy of level-1 indirect
blocks of user data files. This can improve performance of random writes,
because less metadata has to be written. In practice, at worst about
100 blocks (of recordsize bytes each) of user data can be lost if a single
on-disk block is corrupt.
The exact behavior of which metadata blocks are stored redundantly may change
in future releases.
Illumos issue: 3835 zfs need not store 2 copies of all metadata
|
|
|
|
|
| |
Illumos ZFS issues:
3654 zdb should print number of ganged blocks
|
|
|
|
| |
This was supposed to go to head first :(
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The free space value in the FSInfo block is merely unitialized when it is
0xffffffff. This fixes a bug found in NetBSD.
It must be noted that we never supported all the checks that NetBSD does
as some of them would cause failures with a freshly created FAT32
from MS-Windows.
While here, bring some space fixes.
Obtained from: NetBSD (rev. 1.22)
|
|
|
|
|
|
|
|
|
|
| |
Avoid hardcoding "gcc" in the DTrace tests.
At least one test doesn't work yet without gcc, however gcc is
not always available in base. Using the environment compiler
is more trustable and will also work with an external compiler.
Reviewed by: markj
|
|
|
|
|
| |
Improve support for Intel Lynx Point USB 3.0 controllers by masking
the port routing bits like done in Linux.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Merge from OpenSolaris (24-Jul-2010):
6679140 asymmetric alloc/dealloc activity can induce dynamic variable drops
6679193 dtrace_dynvar walker produces flood of dtrace_dynhash_sink
This finishes a set of merges from the older OpenSolaris releases.
Still the FreeBSD port has many differences that are difficult to
account for but that seems normal given that the kernels are different.
Obtained from: OpenSolaris (through Illumos)
|
|
|
|
|
|
|
|
|
|
| |
The latest versoin of file/libmagic identifes a filesystem image
is identified as "DOS/MBR boot sector" as opposed to "x86 boot sector".
This trips up vmrun.sh when using the new file(1) and makes it want to boot
into the installer instead.
Fix this by just looking for "boot sector" instead.
|
|
|
|
|
|
| |
Enable 8051 before downloading firmware.
Tested by: Carlos Jacobo Puga Medina <cpm at fbsd dot es
|