Minor fixes, cleanups and updates

git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@115 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Vladislav Bolkhovitin
2007-05-17 14:45:18 +00:00
parent 041696cfea
commit 2edf177f73
4 changed files with 59 additions and 12 deletions

View File

@@ -420,6 +420,31 @@ IMPORTANT: Since data in BLOCKIO and FILEIO modes are not consistent between
========= them, if you try to use a device in both those modes simultaneously,
you will almost instantly corrupt your data on that device.
Pass-through mode
-----------------
As any other hardware, a local SCSI hardware for devices on target,
which are exported in the pass-through mode, can not handle commands
with amount of data and/or segments count in scatter-gather array
bigger, than some values. Therefore, when using the pass-through mode
you should note that the corresponding values on the corresponding
devices on initiators can not be bigger, than values, which the hardware
on the target can support. Otherwise you will see symptoms like small
transfers work well, but large ones stall and messages like: "Unable to
complete command due to SG IO count limitation" are printed in the
kernel logs.
You can't control from the user space limit of the scatter-gather
segments, but for block devices usually it is sufficient if you set on
the initiator /sys/block/DEVICE_NAME/queue/max_sectors_kb in the same or
lower value as in /sys/block/DEVICE_NAME/queue/max_hw_sectors_kb for the
corresponding device on the target.
For not-block devices SCSI commands are usually generated directly by
applications, so, if you experience large transfers stalls, you should
check documentation for your application how to limit the transfer
sizes.
Performance
-----------

View File

