mirror of
https://github.com/SCST-project/scst.git
synced 2026-07-29 11:33:02 +00:00
Merge branch 'svn-trunk'
This commit is contained in:
@@ -31,12 +31,15 @@ For more information about each subproject see their README files.
|
||||
QLogic target driver
|
||||
====================
|
||||
|
||||
QLogic target driver in qla2x00t/ is the old one, forked from qla2xxx
|
||||
from kernel 2.6.26. It is not maintained anymore and not built by
|
||||
default by the common Makefile targets, like "all".
|
||||
QLogic target driver qla2x00t is the old driver, forked from qla2xxx
|
||||
several years ago. It is very stable, well tested and actively used in
|
||||
many production setups. The ultimate goal is to have the mainstream
|
||||
(git) QLogic target driver to be the main and the only QLogic target
|
||||
driver, but, unfortunately, this driver not yet reached level of quality
|
||||
and maturity of qla2x00t. We with QLogic are working toward it.
|
||||
|
||||
You can find the latest version of this driver in git://git.qlogic.com/scst-qla2xxx.git.
|
||||
It is now maintained by QLogic, hence located in the QLogic's git.
|
||||
You can find the latest version of the git driver in git://git.qlogic.com/scst-qla2xxx.git.
|
||||
It is maintained by QLogic, hence located in the QLogic's git.
|
||||
|
||||
To integrate it into the SCST build tree you need:
|
||||
|
||||
@@ -45,19 +48,20 @@ To integrate it into the SCST build tree you need:
|
||||
2. Create in the SCST root, i.e. this directory, a subdirectory with name
|
||||
qla2x00t_git
|
||||
|
||||
3. Symlink drivers/scsi/qla2xxx subdirectory in the cloned git tree to the
|
||||
qla2x00t_git subdirectory
|
||||
3. Optional for the in-tree build: symlink drivers/scsi/qla2xxx
|
||||
subdirectory in the cloned git tree to the qla2x00t_git subdirectory
|
||||
|
||||
Thats all. Now run either "make all" to build the SCST core and all
|
||||
target drivers with in-tree QLogic drivers, or the following command
|
||||
Thats all. Now common and QLA specific root Makefile targets "magically"
|
||||
start working with the new driver.
|
||||
|
||||
For detail instructions how to setup QLA target build environment see
|
||||
its README or HOWTO. Run either "make all" to build the SCST core and
|
||||
all target drivers with in-tree QLogic drivers, or the following command
|
||||
with standalone QLogic drivers:
|
||||
|
||||
BUILD_2X_MODULE=y CONFIG_SCSI_QLA_FC=y CONFIG_SCSI_QLA2XXX_TARGET=y make all
|
||||
|
||||
and other common and QLA specific root Makefile targets "magically" start
|
||||
working. For detail instructions how to setup QLA target build environment see
|
||||
its README or HOWTO.
|
||||
|
||||
You can still build the old driver using qla_old* root Makefile targets.
|
||||
In presence of qla2x00t_git subdirectory you can still build the
|
||||
qla2x00t using qla_old* root Makefile targets.
|
||||
|
||||
Vladislav Bolkhovitin <vst@vlnb.net>, http://scst.sourceforge.net
|
||||
|
||||
@@ -17,5 +17,6 @@ SRPT 1.0.0 450
|
||||
2.2.x branch start 3981, which is a copy of r3979 on the 2.1.0.x branch
|
||||
2.2.0 4102
|
||||
2.2.1 4737 on the 2.2.x branch
|
||||
3.0.x branch start 5534, which is a copy of trunk r5533.
|
||||
3.0.x branch start 5534, which is a copy of trunk r5533
|
||||
3.0.0 5815 on the 3.0.x branch
|
||||
3.1.x branch start 6591, which is a copy of trunk r6590
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
==============================================
|
||||
SCST 2.x Installation on Gentoo Linux
|
||||
SCST 3.x Installation on Gentoo Linux
|
||||
==============================================
|
||||
|
||||
This howto will get you a working SCST installation on Gentoo Linux, it
|
||||
@@ -15,12 +15,11 @@ Prerequisites:
|
||||
- User with root privileges
|
||||
- Read the official iSCSI-SCST howto for more options and information
|
||||
|
||||
Assumptions for this howto:
|
||||
Assumptions for the examples used in this howto:
|
||||
- User logged on as root
|
||||
- Gentoo Sources version 2.6.39-r3 installed
|
||||
- Manual build kernel without initramfs
|
||||
- Gentoo AMD64 version
|
||||
- Grub bootloader
|
||||
- Grub 1 bootloader (use of GRUB2 should be an easy change)
|
||||
- /boot on a separate partition
|
||||
- One iSCSI target with 2 LUNS, both LUNS virtual disk files
|
||||
- One iSCSI target with one LUN, LUN is a real device
|
||||
@@ -29,17 +28,32 @@ When the above options differ from your environment/setup you will need
|
||||
to change some of the commands provided in this howto for things to
|
||||
work.
|
||||
|
||||
1. Download SCST.
|
||||
|
||||
1. Download the latest SCST version.
|
||||
Choose to download a specific branch or the latest development version
|
||||
|
||||
a) Latest development version
|
||||
cd /root
|
||||
svn co https://scst.svn.sourceforge.net/svnroot/scst/trunk scst
|
||||
svn checkout svn://svn.code.sf.net/p/scst/svn/trunk scst
|
||||
|
||||
b) Specific branch (3.0 used in example)
|
||||
cd /root
|
||||
svn checkout svn://svn.code.sf.net/p/scst/svn/branches/3.0.x scst
|
||||
|
||||
|
||||
2. Patch the kernel (Optional but required for the best speed)
|
||||
|
||||
cd /usr/src/linux-2.6.39-gentoo-r3
|
||||
patch -p1 < /root/scst/iscsi-scst/kernel/patches/put_page_callback-2.6.39.patch
|
||||
If the SCST version downloaded above does not have the patches for the correct kernel
|
||||
you can try the newest patches available, note the errors (if any) during the patch
|
||||
and fix those manually by looking at the sourcefile.rej files generated by the patch
|
||||
that list the failed changes. Use vi or nano to find and change the correct places for
|
||||
the patch changes. (I had to change 2 lines in one source file and add 2 in another
|
||||
when patching a 4.1.12 kernel with 3.18 patch files, so the majority of changes did
|
||||
work perfectly)
|
||||
|
||||
cd /usr/src/linux
|
||||
patch -p1 < /root/scst/iscsi-scst/kernel/patches/put_page_callback-3.18.patch
|
||||
patch -p1 < /root/scst/scst/kernel/scst_exec_req_fifo-3.18.patch
|
||||
make clean
|
||||
|
||||
|
||||
@@ -49,6 +63,9 @@ work.
|
||||
Select Networking support -> Networking options -> TCP/IP networking
|
||||
Select Networking support -> Networking options -> TCP/IP zero-copy transfer completion notification
|
||||
Select Device Drivers -> SCSI device support -> SCSI disk support
|
||||
Select Device Drivers -> InfiniBand support
|
||||
Select Device Drivers -> InfiniBand support -> InfiniBand SCSI RDMA Protocol
|
||||
Select Device Drivers -> InfiniBand support -> iSCSI Extension for RDMA (iSER)
|
||||
Select Enable the block layer -> IO Schedulers -> CFQ I/O Scheduler
|
||||
Set Enable the Block layer -> IO Schedulers -> Default I/O Scheduler to 'CFQ'
|
||||
Set Processor type and features -> Preemption Model to 'No Forced Preemption (Server)'
|
||||
@@ -60,8 +77,8 @@ work.
|
||||
4. Install the new kernel and reboot the system
|
||||
|
||||
mount /boot
|
||||
cp arch/x86_64/boot/bzImage /boot/kernel-2.6.39-gentoo-r3-SCST
|
||||
nano -w /boot/grub/grub.conf (add a new boot entry with the newly compiled kernel)
|
||||
cp arch/x86_64/boot/bzImage /boot/kernel-4.1.12-gentoo-SCST
|
||||
nano -w /boot/grub/grub.conf (GRUB1: add a new boot entry with the newly compiled kernel)
|
||||
umount /boot
|
||||
shutdown -r now
|
||||
|
||||
@@ -113,23 +130,13 @@ to all ip's
|
||||
|
||||
8. Run SCST automatically at startup
|
||||
|
||||
For SCST 2.1 SVN version r3805 and newer do:
|
||||
rc-update add scst default
|
||||
|
||||
For SCST 2.0 and for a SVN version before r3805 and Gentoo with the old baselayout without OpenRC do:
|
||||
rc-update add scst default
|
||||
|
||||
For SCST 2.0 and for a SVN version before r3805 and you have the new Gentoo baselayout do:
|
||||
echo "/etc/init.d/scst start" >> /etc/local.d/scst.start
|
||||
echo "/etc/init.d/scst stop" >> /etc/local.d/scst.stop
|
||||
chmod 775 /etc/local.d/scst.*
|
||||
(the SCST init script doesn't work with openRC and changing it would be a lot of work so local.d is used as an easy workaround)
|
||||
|
||||
|
||||
9. Using SCST access control (optional)
|
||||
9. Using SCST accesscontrol (optional)
|
||||
|
||||
SCST listens on all the targets IP addresses and allows access to any
|
||||
initiators per default. There are a couple of ways to restict access and
|
||||
initiators per default. There are a couple of ways to restrict access and
|
||||
here I will give some examples. For the full documentation see the
|
||||
README file in the scst/iscsi-scst/ directory
|
||||
|
||||
@@ -137,7 +144,7 @@ To make a target accessible on only one IP address do:
|
||||
scstadmin -set_tgt_attr iqn.2011-08.nl.feka:storage.vdisk1 -driver iscsi -attributes allowed_portal=192.168.100.15
|
||||
(Remember the IP address is the address of the target machine, not of
|
||||
the allowed initiator, you can add multiple entries on the same target
|
||||
by repeating the above command, you can also use the wildcards * and ?
|
||||
by repeating the above command, you can also use the wild cards * and ?
|
||||
where the ? stands for any single digit)
|
||||
|
||||
To make targets only accessible by specific inititators add a group to
|
||||
@@ -162,7 +169,7 @@ Notes
|
||||
==============================================
|
||||
|
||||
SCST's vdisk_fileio handler will use a default blocksize of 512b, this
|
||||
is the only safe option for vmware ESXi or older windows versions, for
|
||||
is the only safe option for VMware ESXi or older windows versions, for
|
||||
best performance with newer windows versions a blocksize of 4096 will be
|
||||
much faster.
|
||||
|
||||
|
||||
@@ -116,10 +116,10 @@ void conn_info_show(struct seq_file *seq, struct iscsi_session *session)
|
||||
"[%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x]",
|
||||
NIP6(inet6_sk(sk)->daddr));
|
||||
#elif LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)
|
||||
snprintf(buf, sizeof(buf), "[%p6]",
|
||||
snprintf(buf, sizeof(buf), "[%pI6]",
|
||||
&inet6_sk(sk)->daddr);
|
||||
#else
|
||||
snprintf(buf, sizeof(buf), "[%p6]",
|
||||
snprintf(buf, sizeof(buf), "[%pI6]",
|
||||
&sk->sk_v6_daddr);
|
||||
#endif
|
||||
break;
|
||||
|
||||
@@ -3318,9 +3318,9 @@ static ssize_t iscsi_tcp_get_initiator_ip(struct iscsi_conn *conn,
|
||||
#else
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0) && \
|
||||
(!defined(RHEL_MAJOR) || RHEL_MAJOR -0 < 7)
|
||||
pos = scnprintf(buf, size, "[%p6]", &inet6_sk(sk)->daddr);
|
||||
pos = scnprintf(buf, size, "[%pI6]", &inet6_sk(sk)->daddr);
|
||||
#else
|
||||
pos = scnprintf(buf, size, "[%p6]", &sk->sk_v6_daddr);
|
||||
pos = scnprintf(buf, size, "[%pI6]", &sk->sk_v6_daddr);
|
||||
#endif
|
||||
#endif
|
||||
break;
|
||||
|
||||
@@ -444,7 +444,7 @@ static ssize_t isert_get_initiator_ip(struct iscsi_conn *conn,
|
||||
"[%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x]",
|
||||
NIP6(((struct sockaddr_in6 *)&ss)->sin6_addr));
|
||||
#else
|
||||
pos = scnprintf(buf, size, "[%p6]",
|
||||
pos = scnprintf(buf, size, "[%pI6]",
|
||||
&((struct sockaddr_in6 *)&ss)->sin6_addr);
|
||||
#endif
|
||||
break;
|
||||
|
||||
@@ -4,19 +4,19 @@ ABT_DETAILS="x86_64"
|
||||
ABT_JOBS=5
|
||||
ABT_KERNELS=" \
|
||||
4.3 \
|
||||
4.2.5-nc \
|
||||
4.1.12-nc \
|
||||
4.2.6-nc \
|
||||
4.1.13-nc \
|
||||
4.0.9-nc \
|
||||
3.19.7-nc \
|
||||
3.18.19-nc \
|
||||
3.17.8-nc \
|
||||
3.16.7-nc \
|
||||
3.15.10-nc \
|
||||
3.14.56-nc \
|
||||
3.14.57-nc \
|
||||
3.13.11-nc \
|
||||
3.12.44-nc \
|
||||
3.11.10-nc \
|
||||
3.10.92-nc \
|
||||
3.10.93-nc \
|
||||
3.9.11-nc \
|
||||
3.8.13-nc \
|
||||
3.7.10-nc \
|
||||
|
||||
@@ -140,7 +140,7 @@ extern size_t qla2xxx_del_vtarget(u64 port_name);
|
||||
#endif /*((LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28)) || \
|
||||
defined(FC_VPORT_CREATE_DEFINED))*/
|
||||
|
||||
extern void qla_unknown_atio_work_fn(struct delayed_work *work);
|
||||
extern void qla_unknown_atio_work_fn(struct work_struct *work);
|
||||
|
||||
#else /* CONFIG_SCSI_QLA2XXX_TARGET */
|
||||
|
||||
|
||||
+1
-2
@@ -1505,8 +1505,7 @@ qla2x00_model_desc_show(struct device *dev, struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
scsi_qla_host_t *vha = shost_priv(class_to_shost(dev));
|
||||
return scnprintf(buf, PAGE_SIZE, "%s\n",
|
||||
vha->hw->model_desc ? vha->hw->model_desc : "");
|
||||
return scnprintf(buf, PAGE_SIZE, "%s\n", vha->hw->model_desc);
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
|
||||
+2
-1
@@ -1378,7 +1378,8 @@ qla2x00_fdmi_rhba(scsi_qla_host_t *vha)
|
||||
/* Hardware version. */
|
||||
eiter = (struct ct_fdmi_hba_attr *) (entries + size);
|
||||
eiter->type = cpu_to_be16(FDMI_HBA_HARDWARE_VERSION);
|
||||
strcpy(eiter->a.hw_version, ha->adapter_id);
|
||||
strlcpy(eiter->a.hw_version, ha->adapter_id,
|
||||
sizeof(eiter->a.hw_version));
|
||||
alen = strlen(eiter->a.hw_version);
|
||||
alen += (alen & 3) ? (4 - (alen & 3)) : 4;
|
||||
eiter->len = cpu_to_be16(4 + alen);
|
||||
|
||||
+2
-1
@@ -2190,7 +2190,8 @@ qla2x00_set_model_info(scsi_qla_host_t *vha, uint8_t *model, size_t len,
|
||||
qla2x00_model_name[index * 2 + 1],
|
||||
sizeof(ha->model_desc) - 1);
|
||||
} else {
|
||||
strcpy(ha->model_number, def);
|
||||
strlcpy(ha->model_number, def,
|
||||
sizeof(ha->model_number));
|
||||
}
|
||||
}
|
||||
if (IS_FWI2_CAPABLE(ha))
|
||||
|
||||
@@ -1222,7 +1222,11 @@ qla82xx_pinit_from_rom(scsi_qla_host_t *vha)
|
||||
ql_log(ql_log_info, vha, 0x0072,
|
||||
"%d CRB init values found in ROM.\n", n);
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 4, 0)
|
||||
buf = kmalloc_array(n, sizeof(struct crb_addr_pair), GFP_KERNEL);
|
||||
#else
|
||||
buf = kmalloc(n * sizeof(struct crb_addr_pair), GFP_KERNEL);
|
||||
#endif
|
||||
if (buf == NULL) {
|
||||
ql_log(ql_log_fatal, vha, 0x010c,
|
||||
"Unable to allocate memory.\n");
|
||||
|
||||
+3
-4
@@ -2386,10 +2386,10 @@ EXPORT_SYMBOL(qla2xxx_del_vtarget);
|
||||
#endif /*((LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28)) || \
|
||||
defined(FC_VPORT_CREATE_DEFINED))*/
|
||||
|
||||
void qla_unknown_atio_work_fn(struct delayed_work *work)
|
||||
void qla_unknown_atio_work_fn(struct work_struct *work)
|
||||
{
|
||||
struct qla_hw_data *ha = container_of(work, struct qla_hw_data,
|
||||
unknown_atio_work);
|
||||
unknown_atio_work.work);
|
||||
qla_target.tgt_try_to_dequeue_unknown_atios(ha);
|
||||
return;
|
||||
}
|
||||
@@ -2661,8 +2661,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
|
||||
mutex_init(&base_vha->tgt_mutex);
|
||||
mutex_init(&base_vha->tgt_host_action_mutex);
|
||||
INIT_LIST_HEAD(&ha->unknown_atio_list);
|
||||
INIT_DELAYED_WORK(&ha->unknown_atio_work,
|
||||
(void (*)(struct work_struct *))qla_unknown_atio_work_fn);
|
||||
INIT_DELAYED_WORK(&ha->unknown_atio_work, qla_unknown_atio_work_fn);
|
||||
qla_clear_tgt_mode(base_vha);
|
||||
#endif /* CONFIG_SCSI_QLA2XXX_TARGET */
|
||||
|
||||
|
||||
@@ -304,7 +304,9 @@ done
|
||||
|
||||
scst_03_public_headers="scst/include/scst.h scst/include/scst_const.h \
|
||||
scst/include/scst_event.h scst/include/backport.h"
|
||||
scst_04_main="scst/src/scst_main.c scst/src/scst_module.c scst/src/scst_priv.h"
|
||||
scst_04_main="scst/src/scst_main.c scst/src/scst_module.c scst/src/scst_priv.h \
|
||||
scst/src/scst_copy_mgr.c scst/src/scst_dlm.c scst/src/scst_dlm.h \
|
||||
scst/src/scst_event.c scst/src/scst_no_dlm.c"
|
||||
scst_05_targ="scst/src/scst_targ.c"
|
||||
scst_06_lib="scst/src/scst_lib.c"
|
||||
scst_07_pres="scst/src/scst_pres.h scst/src/scst_pres.c"
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ SCST supports the following I/O modes:
|
||||
* User space mode using scst_user device handler, which allows to
|
||||
implement in the user space high performance virtual SCSI
|
||||
devices. Comparing with fully in-kernel dev handlers this mode has
|
||||
very low overhead (few %%)
|
||||
very low overhead (few %%).
|
||||
|
||||
* "Performance" device handlers, which provide in pseudo pass-through
|
||||
mode a way for direct performance measurements without overhead of
|
||||
|
||||
@@ -24,6 +24,11 @@ SCST supports the following I/O modes:
|
||||
caching between application and disk or need the large block
|
||||
throughput.
|
||||
|
||||
* User space mode using scst_user device handler, which allows to
|
||||
implement in the user space high performance virtual SCSI
|
||||
devices. Comparing with fully in-kernel dev handlers this mode has
|
||||
very low overhead (few %%).
|
||||
|
||||
* "Performance" device handlers, which provide in pseudo pass-through
|
||||
mode a way for direct performance measurements without overhead of
|
||||
actual data transferring from/to underlying SCSI device.
|
||||
|
||||
+26
-2
@@ -187,6 +187,15 @@ static inline bool cpumask_equal(const cpumask_t *src1p,
|
||||
}
|
||||
#endif
|
||||
|
||||
/* <linux/dlm.h> */
|
||||
|
||||
/* See also commit 0f8e0d9a317406612700426fad3efab0b7bbc467 */
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 28)
|
||||
enum {
|
||||
DLM_LSFL_NEWEXCL = 0
|
||||
};
|
||||
#endif
|
||||
|
||||
/* <linux/fs.h> */
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0) && \
|
||||
@@ -255,7 +264,9 @@ static inline void hex2bin(u8 *dst, const char *src, size_t count)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39)
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 39) && \
|
||||
LINUX_VERSION_CODE != KERNEL_VERSION(2, 6, 38) && \
|
||||
(!defined(RHEL_MAJOR) || RHEL_MAJOR -0 < 6)
|
||||
static inline int __must_check kstrtoull(const char *s, unsigned int base,
|
||||
unsigned long long *res)
|
||||
{
|
||||
@@ -281,6 +292,16 @@ static inline int __must_check kstrtol(const char *s, unsigned int base,
|
||||
}
|
||||
#endif
|
||||
|
||||
/* <linux/kmod.h> */
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 23)
|
||||
enum umh_wait {
|
||||
UMH_NO_WAIT = -1, /* don't wait at all */
|
||||
UMH_WAIT_EXEC = 0, /* wait for the exec, but not the process */
|
||||
UMH_WAIT_PROC = 1, /* wait for the process to complete */
|
||||
};
|
||||
#endif
|
||||
|
||||
/* <linux/list.h> */
|
||||
|
||||
#ifndef __list_for_each
|
||||
@@ -427,7 +448,10 @@ static inline void sg_set_page(struct scatterlist *sg, struct page *page,
|
||||
(__flags), NULL, NULL)
|
||||
#endif
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 4, 0)
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 4, 0) && \
|
||||
!(LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 52) && \
|
||||
LINUX_VERSION_CODE < KERNEL_VERSION(3, 3, 0)) && \
|
||||
(!defined(RHEL_MAJOR) || RHEL_MAJOR -0 < 6)
|
||||
static inline void *kmalloc_array(size_t n, size_t size, gfp_t flags)
|
||||
{
|
||||
if (size != 0 && n > ULONG_MAX / size)
|
||||
|
||||
+5
-1
@@ -1975,7 +1975,11 @@ struct scst_session {
|
||||
*/
|
||||
struct list_head sess_cm_list_id_list;
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
struct work_struct sess_cm_list_id_cleanup_work;
|
||||
#else
|
||||
struct delayed_work sess_cm_list_id_cleanup_work;
|
||||
#endif
|
||||
|
||||
/* sysfs release completion */
|
||||
struct completion *sess_kobj_release_cmpl;
|
||||
@@ -2761,7 +2765,7 @@ struct scst_device {
|
||||
unsigned int dev_unregistering:1;
|
||||
|
||||
/*
|
||||
* Set if ext blocking is pending. It if just shortcut for
|
||||
* Set if ext blocking is pending. It is just shortcut for
|
||||
* !list_empty(&dev->ext_blockers_list) to save a cache miss.
|
||||
*/
|
||||
unsigned int ext_blocking_pending:1;
|
||||
|
||||
@@ -63,7 +63,11 @@ struct scst_event_entry {
|
||||
int *pqueued_events_cnt;
|
||||
union {
|
||||
struct work_struct scst_event_queue_work;
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
struct work_struct event_timeout_work;
|
||||
#else
|
||||
struct delayed_work event_timeout_work;
|
||||
#endif
|
||||
};
|
||||
|
||||
struct scst_event event;
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
EXTRA_CFLAGS += -Iinclude/scst -Wno-unused-parameter
|
||||
EXTRA_CFLAGS += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_proc.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ iscsi-scst/ qla2xxx-target/ srpt/ \
|
||||
scst_local/
|
||||
|
||||
scst_local/
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
ccflags-y += -Iinclude/scst -Wno-unused-parameter
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_proc.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ iscsi-scst/ qla2xxx-target/ srpt/ \
|
||||
scst_local/
|
||||
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
ccflags-y += -Iinclude/scst -Wno-unused-parameter
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_proc.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ iscsi-scst/ qla2xxx-target/ srpt/ \
|
||||
scst_local/
|
||||
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
ccflags-y += -Iinclude/scst -Wno-unused-parameter
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ iscsi-scst/ qla2xxx-target/ srpt/ \
|
||||
scst_local/
|
||||
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
ccflags-y += -Iinclude/scst -Wno-unused-parameter
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ iscsi-scst/ qla2xxx-target/ srpt/ \
|
||||
scst_local/
|
||||
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
ccflags-y += -Iinclude/scst -Wno-unused-parameter
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ iscsi-scst/ qla2xxx-target/ srpt/ \
|
||||
scst_local/
|
||||
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
ccflags-y += -Iinclude/scst -Wno-unused-parameter
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ iscsi-scst/ qla2xxx-target/ srpt/ \
|
||||
scst_local/
|
||||
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
ccflags-y += -Iinclude/scst -Wno-unused-parameter
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ iscsi-scst/ qla2xxx-target/ srpt/ \
|
||||
scst_local/
|
||||
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
ccflags-y += -Iinclude/scst -Wno-unused-parameter
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ iscsi-scst/ qla2xxx-target/ srpt/ \
|
||||
scst_local/
|
||||
|
||||
|
||||
@@ -1,14 +1,17 @@
|
||||
ccflags-y += -Iinclude/scst -Wno-unused-parameter
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ iscsi-scst/ qla2xxx-target/ srpt/ \
|
||||
scst_local/
|
||||
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Iinclude/scst -Wno-unused-parameter
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Iinclude/scst -Wno-unused-parameter
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
ccflags-y += -Wno-unused-parameter
|
||||
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_tg.o
|
||||
scst-y += scst_copy_mgr.o
|
||||
scst-y += scst_debug.o
|
||||
scst-y += scst_dlm.o
|
||||
scst-y += scst_event.o
|
||||
scst-y += scst_lib.o
|
||||
scst-y += scst_main.o
|
||||
scst-y += scst_mem.o
|
||||
scst-y += scst_no_dlm.o
|
||||
scst-y += scst_pres.o
|
||||
scst-y += scst_sysfs.o
|
||||
scst-y += scst_targ.o
|
||||
scst-y += scst_tg.o
|
||||
|
||||
obj-$(CONFIG_SCST) += scst.o dev_handlers/ fcst/ iscsi-scst/ qla2xxx-target/ \
|
||||
srpt/ scst_local/
|
||||
|
||||
@@ -888,9 +888,11 @@ static void dev_user_flush_dcache(struct scst_user_cmd *ucmd)
|
||||
|
||||
for (i = 0; (bufflen > 0) && (i < buf_ucmd->num_data_pages); i++) {
|
||||
struct page *page __attribute__((unused));
|
||||
|
||||
page = buf_ucmd->data_pages[i];
|
||||
#ifdef ARCH_HAS_FLUSH_ANON_PAGE
|
||||
struct vm_area_struct *vma = find_vma(current->mm, start);
|
||||
|
||||
if (vma != NULL)
|
||||
flush_anon_page(vma, page, start);
|
||||
#endif
|
||||
|
||||
+33
-11
@@ -11,7 +11,11 @@
|
||||
#include <asm/unaligned.h>
|
||||
#include <linux/delay.h>
|
||||
|
||||
#ifdef INSIDE_KERNEL_TREE
|
||||
#include <scst/scst.h>
|
||||
#else
|
||||
#include "scst.h"
|
||||
#endif
|
||||
#include "scst_priv.h"
|
||||
#include "scst_pres.h"
|
||||
|
||||
@@ -179,14 +183,18 @@ typedef void (*scst_cm_retry_fn_t)(struct scst_cmd *cmd);
|
||||
|
||||
struct scst_cm_retry {
|
||||
struct scst_cmd *cm_retry_cmd;
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
struct work_struct cm_retry_work;
|
||||
#else
|
||||
struct delayed_work cm_retry_work;
|
||||
#endif
|
||||
scst_cm_retry_fn_t cm_retry_fn;
|
||||
};
|
||||
|
||||
static void scst_cm_retry_work_fn(struct delayed_work *work)
|
||||
static void scst_cm_retry_work_fn(struct work_struct *work)
|
||||
{
|
||||
struct scst_cm_retry *retry = container_of(work, struct scst_cm_retry,
|
||||
cm_retry_work);
|
||||
cm_retry_work.work);
|
||||
|
||||
TRACE_ENTRY();
|
||||
|
||||
@@ -276,7 +284,7 @@ try_retry:
|
||||
next_retry_time = cur_time + SCST_CM_RETRIES_WAIT;
|
||||
|
||||
TRACE_DBG("Retrying cmd %p (imm_retry %d, next_retry_time %ld, "
|
||||
"cur_time %ld, " "start_time %ld, max_retry_time %ld): going "
|
||||
"cur_time %ld, start_time %ld, max_retry_time %ld): going "
|
||||
"to sleep", cmd, imm_retry, next_retry_time, cur_time,
|
||||
start_time, max_retry_time);
|
||||
|
||||
@@ -295,8 +303,7 @@ try_retry:
|
||||
}
|
||||
retry->cm_retry_cmd = cmd;
|
||||
__scst_cmd_get(cmd);
|
||||
INIT_DELAYED_WORK(&retry->cm_retry_work,
|
||||
(void (*)(struct work_struct *))scst_cm_retry_work_fn);
|
||||
INIT_DELAYED_WORK(&retry->cm_retry_work, scst_cm_retry_work_fn);
|
||||
retry->cm_retry_fn = retry_fn;
|
||||
|
||||
if (imm_retry) {
|
||||
@@ -356,7 +363,7 @@ static int scst_cm_setup_this_data_descr(struct scst_cmd *ec_cmd)
|
||||
EXTRACHECKS_BUG_ON(priv->cm_cur_data_descr > priv->cm_data_descrs_cnt);
|
||||
|
||||
if (priv->cm_cur_data_descr == priv->cm_data_descrs_cnt) {
|
||||
TRACE_DBG("No more data desriptors for ec_cmd %p", ec_cmd);
|
||||
TRACE_DBG("No more data descriptors for ec_cmd %p", ec_cmd);
|
||||
res = -ENOENT;
|
||||
goto out;
|
||||
}
|
||||
@@ -727,6 +734,7 @@ static void scst_cm_store_list_id_details(struct scst_cmd *ec_cmd)
|
||||
l->cm_status = ec_cmd->status;
|
||||
if (scst_sense_valid(ec_cmd->sense)) {
|
||||
int len = ec_cmd->sense_valid_len;
|
||||
|
||||
if (len > sizeof(l->cm_sense)) {
|
||||
PRINT_WARNING("EC command's sense is "
|
||||
"too big (%d) with max allowed "
|
||||
@@ -1327,6 +1335,7 @@ static void scst_cm_gen_reads(struct scst_cmd *ec_cmd)
|
||||
|
||||
while (1) {
|
||||
int rc;
|
||||
|
||||
while ((priv->cm_left_to_read > 0) &&
|
||||
(priv->cm_cur_in_flight < SCST_MAX_IN_FLIGHT_INTERNAL_COMMANDS)) {
|
||||
int blocks;
|
||||
@@ -1795,6 +1804,7 @@ bool scst_cm_check_block_all_devs(struct scst_cmd *cmd)
|
||||
|
||||
if (unlikely(res)) {
|
||||
struct scst_cmd *blocked_cmd = e->cm_fcmd;
|
||||
|
||||
list_for_each_entry(e, &d->cm_sorted_devs_list,
|
||||
cm_sorted_devs_list_entry) {
|
||||
if (e->cm_fcmd == blocked_cmd)
|
||||
@@ -1839,6 +1849,7 @@ void scst_cm_abort_ec_cmd(struct scst_cmd *ec_cmd)
|
||||
list_for_each_entry(ip, &p->cm_internal_cmd_list,
|
||||
cm_internal_cmd_list_entry) {
|
||||
struct scst_cmd *c = ip->cm_cmd;
|
||||
|
||||
TRACE_MGMT_DBG("Aborting (f)cmd %p", c);
|
||||
set_bit(SCST_CMD_ABORTED, &c->cmd_flags);
|
||||
}
|
||||
@@ -1981,10 +1992,16 @@ out_unlock_free:
|
||||
goto out;
|
||||
}
|
||||
|
||||
void sess_cm_list_id_cleanup_work_fn(struct delayed_work *work)
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
void sess_cm_list_id_cleanup_work_fn(void *p)
|
||||
{
|
||||
struct scst_session *sess = p;
|
||||
#else
|
||||
void sess_cm_list_id_cleanup_work_fn(struct work_struct *work)
|
||||
{
|
||||
struct scst_session *sess = container_of(work,
|
||||
struct scst_session, sess_cm_list_id_cleanup_work);
|
||||
struct scst_session, sess_cm_list_id_cleanup_work.work);
|
||||
#endif
|
||||
struct scst_cm_list_id *l, *t;
|
||||
unsigned long cur_time = jiffies;
|
||||
unsigned long flags;
|
||||
@@ -2513,6 +2530,7 @@ static int scst_cm_dev_register(struct scst_device *dev)
|
||||
for (i = 0; i < SESS_TGT_DEV_LIST_HASH_SIZE; i++) {
|
||||
struct scst_tgt_dev *tgt_dev;
|
||||
struct list_head *head = &scst_cm_sess->sess_tgt_dev_list[i];
|
||||
|
||||
list_for_each_entry(tgt_dev, head, sess_tgt_dev_list_entry) {
|
||||
if (tgt_dev->dev == dev) {
|
||||
PRINT_ERROR("Copy Manager already registered "
|
||||
@@ -2578,6 +2596,7 @@ static void scst_cm_dev_unregister(struct scst_device *dev)
|
||||
for (i = 0; i < SESS_TGT_DEV_LIST_HASH_SIZE; i++) {
|
||||
struct scst_tgt_dev *tgt_dev;
|
||||
struct list_head *head = &scst_cm_sess->sess_tgt_dev_list[i];
|
||||
|
||||
list_for_each_entry(tgt_dev, head, sess_tgt_dev_list_entry) {
|
||||
if (tgt_dev->dev == dev) {
|
||||
scst_acg_del_lun(scst_cm_tgt->default_acg,
|
||||
@@ -2632,6 +2651,7 @@ static bool scst_cm_check_access_acg(const char *initiator_name,
|
||||
list_for_each_entry(acg_dev, &acg->acg_dev_list, acg_dev_list_entry) {
|
||||
if (acg_dev->dev == dev) {
|
||||
struct scst_acn *acn;
|
||||
|
||||
if (default_acg)
|
||||
goto found;
|
||||
list_for_each_entry(acn, &acg->acn_list, acn_list_entry) {
|
||||
@@ -2957,6 +2977,7 @@ skip_fcmd_create:
|
||||
#if defined(CONFIG_SCST_DEBUG) || defined(CONFIG_SCST_EXTRACHECKS)
|
||||
{
|
||||
struct scst_cm_dev_entry *tp = NULL;
|
||||
|
||||
list_for_each_entry(t, &priv->cm_sorted_devs_list, cm_sorted_devs_list_entry) {
|
||||
TRACE_DBG("t %p, cm dev %p", t, t->cm_fcmd->dev);
|
||||
if (tp != NULL) {
|
||||
@@ -3045,7 +3066,7 @@ static int scst_cm_parse_b2b_seg_descr(struct scst_cmd *ec_cmd,
|
||||
scst_cm_set_seg_err_sense(ec_cmd, 0xD, 2, seg_num, 6);
|
||||
goto out_err;
|
||||
}
|
||||
if (tgt_des->read_only){
|
||||
if (tgt_des->read_only) {
|
||||
PRINT_WARNING("Target descriptor refers to read-only device");
|
||||
scst_cm_set_seg_err_sense(ec_cmd, 0, 0, seg_num, 6);
|
||||
goto out_err;
|
||||
@@ -3125,6 +3146,7 @@ static void scst_cm_free_ec_priv(struct scst_cmd *ec_cmd, bool unblock_dev)
|
||||
list_for_each_entry_safe(ip, it, &p->cm_internal_cmd_list,
|
||||
cm_internal_cmd_list_entry) {
|
||||
struct scst_cmd *c = ip->cm_cmd;
|
||||
|
||||
scst_cm_del_free_from_internal_cmd_list(c, unblock_dev);
|
||||
__scst_cmd_put(c);
|
||||
}
|
||||
@@ -3526,8 +3548,8 @@ static int scst_cm_mgmt(struct scst_sysfs_work_item *work)
|
||||
d->scsi_dev->channel == channel &&
|
||||
d->scsi_dev->id == id &&
|
||||
d->scsi_dev->lun == lun) {
|
||||
dev = d;
|
||||
break;
|
||||
dev = d;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (dev == NULL) {
|
||||
|
||||
+79
-29
@@ -572,7 +572,8 @@ static int scst_dlm_update_nodeids(struct scst_pr_dlm_data *pr_dlm)
|
||||
static const char comms_dir[] = "/sys/kernel/config/dlm/cluster/comms";
|
||||
struct file *comms;
|
||||
char *p, *entries = kzalloc(1, GFP_KERNEL);
|
||||
uint32_t nodeid, *new;
|
||||
unsigned long nodeid;
|
||||
uint32_t *new;
|
||||
int i, ret, num_nodes;
|
||||
char path[256], buf[64];
|
||||
|
||||
@@ -612,7 +613,9 @@ static int scst_dlm_update_nodeids(struct scst_pr_dlm_data *pr_dlm)
|
||||
pr_dlm->nodeid = new;
|
||||
pr_dlm->participants = num_nodes;
|
||||
for (i = 0, p = entries; *p; i++, p += strlen(p) + 1) {
|
||||
nodeid = simple_strtoul(p, NULL, 0);
|
||||
ret = kstrtoul(p, 0, &nodeid);
|
||||
if (WARN_ON_ONCE(ret < 0))
|
||||
continue;
|
||||
snprintf(path, sizeof(path), "%s/%s/local", comms_dir, p);
|
||||
if (scst_read_file(path, buf, sizeof(buf)) >= 0 &&
|
||||
strcmp(buf, "1\n") == 0)
|
||||
@@ -1077,10 +1080,16 @@ static void scst_dlm_pre_bast(void *bastarg, int mode)
|
||||
queue_work(pr_dlm->from_wq, &pr_dlm->pre_upd_work);
|
||||
}
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
static void scst_pre_join_work(void *p)
|
||||
{
|
||||
struct scst_pr_dlm_data *pr_dlm = p;
|
||||
#else
|
||||
static void scst_pre_join_work(struct work_struct *work)
|
||||
{
|
||||
struct scst_pr_dlm_data *pr_dlm = container_of(work,
|
||||
struct scst_pr_dlm_data, pre_join_work);
|
||||
#endif
|
||||
dlm_lockspace_t *ls;
|
||||
|
||||
mutex_lock(&pr_dlm->ls_mutex);
|
||||
@@ -1094,10 +1103,16 @@ static void scst_pre_join_work(struct work_struct *work)
|
||||
mutex_unlock(&pr_dlm->ls_mutex);
|
||||
}
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
static void scst_pre_upd_work(void *p)
|
||||
{
|
||||
struct scst_pr_dlm_data *pr_dlm = p;
|
||||
#else
|
||||
static void scst_pre_upd_work(struct work_struct *work)
|
||||
{
|
||||
struct scst_pr_dlm_data *pr_dlm = container_of(work,
|
||||
struct scst_pr_dlm_data, pre_upd_work);
|
||||
#endif
|
||||
dlm_lockspace_t *ls;
|
||||
|
||||
mutex_lock(&pr_dlm->ls_mutex);
|
||||
@@ -1128,10 +1143,16 @@ static void scst_dlm_post_bast(void *bastarg, int mode)
|
||||
* Note: the node that has invoked scst_trigger_lvb_update() holds PR_LOCK
|
||||
* in EX mode and waits until this function has finished.
|
||||
*/
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
static void scst_copy_to_dlm_work(void *p)
|
||||
{
|
||||
struct scst_pr_dlm_data *pr_dlm = p;
|
||||
#else
|
||||
static void scst_copy_to_dlm_work(struct work_struct *work)
|
||||
{
|
||||
struct scst_pr_dlm_data *pr_dlm = container_of(work,
|
||||
struct scst_pr_dlm_data, copy_to_dlm_work);
|
||||
#endif
|
||||
struct scst_device *dev = pr_dlm->dev;
|
||||
dlm_lockspace_t *ls;
|
||||
int res;
|
||||
@@ -1195,10 +1216,16 @@ unlock_ls:
|
||||
* scst_pr_init_tgt_dev() and scst_pr_clear_tgt_dev() in scst_pres.c protect
|
||||
* these manipulations by locking the PR data structures for writing.
|
||||
*/
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
static void scst_copy_from_dlm_work(void *p)
|
||||
{
|
||||
struct scst_pr_dlm_data *pr_dlm = p;
|
||||
#else
|
||||
static void scst_copy_from_dlm_work(struct work_struct *work)
|
||||
{
|
||||
struct scst_pr_dlm_data *pr_dlm = container_of(work,
|
||||
struct scst_pr_dlm_data, copy_from_dlm_work);
|
||||
#endif
|
||||
struct scst_device *dev = pr_dlm->dev;
|
||||
dlm_lockspace_t *ls;
|
||||
int res = -ENOENT;
|
||||
@@ -1250,10 +1277,16 @@ static void scst_dlm_post_ast(void *astarg)
|
||||
}
|
||||
|
||||
/* Tell other nodes to refresh their local state from the lock value blocks. */
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
static void scst_reread_lvb_work(void *p)
|
||||
{
|
||||
struct scst_pr_dlm_data *pr_dlm = p;
|
||||
#else
|
||||
static void scst_reread_lvb_work(struct work_struct *work)
|
||||
{
|
||||
struct scst_pr_dlm_data *pr_dlm = container_of(work,
|
||||
struct scst_pr_dlm_data, reread_lvb_work);
|
||||
#endif
|
||||
dlm_lockspace_t *ls;
|
||||
struct scst_lksb pr_lksb;
|
||||
int res;
|
||||
@@ -1275,10 +1308,16 @@ unlock_ls:
|
||||
}
|
||||
|
||||
/* Tell other nodes to update the DLM lock value blocks. */
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
static void scst_lvb_upd_work(void *p)
|
||||
{
|
||||
struct scst_pr_dlm_data *pr_dlm = p;
|
||||
#else
|
||||
static void scst_lvb_upd_work(struct work_struct *work)
|
||||
{
|
||||
struct scst_pr_dlm_data *pr_dlm = container_of(work,
|
||||
struct scst_pr_dlm_data, lvb_upd_work);
|
||||
#endif
|
||||
dlm_lockspace_t *ls;
|
||||
struct scst_lksb lksb;
|
||||
int res;
|
||||
@@ -1320,47 +1359,58 @@ create_st_wq(const char *fmt, ...)
|
||||
*/
|
||||
static int scst_pr_dlm_init(struct scst_device *dev, const char *cl_dev_id)
|
||||
{
|
||||
struct scst_pr_dlm_data *pr_dlm;
|
||||
int res = -ENOMEM;
|
||||
|
||||
compile_time_size_checks();
|
||||
dev->pr_dlm = kzalloc(sizeof(*dev->pr_dlm), GFP_KERNEL);
|
||||
if (!dev->pr_dlm)
|
||||
pr_dlm = kzalloc(sizeof(*dev->pr_dlm), GFP_KERNEL);
|
||||
if (!pr_dlm)
|
||||
goto out;
|
||||
dev->pr_dlm->dev = dev;
|
||||
mutex_init(&dev->pr_dlm->ls_cr_mutex);
|
||||
mutex_init(&dev->pr_dlm->ls_mutex);
|
||||
dev->pr_dlm->data_lksb.lksb.sb_lvbptr = dev->pr_dlm->lvb;
|
||||
INIT_WORK(&dev->pr_dlm->pre_join_work, scst_pre_join_work);
|
||||
INIT_WORK(&dev->pr_dlm->pre_upd_work, scst_pre_upd_work);
|
||||
INIT_WORK(&dev->pr_dlm->copy_from_dlm_work, scst_copy_from_dlm_work);
|
||||
INIT_WORK(&dev->pr_dlm->copy_to_dlm_work, scst_copy_to_dlm_work);
|
||||
INIT_WORK(&dev->pr_dlm->lvb_upd_work, scst_lvb_upd_work);
|
||||
INIT_WORK(&dev->pr_dlm->reread_lvb_work, scst_reread_lvb_work);
|
||||
dev->pr_dlm->latest_lscr_attempt = jiffies - 100 * HZ;
|
||||
dev->pr_dlm = pr_dlm;
|
||||
pr_dlm->dev = dev;
|
||||
mutex_init(&pr_dlm->ls_cr_mutex);
|
||||
mutex_init(&pr_dlm->ls_mutex);
|
||||
pr_dlm->data_lksb.lksb.sb_lvbptr = pr_dlm->lvb;
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
INIT_WORK(&pr_dlm->pre_join_work, scst_pre_join_work, pr_dlm);
|
||||
INIT_WORK(&pr_dlm->pre_upd_work, scst_pre_upd_work, pr_dlm);
|
||||
INIT_WORK(&pr_dlm->copy_from_dlm_work, scst_copy_from_dlm_work, pr_dlm);
|
||||
INIT_WORK(&pr_dlm->copy_to_dlm_work, scst_copy_to_dlm_work, pr_dlm);
|
||||
INIT_WORK(&pr_dlm->lvb_upd_work, scst_lvb_upd_work, pr_dlm);
|
||||
INIT_WORK(&pr_dlm->reread_lvb_work, scst_reread_lvb_work, pr_dlm);
|
||||
#else
|
||||
INIT_WORK(&pr_dlm->pre_join_work, scst_pre_join_work);
|
||||
INIT_WORK(&pr_dlm->pre_upd_work, scst_pre_upd_work);
|
||||
INIT_WORK(&pr_dlm->copy_from_dlm_work, scst_copy_from_dlm_work);
|
||||
INIT_WORK(&pr_dlm->copy_to_dlm_work, scst_copy_to_dlm_work);
|
||||
INIT_WORK(&pr_dlm->lvb_upd_work, scst_lvb_upd_work);
|
||||
INIT_WORK(&pr_dlm->reread_lvb_work, scst_reread_lvb_work);
|
||||
#endif
|
||||
pr_dlm->latest_lscr_attempt = jiffies - 100 * HZ;
|
||||
|
||||
res = -ENOMEM;
|
||||
dev->pr_dlm->cl_dev_id = kstrdup(cl_dev_id, GFP_KERNEL);
|
||||
if (!dev->pr_dlm->cl_dev_id)
|
||||
pr_dlm->cl_dev_id = kstrdup(cl_dev_id, GFP_KERNEL);
|
||||
if (!pr_dlm->cl_dev_id)
|
||||
goto err_free;
|
||||
|
||||
dev->pr_dlm->from_wq = create_st_wq("%s_from_dlm", dev->virt_name);
|
||||
if (IS_ERR(dev->pr_dlm->from_wq)) {
|
||||
res = PTR_ERR(dev->pr_dlm->from_wq);
|
||||
dev->pr_dlm->from_wq = NULL;
|
||||
pr_dlm->from_wq = create_st_wq("%s_from_dlm", dev->virt_name);
|
||||
if (IS_ERR(pr_dlm->from_wq)) {
|
||||
res = PTR_ERR(pr_dlm->from_wq);
|
||||
pr_dlm->from_wq = NULL;
|
||||
goto err_free;
|
||||
}
|
||||
|
||||
dev->pr_dlm->to_wq = create_st_wq("%s_to_dlm", dev->virt_name);
|
||||
if (IS_ERR(dev->pr_dlm->to_wq)) {
|
||||
res = PTR_ERR(dev->pr_dlm->to_wq);
|
||||
dev->pr_dlm->to_wq = NULL;
|
||||
pr_dlm->to_wq = create_st_wq("%s_to_dlm", dev->virt_name);
|
||||
if (IS_ERR(pr_dlm->to_wq)) {
|
||||
res = PTR_ERR(pr_dlm->to_wq);
|
||||
pr_dlm->to_wq = NULL;
|
||||
goto err_free;
|
||||
}
|
||||
|
||||
dev->pr_dlm->upd_wq = create_st_wq("%s_upd_dlm", dev->virt_name);
|
||||
if (IS_ERR(dev->pr_dlm->upd_wq)) {
|
||||
res = PTR_ERR(dev->pr_dlm->upd_wq);
|
||||
dev->pr_dlm->upd_wq = NULL;
|
||||
pr_dlm->upd_wq = create_st_wq("%s_upd_dlm", dev->virt_name);
|
||||
if (IS_ERR(pr_dlm->upd_wq)) {
|
||||
res = PTR_ERR(pr_dlm->upd_wq);
|
||||
pr_dlm->upd_wq = NULL;
|
||||
goto err_free;
|
||||
}
|
||||
|
||||
|
||||
+39
-3
@@ -88,10 +88,16 @@ out:
|
||||
return res;
|
||||
}
|
||||
|
||||
static void scst_event_timeout_fn(struct delayed_work *work)
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
static void scst_event_timeout_fn(void *p)
|
||||
{
|
||||
struct scst_event_entry *event_entry = p;
|
||||
#else
|
||||
static void scst_event_timeout_fn(struct work_struct *work)
|
||||
{
|
||||
struct scst_event_entry *event_entry = container_of(work,
|
||||
struct scst_event_entry, event_timeout_work);
|
||||
struct scst_event_entry, event_timeout_work.work);
|
||||
#endif
|
||||
|
||||
TRACE_ENTRY();
|
||||
|
||||
@@ -198,8 +204,14 @@ static void __scst_event_queue(struct scst_event_entry *event_entry)
|
||||
break;
|
||||
}
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
INIT_WORK(&new_event_entry->event_timeout_work,
|
||||
scst_event_timeout_fn,
|
||||
new_event_entry);
|
||||
#else
|
||||
INIT_DELAYED_WORK(&new_event_entry->event_timeout_work,
|
||||
(void (*)(struct work_struct *))scst_event_timeout_fn);
|
||||
scst_event_timeout_fn);
|
||||
#endif
|
||||
if (new_event_entry->event_notify_fn != NULL) {
|
||||
new_event_entry->event.event_id = atomic_inc_return(&base_event_id);
|
||||
if (new_event_entry->event_timeout == 0)
|
||||
@@ -245,10 +257,16 @@ done:
|
||||
return;
|
||||
}
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
static void scst_event_queue_work_fn(void *p)
|
||||
{
|
||||
struct scst_event_entry *e = p;
|
||||
#else
|
||||
static void scst_event_queue_work_fn(struct work_struct *work)
|
||||
{
|
||||
struct scst_event_entry *e = container_of(work,
|
||||
struct scst_event_entry, scst_event_queue_work);
|
||||
#endif
|
||||
|
||||
TRACE_ENTRY();
|
||||
|
||||
@@ -264,7 +282,11 @@ void scst_event_queue(uint32_t event_code, const char *issuer_name,
|
||||
{
|
||||
TRACE_ENTRY();
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
INIT_WORK(&e->scst_event_queue_work, scst_event_queue_work_fn, e);
|
||||
#else
|
||||
INIT_WORK(&e->scst_event_queue_work, scst_event_queue_work_fn);
|
||||
#endif
|
||||
|
||||
TRACE_DBG("Scheduling event entry %p", e);
|
||||
|
||||
@@ -1042,7 +1064,11 @@ static const struct file_operations scst_event_fops = {
|
||||
int scst_event_init(void)
|
||||
{
|
||||
int res = 0;
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 21)
|
||||
struct class_device *class_member;
|
||||
#else
|
||||
struct device *dev;
|
||||
#endif
|
||||
|
||||
TRACE_ENTRY();
|
||||
|
||||
@@ -1060,6 +1086,15 @@ int scst_event_init(void)
|
||||
goto out_class;
|
||||
}
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 21)
|
||||
class_member = class_device_create(scst_event_sysfs_class, NULL,
|
||||
MKDEV(scst_event_major, 0), NULL,
|
||||
SCST_EVENT_NAME);
|
||||
if (IS_ERR(class_member)) {
|
||||
res = PTR_ERR(class_member);
|
||||
goto out_chrdev;
|
||||
}
|
||||
#else
|
||||
dev = device_create(scst_event_sysfs_class, NULL,
|
||||
MKDEV(scst_event_major, 0),
|
||||
NULL,
|
||||
@@ -1068,6 +1103,7 @@ int scst_event_init(void)
|
||||
res = PTR_ERR(dev);
|
||||
goto out_chrdev;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_EVENTS_WAIT_TEST
|
||||
sysfs_create_file(kernel_kobj, &event_wait_test_attr.attr);
|
||||
|
||||
+62
-20
@@ -76,7 +76,11 @@
|
||||
static DEFINE_SPINLOCK(scst_global_stpg_list_lock);
|
||||
static LIST_HEAD(scst_global_stpg_list);
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
static void scst_put_acg_work(void *p);
|
||||
#else
|
||||
static void scst_put_acg_work(struct work_struct *work);
|
||||
#endif
|
||||
static void scst_del_acn(struct scst_acn *acn);
|
||||
static void scst_free_acn(struct scst_acn *acn, bool reassign);
|
||||
|
||||
@@ -4149,7 +4153,11 @@ static void scst_init_order_data(struct scst_order_data *order_data)
|
||||
return;
|
||||
}
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
static void scst_ext_blocking_done_fn(void *p);
|
||||
#else
|
||||
static void scst_ext_blocking_done_fn(struct work_struct *work);
|
||||
#endif
|
||||
|
||||
static int scst_dif_none(struct scst_cmd *cmd);
|
||||
#ifdef CONFIG_SCST_DIF_INJECT_CORRUPTED_TAGS
|
||||
@@ -4184,7 +4192,11 @@ int scst_alloc_device(gfp_t gfp_mask, struct scst_device **out_dev)
|
||||
INIT_LIST_HEAD(&dev->dev_tgt_dev_list);
|
||||
INIT_LIST_HEAD(&dev->dev_acg_dev_list);
|
||||
INIT_LIST_HEAD(&dev->ext_blockers_list);
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
INIT_WORK(&dev->ext_blockers_work, scst_ext_blocking_done_fn, dev);
|
||||
#else
|
||||
INIT_WORK(&dev->ext_blockers_work, scst_ext_blocking_done_fn);
|
||||
#endif
|
||||
dev->dev_double_ua_possible = 1;
|
||||
dev->queue_alg = SCST_QUEUE_ALG_1_UNRESTRICTED_REORDER;
|
||||
|
||||
@@ -4783,13 +4795,19 @@ struct scst_acg_put_work {
|
||||
struct scst_acg *acg;
|
||||
};
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
static void scst_put_acg_work(void *p)
|
||||
{
|
||||
struct scst_acg_put_work *put_work = p;
|
||||
#else
|
||||
static void scst_put_acg_work(struct work_struct *work)
|
||||
{
|
||||
struct scst_acg_put_work *put_work =
|
||||
container_of(work, typeof(*put_work), work);
|
||||
#endif
|
||||
struct scst_acg *acg = put_work->acg;
|
||||
|
||||
kfree(work);
|
||||
kfree(put_work);
|
||||
kref_put(&acg->acg_kref, scst_release_acg);
|
||||
}
|
||||
|
||||
@@ -4803,7 +4821,11 @@ void scst_put_acg(struct scst_acg *acg)
|
||||
return;
|
||||
}
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
INIT_WORK(&put_work->work, scst_put_acg_work, put_work);
|
||||
#else
|
||||
INIT_WORK(&put_work->work, scst_put_acg_work);
|
||||
#endif
|
||||
put_work->acg = acg;
|
||||
|
||||
/*
|
||||
@@ -6278,11 +6300,12 @@ static int scst_ws_sg_init(struct scatterlist **ws_sg, int ws_sg_cnt,
|
||||
static int scst_ws_sg_tails_get(struct scst_data_descriptor *where, struct scst_write_same_priv *wsp)
|
||||
{
|
||||
int i;
|
||||
uint64_t n;
|
||||
|
||||
TRACE_ENTRY();
|
||||
|
||||
for (i = 0; where[i].sdd_blocks != 0; i++) {
|
||||
if (where[i].sdd_blocks / wsp->ws_max_each != 0) {
|
||||
if (where[i].sdd_blocks >= wsp->ws_max_each) {
|
||||
wsp->ws_sg_full_cnt = wsp->ws_max_each;
|
||||
break;
|
||||
}
|
||||
@@ -6297,8 +6320,10 @@ static int scst_ws_sg_tails_get(struct scst_data_descriptor *where, struct scst_
|
||||
sizeof(*wsp->ws_sg_tails)*i);
|
||||
return -ENOMEM;
|
||||
}
|
||||
for (i = 0; where[i].sdd_blocks != 0; i++)
|
||||
wsp->ws_sg_tails[i].sg_cnt = where[i].sdd_blocks % wsp->ws_max_each;
|
||||
for (i = 0; where[i].sdd_blocks != 0; i++) {
|
||||
n = where[i].sdd_blocks;
|
||||
wsp->ws_sg_tails[i].sg_cnt = do_div(n, wsp->ws_max_each);
|
||||
}
|
||||
|
||||
TRACE_EXIT();
|
||||
return 0;
|
||||
@@ -6884,11 +6909,13 @@ struct scst_session *scst_alloc_session(struct scst_tgt *tgt, gfp_t gfp_mask,
|
||||
INIT_LIST_HEAD(&sess->init_deferred_cmd_list);
|
||||
INIT_LIST_HEAD(&sess->init_deferred_mcmd_list);
|
||||
INIT_LIST_HEAD(&sess->sess_cm_list_id_list);
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 20)
|
||||
INIT_DELAYED_WORK(&sess->sess_cm_list_id_cleanup_work,
|
||||
(void (*)(struct work_struct *))sess_cm_list_id_cleanup_work_fn);
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 20))
|
||||
sess_cm_list_id_cleanup_work_fn);
|
||||
INIT_DELAYED_WORK(&sess->hw_pending_work, scst_hw_pending_work_fn);
|
||||
#else
|
||||
INIT_WORK(&sess->sess_cm_list_id_cleanup_work,
|
||||
sess_cm_list_id_cleanup_work_fn, sess);
|
||||
INIT_WORK(&sess->hw_pending_work, scst_hw_pending_work_fn, sess);
|
||||
#endif
|
||||
|
||||
@@ -7225,7 +7252,7 @@ void scst_stpg_del_unblock_next(struct scst_cmd *cmd)
|
||||
|
||||
EXTRACHECKS_BUG_ON(!cmd->cmd_on_global_stpg_list);
|
||||
|
||||
TRACE_DBG("STPG cmd %p: unblocking next", cmd);
|
||||
TRACE_DBG("STPG cmd %p done: unblocking next", cmd);
|
||||
|
||||
list_del(&cmd->global_stpg_list_entry);
|
||||
cmd->cmd_on_global_stpg_list = 0;
|
||||
@@ -13140,8 +13167,6 @@ void scst_unblock_dev(struct scst_device *dev)
|
||||
break;
|
||||
}
|
||||
local_irq_restore_nort(flags);
|
||||
|
||||
dev->strictly_serialized_cmd_waiting = 0;
|
||||
}
|
||||
|
||||
sBUG_ON(dev->block_count < 0);
|
||||
@@ -14280,10 +14305,16 @@ void __scst_ext_blocking_done(struct scst_device *dev)
|
||||
return;
|
||||
}
|
||||
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
static void scst_ext_blocking_done_fn(void *p)
|
||||
{
|
||||
struct scst_device *dev = p;
|
||||
#else
|
||||
static void scst_ext_blocking_done_fn(struct work_struct *work)
|
||||
{
|
||||
struct scst_device *dev = container_of(work, struct scst_device,
|
||||
ext_blockers_work);
|
||||
#endif
|
||||
|
||||
TRACE_ENTRY();
|
||||
|
||||
@@ -14338,15 +14369,15 @@ static void scst_sync_ext_blocking_done(struct scst_device *dev,
|
||||
return;
|
||||
}
|
||||
|
||||
int scst_ext_block_dev(struct scst_device *dev, bool sync,
|
||||
ext_blocker_done_fn_t done_fn, const uint8_t *priv, int priv_len)
|
||||
int scst_ext_block_dev(struct scst_device *dev, ext_blocker_done_fn_t done_fn,
|
||||
const uint8_t *priv, int priv_len, int flags)
|
||||
{
|
||||
int res;
|
||||
struct scst_ext_blocker *b;
|
||||
|
||||
TRACE_ENTRY();
|
||||
|
||||
if (sync)
|
||||
if (flags & SCST_EXT_BLOCK_SYNC)
|
||||
priv_len = sizeof(void *);
|
||||
|
||||
b = kzalloc(sizeof(*b) + priv_len, GFP_KERNEL);
|
||||
@@ -14357,8 +14388,8 @@ int scst_ext_block_dev(struct scst_device *dev, bool sync,
|
||||
goto out;
|
||||
}
|
||||
|
||||
TRACE_MGMT_DBG("New (%d) %s ext blocker %p for dev %s", dev->ext_blocks_cnt+1,
|
||||
sync ? "sync" : "async", b, dev->virt_name);
|
||||
TRACE_MGMT_DBG("New %d ext blocker %p for dev %s (flags %x)",
|
||||
dev->ext_blocks_cnt+1, b, dev->virt_name, flags);
|
||||
|
||||
spin_lock_bh(&dev->dev_lock);
|
||||
|
||||
@@ -14374,10 +14405,15 @@ int scst_ext_block_dev(struct scst_device *dev, bool sync,
|
||||
} else
|
||||
scst_block_dev(dev);
|
||||
|
||||
if (flags & SCST_EXT_BLOCK_STPG) {
|
||||
WARN_ON(dev->stpg_ext_blocked);
|
||||
dev->stpg_ext_blocked = 1;
|
||||
}
|
||||
|
||||
dev->ext_blocks_cnt++;
|
||||
TRACE_DBG("ext_blocks_cnt %d", dev->ext_blocks_cnt);
|
||||
|
||||
if (sync && (dev->on_dev_cmd_count == 0)) {
|
||||
if ((flags & SCST_EXT_BLOCK_SYNC) && (dev->on_dev_cmd_count == 0)) {
|
||||
TRACE_DBG("No commands to wait for sync blocking (dev %s)",
|
||||
dev->virt_name);
|
||||
spin_unlock_bh(&dev->dev_lock);
|
||||
@@ -14387,7 +14423,7 @@ int scst_ext_block_dev(struct scst_device *dev, bool sync,
|
||||
list_add_tail(&b->ext_blockers_list_entry, &dev->ext_blockers_list);
|
||||
dev->ext_blocking_pending = 1;
|
||||
|
||||
if (sync) {
|
||||
if (flags & SCST_EXT_BLOCK_SYNC) {
|
||||
DECLARE_WAIT_QUEUE_HEAD_ONSTACK(w);
|
||||
|
||||
b->ext_blocker_done_fn = scst_sync_ext_blocking_done;
|
||||
@@ -14421,7 +14457,7 @@ out:
|
||||
return res;
|
||||
|
||||
out_free_success:
|
||||
sBUG_ON(!sync);
|
||||
sBUG_ON(!(flags & SCST_EXT_BLOCK_SYNC));
|
||||
kfree(b);
|
||||
goto out_success;
|
||||
}
|
||||
@@ -14438,8 +14474,14 @@ void scst_ext_unblock_dev(struct scst_device *dev, bool stpg)
|
||||
}
|
||||
|
||||
if ((dev->ext_blocks_cnt == 1) && dev->stpg_ext_blocked && !stpg) {
|
||||
TRACE_DBG("Can not unblock internal STPG ext block (dev %s)",
|
||||
dev->virt_name);
|
||||
/*
|
||||
* User space is sending too many unblock calls during
|
||||
* STPG processing
|
||||
*/
|
||||
TRACE_MGMT_DBG("Can not unblock internal STPG ext block "
|
||||
"(dev %s, ext_blocks_cnt %d, stpg_ext_blocked %d, stpg %d)",
|
||||
dev->virt_name, dev->ext_blocks_cnt,
|
||||
dev->stpg_ext_blocked, stpg);
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
@@ -14454,7 +14496,7 @@ void scst_ext_unblock_dev(struct scst_device *dev, bool stpg)
|
||||
spin_unlock_bh(&dev->dev_lock);
|
||||
TRACE_DBG("Ext unblock (dev %s): still pending...",
|
||||
dev->virt_name);
|
||||
rc = scst_ext_block_dev(dev, true, NULL, NULL, 0);
|
||||
rc = scst_ext_block_dev(dev, NULL, NULL, 0, SCST_EXT_BLOCK_SYNC);
|
||||
if (rc != 0) {
|
||||
/* Oops, have to poll */
|
||||
PRINT_WARNING("scst_ext_block_dev(dev %s) failed, "
|
||||
|
||||
@@ -2683,7 +2683,6 @@ static int __init init_scst(void)
|
||||
goto out_thread_free;
|
||||
#endif
|
||||
|
||||
|
||||
PRINT_INFO("SCST version %s loaded successfully (max mem for "
|
||||
"commands %dMB, per device %dMB)", SCST_VERSION_STRING,
|
||||
scst_max_cmd_mem, scst_max_dev_cmd_mem);
|
||||
|
||||
+13
-4
@@ -410,7 +410,10 @@ static inline int scst_dlm_new_lockspace(const char *name, int namelen,
|
||||
uint32_t flags,
|
||||
int lvblen)
|
||||
{
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 3, 0)
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 31)
|
||||
return dlm_new_lockspace((char *)name, namelen, lockspace, flags,
|
||||
lvblen);
|
||||
#elif LINUX_VERSION_CODE < KERNEL_VERSION(3, 3, 0)
|
||||
return dlm_new_lockspace(name, namelen, lockspace, flags, lvblen);
|
||||
#else
|
||||
return dlm_new_lockspace(name, NULL, flags, lvblen, NULL, NULL, NULL,
|
||||
@@ -722,8 +725,10 @@ bool __scst_check_blocked_dev(struct scst_cmd *cmd);
|
||||
void __scst_check_unblock_dev(struct scst_cmd *cmd);
|
||||
void scst_check_unblock_dev(struct scst_cmd *cmd);
|
||||
|
||||
int scst_ext_block_dev(struct scst_device *dev, bool sync,
|
||||
ext_blocker_done_fn_t done_fn, const uint8_t *priv, int priv_len);
|
||||
#define SCST_EXT_BLOCK_SYNC 1
|
||||
#define SCST_EXT_BLOCK_STPG 2
|
||||
int scst_ext_block_dev(struct scst_device *dev, ext_blocker_done_fn_t done_fn,
|
||||
const uint8_t *priv, int priv_len, int flags);
|
||||
void scst_ext_unblock_dev(struct scst_device *dev, bool stpg);
|
||||
void __scst_ext_blocking_done(struct scst_device *dev);
|
||||
void scst_ext_blocking_done(struct scst_device *dev);
|
||||
@@ -868,7 +873,11 @@ void scst_cm_free_descriptors(struct scst_cmd *cmd);
|
||||
int scst_cm_ext_copy_exec(struct scst_cmd *cmd);
|
||||
int scst_cm_rcv_copy_res_exec(struct scst_cmd *cmd);
|
||||
|
||||
void sess_cm_list_id_cleanup_work_fn(struct delayed_work *work);
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
void sess_cm_list_id_cleanup_work_fn(void *p);
|
||||
#else
|
||||
void sess_cm_list_id_cleanup_work_fn(struct work_struct *work);
|
||||
#endif
|
||||
void scst_cm_free_pending_list_ids(struct scst_session *sess);
|
||||
|
||||
bool scst_cm_check_block_all_devs(struct scst_cmd *cmd);
|
||||
|
||||
@@ -3567,10 +3567,10 @@ static ssize_t scst_dev_block_store(struct kobject *kobj,
|
||||
"data_len %d)", dev->virt_name, sync, data_start, data_len);
|
||||
|
||||
if (sync)
|
||||
res = scst_ext_block_dev(dev, true, NULL, NULL, 0);
|
||||
res = scst_ext_block_dev(dev, NULL, NULL, 0, SCST_EXT_BLOCK_SYNC);
|
||||
else
|
||||
res = scst_ext_block_dev(dev, false, scst_sysfs_ext_blocking_done,
|
||||
data_start, data_len);
|
||||
res = scst_ext_block_dev(dev, scst_sysfs_ext_blocking_done,
|
||||
data_start, data_len, 0);
|
||||
if (res != 0)
|
||||
goto out;
|
||||
|
||||
|
||||
@@ -547,6 +547,7 @@ void __scst_check_unblock_dev(struct scst_cmd *cmd)
|
||||
TRACE_BLOCK("Strictly serialized cmd waiting: "
|
||||
"unblocking dev %s", dev->virt_name);
|
||||
scst_unblock_dev(dev);
|
||||
dev->strictly_serialized_cmd_waiting = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+24
-14
@@ -397,13 +397,24 @@ out:
|
||||
|
||||
struct scst_alua_retry {
|
||||
struct scst_cmd *alua_retry_cmd;
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
struct work_struct alua_retry_work;
|
||||
#else
|
||||
struct delayed_work alua_retry_work;
|
||||
#endif
|
||||
};
|
||||
|
||||
static void scst_alua_transitioning_work_fn(struct delayed_work *work)
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
static void scst_alua_transitioning_work_fn(void *p)
|
||||
{
|
||||
struct scst_alua_retry *retry = container_of(work, struct scst_alua_retry,
|
||||
alua_retry_work);
|
||||
struct scst_alua_retry *retry = p;
|
||||
#else
|
||||
static void scst_alua_transitioning_work_fn(struct work_struct *work)
|
||||
{
|
||||
struct scst_alua_retry *retry =
|
||||
container_of(work, struct scst_alua_retry,
|
||||
alua_retry_work.work);
|
||||
#endif
|
||||
struct scst_cmd *cmd = retry->alua_retry_cmd;
|
||||
|
||||
TRACE_ENTRY();
|
||||
@@ -468,8 +479,13 @@ static int scst_tg_accept_transitioning(struct scst_cmd *cmd)
|
||||
|
||||
/* No get is needed, because cmd is sync here */
|
||||
retry->alua_retry_cmd = cmd;
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 20)
|
||||
INIT_WORK(&retry->alua_retry_work,
|
||||
scst_alua_transitioning_work_fn, retry);
|
||||
#else
|
||||
INIT_DELAYED_WORK(&retry->alua_retry_work,
|
||||
(void (*)(struct work_struct *))scst_alua_transitioning_work_fn);
|
||||
scst_alua_transitioning_work_fn);
|
||||
#endif
|
||||
cmd->already_transitioning = 1;
|
||||
schedule_delayed_work(&retry->alua_retry_work, HZ/2);
|
||||
res = SCST_ALUA_CHECK_DELAYED;
|
||||
@@ -1852,17 +1868,11 @@ int scst_tg_set_group_info(struct scst_cmd *cmd)
|
||||
|
||||
atomic_inc(&wait->stpg_wait_left);
|
||||
|
||||
spin_lock_bh(&dev->dev_lock);
|
||||
WARN_ON(dgd->dev->stpg_ext_blocked);
|
||||
dgd->dev->stpg_ext_blocked = 1;
|
||||
spin_unlock_bh(&dev->dev_lock);
|
||||
|
||||
rc = scst_ext_block_dev(dgd->dev, false,
|
||||
scst_stpg_ext_blocking_done, (uint8_t *)&wait,
|
||||
sizeof(wait));
|
||||
rc = scst_ext_block_dev(dgd->dev, scst_stpg_ext_blocking_done,
|
||||
(uint8_t *)&wait, sizeof(wait), SCST_EXT_BLOCK_STPG);
|
||||
if (rc != 0) {
|
||||
TRACE_DBG("scst_ext_block_dev() returned %d, "
|
||||
"stepping back (cmd %p)", rc, cmd);
|
||||
TRACE_DBG("scst_ext_block_dev() failed "
|
||||
"with %d, reverting (cmd %p)", rc, cmd);
|
||||
wait->status = rc;
|
||||
wait->dg = dg;
|
||||
atomic_dec(&wait->stpg_wait_left);
|
||||
|
||||
@@ -24,6 +24,7 @@ sub addTargets {
|
||||
|
||||
my $all_hw_tgt = 1;
|
||||
for my $driver (@{$drivers}) {
|
||||
next if $driver eq 'copy_manager';
|
||||
my ($targets, $errorString) = $SCST->targets($driver);
|
||||
for my $target (@{$targets}) {
|
||||
if ($SCST->targetType($driver, $target) !=
|
||||
|
||||
@@ -1423,6 +1423,8 @@ sub writeConfiguration {
|
||||
}
|
||||
|
||||
foreach my $driver (sort keys %{$CURRENT{'assign'}}) {
|
||||
next if $driver eq 'copy_manager';
|
||||
|
||||
my $driver_buff;
|
||||
|
||||
my ($drv_attrs, $errorString) = $SCST->driverAttributes($driver);
|
||||
|
||||
@@ -18,8 +18,6 @@
|
||||
#
|
||||
|
||||
SHELL=/bin/bash
|
||||
# Decide to use which kernel src. If not specified, is current running kernel.
|
||||
#export KDIR=/usr/src/linux-2.6
|
||||
|
||||
FILEIO_DIR=fileio
|
||||
STPGD_DIR=stpgd
|
||||
|
||||
+2
-1
@@ -65,10 +65,11 @@ char *app_name;
|
||||
# endif
|
||||
#endif /* DEBUG */
|
||||
|
||||
bool log_daemon = false;
|
||||
unsigned long trace_flag = DEFAULT_LOG_FLAGS;
|
||||
#endif /* defined(DEBUG) || defined(TRACING) */
|
||||
|
||||
bool log_daemon = false;
|
||||
|
||||
#define DEF_BLOCK_SHIFT 9
|
||||
#define THREADS 7
|
||||
|
||||
|
||||
+2
-1
@@ -82,9 +82,10 @@ extern char *app_name;
|
||||
#define __LOG_PREFIX NULL
|
||||
#endif
|
||||
|
||||
extern bool log_daemon;
|
||||
|
||||
#if defined(DEBUG) || defined(TRACING)
|
||||
|
||||
extern bool log_daemon;
|
||||
extern unsigned long trace_flag;
|
||||
|
||||
extern int debug_init(void);
|
||||
|
||||
Reference in New Issue
Block a user