Ronnie Sahlberg
49dd0fb8b3
Add definition of INVALID OPERATION CODE asqc
2011-04-16 09:55:48 +10:00
Ronnie Sahlberg
07ad0572f2
Add support for READ6
2011-04-16 08:06:16 +10:00
Ronnie Sahlberg
b6782dd7c8
TCP KEEPALIVE support
...
Add tcp keeplaive support on platforms that support these socket options.
Set default to fail the socket after 120 seconds
2011-04-13 21:37:28 +10:00
Ronnie Sahlberg
ef846b0f30
Target initiated NOP:
...
Initial support to try to respond to target initiated NOPs.
2011-04-10 15:33:42 +10:00
Ronnie Sahlberg
cfe19486ee
Add RESERVATION CONFLICT
...
From Richard Sharpe, add support to handle when a target responds with
RESERVATION CONFLICT to a scsi i/o
2011-04-09 12:00:10 +10:00
Ronnie Sahlberg
bceb3d058d
TYPO: fix error strings to "trying TO send ..."
2011-04-06 17:47:55 +10:00
Ronnie Sahlberg
e93ad2f039
Fix a cut-n-paste typo in an error message
2011-04-05 12:24:59 +10:00
Ronnie Sahlberg
1a5f267b1d
WRITE10: Set W bit to 1 only if we write data, i.e. number of blocks are >0
2011-04-04 18:47:32 +10:00
Ronnie Sahlberg
e7300bfb8b
READ10: only set R flag in iscsi if we are reading >0 blocks.
...
If we are reading 0 blocks, the R flag should be clear
2011-04-04 18:34:38 +10:00
Ronnie Sahlberg
5225b5fa66
Add definitions for ASCQ LBA-OUT-OF-RANGE
2011-04-04 17:40:13 +10:00
Ronnie Sahlberg
376f60fc06
Use ioctl(FIONREAD) to determine how many bytes are readable in the socket
...
and make sure we dont try to read mor than that.
2011-04-03 07:22:05 +10:00
Ronnie Sahlberg
4979b7346f
From Richard Sharpe
...
Add a mechanism where residual overflow/underflow can be reportad back to
the application
We probably need somethinf for bidir residuals at some stage too
2011-03-27 19:27:10 +11:00
Ronnie Sahlberg
343d86dca7
get rid of the _async() scsi functions.
...
We dotn need two interfaces that only diuffer in whether they return a pointer or NULL vs an semiidentical interface that returns 0 or <0
All uses of _async() for scsi tasks should be replaced with the equivalent _task() function instead
2011-03-27 18:17:12 +11:00
Ronnie Sahlberg
f4f6ef5033
change dont automatically free the scsi_task once the callback completes.
...
Freeing the scsi_task structure is the responsibility of the application
to either do so during the callback, or later.
2011-03-27 17:53:05 +11:00
Ronnie Sahlberg
4e6e39ee23
Support for REJECT PDUs.
2011-02-27 13:49:49 +11:00
Ronnie Sahlberg
76208e1eff
Rename the _send() functions to _task()
...
These functions are also async functions for SCSI commands but they return
a task structure or NULL.
This task structure can be used in task management functions to abort the task or a whole task set.
2011-02-27 10:29:51 +11:00
Ronnie Sahlberg
bdbf6b5d00
Dont free the scsi task from iscsi_scsi_command_async(), leave that for the caller to do if required.
2011-02-25 15:53:56 +11:00
Ronnie Sahlberg
356a6571bb
Login: remember what the TargetAddress returned during login is so we can
...
handle redirect 'errors'.
2011-02-25 15:35:49 +11:00
Ronnie Sahlberg
d1fdaef5c6
Username/password separator: Allow ':' to separate the chap username/password in addition to '%'
2011-02-20 10:44:53 +11:00
Ronnie Sahlberg
c07dee474c
TaskManagement: Add LunReset, TargetWarmReset, TargetColdReset
2011-02-19 18:23:03 +11:00
Ronnie Sahlberg
6a2a8b5187
TaskManagement: Add a function for abort task set
2011-02-19 18:18:56 +11:00
Ronnie Sahlberg
b81d21ce8c
TaskManagement: Add a function to abort a scsi_task
2011-02-19 18:04:55 +11:00
Ronnie Sahlberg
4315ee9225
Create _send() functions for all scsi commands that return a 'handle'
...
we can use to abort the task later.
2011-02-19 17:30:03 +11:00
Ronnie Sahlberg
09446737aa
TaskMgmt: add a enum for the task management functions
2011-02-15 22:03:41 +11:00
Ronnie Sahlberg
9c7ca31482
TaskMgmt: Add handling of tm responses we receive from the target
2011-02-15 21:58:29 +11:00
Ronnie Sahlberg
3dfdebcba7
TaskMgmt : Add an initial function to create a iscsi tm PDU
2011-02-15 21:53:47 +11:00
Ronnie Sahlberg
332ea04e8d
TaskMgmt: Add a functionto set the Reference cmdsn for tm pdus
2011-02-15 21:44:16 +11:00
Ronnie Sahlberg
95db35e592
TaskMgmt: add a function to set the ritt for tm pdus
2011-02-15 21:42:23 +11:00
Ronnie Sahlberg
f73e42ec26
TaskManagement: Store the ITT and CMDSN in the scsi_task structure
...
These are required for some of the task management functions
2011-02-15 20:57:03 +11:00
Ronnie Sahlberg
0c6025b01b
Using two different structures, with the same first element, and casting
...
between them makes compilers complain about aliasing.
Merge the two and use one single structure bot both iscsi and scsi sync
commands so that gcc stops crying about strict-aliasing
2011-02-09 15:51:45 +11:00
Ronnie Sahlberg
eba0a2de81
SYNC READ10 : add a sync version for read10
2011-02-05 20:41:02 +11:00
Ronnie Sahlberg
c29b9a2aae
Add a new "iscsi_queue_length()" which will tell us how many commands
...
are in flight at the moment.
Aside from commands, we also consider the "has not yet connected completely" as being an i/o.
When this command returns 0 it means we are connected ant the iscsi connection is idle, with no commands in flight.
KVM needs a function to detect idleness like this for its block layer io_flush
function.
2011-02-03 19:08:16 +11:00
Ronnie Sahlberg
d22a2aee3c
When initializing a new session, default to set the
...
"random" ISID randomly.
Dont assume that users will never create multiple contexts
concurrently, in which case the previous getpid()^time(NULL)
would create duplicates.
2011-01-27 11:02:16 +11:00
Ronnie Sahlberg
ec08fe7a45
Read10/Write10 parameters
...
LBA is uint32_t for read/write10
Also store the lba/numblocks arguments in the task structure for read10/write10
This makes it much easier to implement a fully async "read lots/write lots"
applications.
2011-01-23 18:34:16 +11:00
Ronnie Sahlberg
7b5ff1095c
Improve help/usage strings for iscsi-ls and iscsi-inq
...
For help output, also print the syntax for the iscsi url required.
2011-01-09 10:36:53 +11:00
Ronnie Sahlberg
f3f2031a8c
Fix a compiler warning
2011-01-09 09:48:59 +11:00
Ronnie Sahlberg
b9ad4beb41
Replace rindex() with strrchr()
2011-01-09 09:47:39 +11:00
Ronnie Sahlberg
5e11bb17b1
Replace index() with strchr()
2011-01-09 09:46:42 +11:00
Ronnie Sahlberg
f1996d26a6
Check the return from asprintf() and report an error when it fails.
2011-01-09 09:43:33 +11:00
Ronnie Sahlberg
e312aa2ae0
ISID: Add helper functions to set any type of ISID value for the iscsi context.
...
Let default be to create a 'random' ISID during context creation.
2011-01-09 09:26:03 +11:00
Ronnie Sahlberg
aa916b7802
IPv6 Support. Add ipv6 support to the socket management.
...
IPv6 addresses are specified in [...] format.
iscsi://10.1.1.27/...
iscsi://10.1.1.27:3260/...
iscsi://[fec0::1]/...
iscsi://[fec0::1]:3260/...
2011-01-08 16:09:14 +11:00
Ronnie Sahlberg
6f36a6ca2b
Change HeaderDigest to default to None,CRC32C instead of None
...
This allows our default setting to work with any target configuration.
2011-01-03 15:54:38 +11:00
Ronnie Sahlberg
9ddce8dc24
Replace bzero() with memset()
2011-01-03 15:35:36 +11:00
Ronnie Sahlberg
7253a667ae
Add a helper function to parse a Portal URL.
...
A Portal URL is of the form
iscsi://[<username>[%<password>]@]<host>[:<port>]
and is used by command such as iscsi-ls during the discovery login phase.
During discovery we do not yet know the target iqn name, nor the lun of
any devices.
2011-01-03 15:22:01 +11:00
Ronnie Sahlberg
178f9c8751
Only set CHAP username/password if BOTH have been provided.
...
There is no point in setting the username if there is no password
and vice versa.
Also, if we only set username but not passwd this would lead to a segv.
2011-01-03 15:01:38 +11:00
Ronnie Sahlberg
5928575bac
Allow setting the CHAP username/password via environment variables
...
so that the password will not be showing up in log where the application
logs the "filename/iscsi url" or in ps aux output.
LIBISCSI_CHAP_USERNAME and LIBISCSI_CHAP_PASSWORD environment variables are
available to set these outside of the url.
If hte username/password is ALSO set in the URL, the settings in the URL
will override the environment variables.
2011-01-03 14:58:52 +11:00
Ronnie Sahlberg
87072d5622
Dont use gethostbyname2() at all since it is non-portable,
...
use gethostbyname() instead.
2011-01-03 14:48:43 +11:00
Ronnie Sahlberg
adfb7326e3
Solaris needs -lsocket and -lnsl and does not support gethostbyname2()
...
With these changes we build and work on solaris
2011-01-03 10:57:35 +11:00
Ronnie Sahlberg
e7c24af75e
Handle ImmediateData=Yes correctly when sending data to the target.
...
We should not handle any combination of
ImmediateData=Yes/No
InitialR2T=Yes/No
correctly
2011-01-02 19:51:08 +11:00
Ronnie Sahlberg
20eaf85dd4
Handle InitialR2T=Yes correctly when sendign data to a target and wait for a R2T before sending the first block of data.
...
We should now honour, and handle the case of
ImmediateData=No
InitialR2T=Yes
correctly for targets that are limited on receiveing data too fast.
2011-01-02 19:33:43 +11:00