@@ -1669,8 +1669,8 @@ static int vdisk_fsync(struct scst_vdisk_thr *thr,
int res = 0;
struct scst_vdisk_dev *virt_dev = thr->virt_dev;
struct file *file = thr->fd;
struct inode *inode = file->f_dentry->d_inode;
struct address_space *mapping = file->f_mapping;
struct inode *inode;
struct address_space *mapping;
TRACE_ENTRY();
@@ -1680,6 +1680,9 @@ static int vdisk_fsync(struct scst_vdisk_thr *thr,
virt_dev->nullio)
goto out;
inode = file->f_dentry->d_inode;
mapping = file->f_mapping;
res = sync_page_range(inode, mapping, loff, len);
if (unlikely(res != 0)) {
PRINT_ERROR_PR("sync_page_range() failed (%d)", res);

View File

@@ -655,7 +655,7 @@ prep_done:
}
if (unlikely(test_bit(SCST_CMD_ABORTED, &cmd->cmd_flags))) {
TRACE_DBG("ABORTED set, returning ABORTED for "
TRACE_MGMT_DBG("ABORTED set, returning ABORTED for "
"cmd %p", cmd);
cmd->state = SCST_CMD_STATE_DEV_DONE;
res = SCST_CMD_STATE_RES_CONT_SAME;
@@ -822,7 +822,7 @@ static int scst_rdy_to_xfer(struct scst_cmd *cmd)
TRACE_ENTRY();
if (unlikely(test_bit(SCST_CMD_ABORTED, &cmd->cmd_flags))) {
TRACE_DBG("ABORTED set, aborting cmd %p", cmd);
TRACE_MGMT_DBG("ABORTED set, aborting cmd %p", cmd);
goto out_dev_done;
}
@@ -1634,7 +1634,7 @@ static int scst_do_send_to_midlev(struct scst_cmd *cmd)
smp_mb__after_set_bit();
if (unlikely(test_bit(SCST_CMD_ABORTED, &cmd->cmd_flags))) {
TRACE_DBG("ABORTED set, aborting cmd %p", cmd);
TRACE_MGMT_DBG("ABORTED set, aborting cmd %p", cmd);
goto out_aborted;
}
@@ -1769,7 +1769,7 @@ void scst_inc_expected_sn(struct scst_tgt_dev *tgt_dev, atomic_t *slot)
/* Optimized for lockless fast path */
TRACE_SN("Slot %d, *cur_sn_slot %d", slot-tgt_dev->sn_slots,
TRACE_SN("Slot %d, *cur_sn_slot %d", slot - tgt_dev->sn_slots,
atomic_read(slot));
if (!atomic_dec_and_test(slot))
@@ -2913,7 +2913,9 @@ int scst_cmd_thread(void *arg)
TRACE_ENTRY();
#if 0
set_user_nice(current, 10);
#endif
current->flags |= PF_NOFREEZE;
spin_lock_irq(&p_cmd_lists->cmd_list_lock);
@@ -3694,7 +3696,7 @@ static void scst_mgmt_cmd_send_done(struct scst_mgmt_cmd *mcmd)
TRACE_DBG("Calling target %s task_mgmt_fn_done()",
mcmd->sess->tgt->tgtt->name);
mcmd->sess->tgt->tgtt->task_mgmt_fn_done(mcmd);
TRACE_MGMT_DBG("Dev handler %s task_mgmt_fn_done() returned",
TRACE_MGMT_DBG("Target's %s task_mgmt_fn_done() returned",
mcmd->sess->tgt->tgtt->name);
}

View File

@@ -126,11 +126,11 @@ work on any other
supported by Linux platform. More detail information you could find in
the project's README file.<br>
</p>
<p style="text-align: justify;">Starting from version 0.9.4 2.4 Linux
Starting from version 0.9.4 2.4 Linux
kernels are not supported anymore, although there could be new SCST
releases for those kernels with very important bug fixes. The latest
stable
version of SCST with 2.4 kernels support is 0.9.3.1-24.</p>
version of SCST with 2.4 kernels support is 0.9.3.1-24.
<p style="text-align: justify;">If you have any questions you can ask
them on the SCST SF.net page either using forum, or scst-devel mailing
list.<br>
@@ -146,10 +146,13 @@ Some nice SCST call graphs, created by Ming Zhang: <a
href="doc/scst_cmd_thread.png">scst_cmd_thread</a>, <a
href="doc/scst_mgmt_cmd_thread.png">scst_mgmt_cmd_thread</a>, <a
href="doc/scst_mgmt_thread.png">scst_mgmt_thread</a><br>
<p>The latest development versions of SCST and its drivers are
<p>The latest development version of SCST and target drivers is
available directly from the
project's SVN. You can access it using either <a
href="http://svn.sourceforge.net/scst">web-based SVN
project's SVN. The SCST release policy is to make stable releases
twice a year, with the only exception if the current stable version
contains a critical bug. Therefore on practice the development version
is usually more stable, than the "stable" one. You can access it using
either <a href="http://svn.sourceforge.net/scst">web-based SVN
repository viewer</a> or using anonymous access: </p>
<p> <tt> svn co https://svn.sourceforge.net/svnroot/scst<br>
</tt></p>
@@ -210,6 +213,14 @@ alpha stage and available from the <a
above how to setup access to it.<br>
<br>
<hr style="width: 100%; height: 2px;">
<h1><small>SCSI RDMA Protocol (SRP) Target driver</small></h1>
<p>SCSI RDMA Protocol (SRP) Target driver is developed
independently from SCST team. You can find instructions how to download
and install it on this page: <a
href="http://lists.openfabrics.org/pipermail/iwg/2007-March/000378.html">http://lists.openfabrics.org/pipermail/iwg/2007-March/000378.html</a><br>
<br>
</p>
<hr style="width: 100%; height: 2px;">
<h1><small>Old target driver for Qlogic 2200/2300 cards<br>
</small></h1>
<div style="text-align: justify;">Old target driver for Qlogic
@@ -233,6 +244,9 @@ works also on 2.6 kernels, see README file
for details. Tested on i386 only, but
should work on any other supported by Linux platform.<br>
<br>
Currently it is not supported and listed here for historical reasons
only.<br>
<br>
</div>
<a href="http://sourceforge.net/project/showfiles.php?group_id=110471">Download</a><br>
<a href="ChangeLog.qla">Change Log</a>
@@ -270,6 +284,9 @@ built-in scsi_target remains available as a compile-time option.<br>
Requires Linux kernel versions 2.4.20 or
higher or 2.6.7 or higher and SCST version 0.9.2 or higher.<br>
<br>
Currently it is not supported and listed here for historical reasons
only.<br>
<br>
<a href="http://sourceforge.net/project/showfiles.php?group_id=110471">Download</a><br>
<br>
</body>