Minor cleanups and docs updates
[mirror/scst/.git] / iscsi-scst / AskingQuestions
1 Before asking any questions to me directly or scst-devel mailing list
2 make sure that you read *ALL* relevant documentation files (at least, 2
3 README files: one for SCST and one for target driver you are using) and
4 *understood* *ALL* written there. I personally very much like working
5 with people who understand what they are doing and hate when somebody
6 tries to use me as a replacement of his brain and to save his time on
7 expense of mine. So, in such cases don't be surprised if your question
8 will be ignored or answered in the RTFM style.
9
10 Particularly, I will refuse to answer on any questions about low
11 performance if you don't *explicitly* write in your question that you
12 don't use the debug build and ensured (write from what) that your target
13 and backstorage devices don't share the same PCI bus.
14
15 Another too FAQ area is "What are those aborts and resets, which your
16 target from time to time logging, mean and what to do with them?", "Do
17 they relate to I/O stalls I sometimes experience" and "Why after them my
18 device was put offline?".
19
20 Sorry, if the above might sound too harsh. Unfortunately, I have a
21 limited power and can't waste it keeping explaining basic concepts and
22 answering on the same questions.
23
24 Example of a really bad question:
25
26 ======================================================================
27
28 In our user space driver , i use epoll_wait to wait on multiple file
29 descriptors for multiple devices. Apparently when i wait on the ioctl in
30 blocking mode , everything works well , but when i wait on epoll , and
31 try to  attach a target device , i get immediately a "Bad address" error
32 value from the epoll.
33
34 What is the reason ?
35
36 ======================================================================
37
38 It is bad, because, apparently, the author was doing something wrong
39 with epoll, but instead of checking the source code to find out when
40 "Bad address" error can be returned and understand possible reasons for
41 it, he expected me to do that for him. He even didn't bothered to look
42 in the kernel log, where, very probably, the reason for the error was
43 logged.
44
45
46 Here are three examples of good questions:
47
48 ======================================================================
49
50 I'm looking for a help in understanding of SCST internal architecture
51 and operation. The problem I'm experiencing now is that SCST seems to
52 process deferred commands incorrectly in some cases. More specifically,
53 I'm confused with the 'while' loop in scst_send_to_midlev function.
54
55 As far as I understand, the basic execution path consists of a call to
56 scst_do_send_midlev followed by taking of a decision on this command
57 (continue with this command, reschedule it, or move to the next one),
58 the decision is stored in 'int res', which is then returned from the
59 function.
60
61 However, if there are deferred commands on the device, the function does
62 not return but makes another call to scst_do_send_to_midlev, analyzes
63 the return code again and stores the decision in 'int res' thereby
64 erasing the decision for the previous command. If scst_send_to_midlev
65 exits now, it will return the _new_ decision (for the deferred command)
66 whereas the scst_process_active_cmd will think that it is the decision
67 for the command that was originally passed to scst_send_to_midlev.
68
69 For example, this will cause problems in the following situation:
70 1. scst_send_to_midlev is called with cmd == 0x80000100
71 2. scst_do_send_to_midlev is called with cmd == 0x8000100
72 3. scst_do_send_to_midlev returns with SCST_EXEC_COMPLETED
73    (in certain scenarios the command is already destroyed at this point)
74 4. scst_check_deferred_commands finds the defferred cmd == 0x80000200
75 5. scst_do_send_to_midlev is called with cmd == 0x80000200
76 6. scst_do_send_to_midlev returns with SCST_EXEC_NEED_THREAD
77 7. scst_send_to_midlev returns with SCST_CMD_STATE_RES_NEED_THREAD
78 8. Now, the scst_process_active_cmd will try to reschedule command 0x8000100
79    which is already destroyed at this point !
80    
81 Can anyone on the list confirm my guess? Or, this situation should never
82 happen because of some other condition which I may have missed? Right
83 now I can't think of any of simple methods to work around the issue,
84 i.e. any of my ideas require rewriting significant part of the code.
85
86 ======================================================================
87
88 Hello,
89
90 I have two machines (SCST targets) with the following parameters:
91 - two dual core Xeon CPUs
92 - QLA2342 FC HBA
93 - Areca SATA RAID HBA
94 - Linux 2.6.21.3, running in 64 bit mode with 16G RAM
95 - SCST trunk version
96
97 On the client side there is a Solaris 10 U3 machine, with the same (chip 
98 wise) Qlogic controller.
99
100 There is an FC switch between the three machines, and each of the 
101 targets are zoned to the client's port in a one-by-one manner, so HBA 
102 port 1 sees only target 1 and port 2 sees only target 2.
103
104 The targets are configured with two large sparse files on XFS (8 TB 
105 each, with dd if=/dev/zero of=file bs=1M count=0 seek=8388608).
106
107 In Solaris I do various tests with SVM (Sun's built in volume manager) 
108 and multiterabyte UFS. Occasionally, there are some strange write
109 errors, where the volume  manager drops its volumes and without a VM, a
110 simple UFS fs write can  fail too.
111
112 I see various errors logged by the kernel (Solaris'), these are some 
113 examples, both with and without SVM:
114 Jun 21 10:42:14 solaris fctl: [ID 517869 kern.warning] WARNING: 
115 fp(1)::GPN_ID for D_ID=621200 failed
116 Jun 21 10:42:14 solaris fctl: [ID 517869 kern.warning] WARNING: 
117 fp(1)::N_x Port with D_ID=621200, PWWN=210000e08b944419 disappeared from 
118 fabric
119 Jun 21 10:42:53 solaris scsi: [ID 107833 kern.warning] WARNING: 
120 /pci@1,0/pci1022,7450@a/pcie11,105@1,1/fp@0,0/disk@w210000e08b944419,0 
121 (sd1):
122 Jun 21 10:42:53 solaris         SCSI transport failed: reason 
123 'tran_err': retrying command
124 Jun 21 10:43:06 solaris scsi: [ID 107833 kern.warning] WARNING: 
125 /pci@1,0/pci1022,7450@a/pcie11,105@1,1/fp@0,0/disk@w210000e08b944419,0 
126 (sd1):
127 Jun 21 10:43:06 solaris         SCSI transport failed: reason 'timeout': 
128 retrying command
129 Jun 21 10:43:13 solaris scsi: [ID 107833 kern.notice]   Device is gone
130 Jun 21 10:43:13 solaris scsi: [ID 107833 kern.warning] WARNING: 
131 /pci@1,0/pci1022,7450@a/pcie11,105@1,1/fp@0,0/disk@w210000e08b944419,0 
132 (sd1):
133 Jun 21 10:43:13 solaris         transport rejected fatal error
134 Jun 21 10:43:13 solaris md_stripe: [ID 641072 kern.warning] WARNING: md: 
135 d10: write error on /dev/dsk/c2t210000E08B944419d0s6
136 Jun 21 10:43:13 solaris last message repeated 9 times
137 Jun 21 10:43:13 solaris scsi: [ID 243001 kern.info] 
138 /pci@1,0/pci1022,7450@a/pcie11,105@1,1/fp@0,0 (fcp1):
139 Jun 21 10:43:13 solaris         offlining lun=0 (trace=0), target=621200 
140 (trace=2800004)
141 Jun 21 10:43:13 solaris ufs: [ID 702911 kern.warning] WARNING: Error 
142 writing master during ufs log roll
143 Jun 21 10:43:13 solaris ufs: [ID 127457 kern.warning] WARNING: ufs log 
144 for /mnt changed state to Error
145 Jun 21 10:43:13 solaris ufs: [ID 616219 kern.warning] WARNING: Please 
146 umount(1M) /mnt and run fsck(1M)
147 Jun 21 11:08:55 solaris scsi: [ID 107833 kern.warning] WARNING: 
148 /pci@1,0/pci1022,7450@a/pcie11,105@1,1/fp@0,0/disk@w210000e08b944419,0 
149 (sd1):
150 Jun 21 11:08:55 solaris         offline or reservation conflict
151 Jun 21 11:09:41 solaris scsi: [ID 107833 kern.warning] WARNING: 
152 /pci@1,0/pci1022,7450@a/pcie11,105@1,1/fp@0,0/disk@w210000e08b944419,0 
153 (sd1):
154 Jun 21 11:09:41 solaris         offline or reservation conflict
155 Jun 21 11:09:41 solaris scsi: [ID 107833 kern.warning] WARNING: 
156 /pci@1,0/pci1022,7450@a/pcie11,105@1,1/fp@0,0/disk@w210000e08b944419,0 
157 (sd1):
158 Jun 21 11:09:41 solaris         offline or reservation conflict
159 Jun 21 11:09:41 solaris scsi: [ID 107833 kern.warning] WARNING: 
160 /pci@1,0/pci1022,7450@a/pcie11,105@1,1/fp@0,0/disk@w210000e08b944419,0 
161 (sd1):
162 Jun 21 11:09:41 solaris         i/o to invalid geometry
163 Jun 21 11:09:41 solaris scsi: [ID 107833 kern.warning] WARNING: 
164 /pci@1,0/pci1022,7450@a/pcie11,105@1,1/fp@0,0/disk@w210000e08b944419,0 
165 (sd1):
166 Jun 21 11:09:41 solaris         offline or reservation conflict
167 Jun 21 11:09:41 solaris scsi: [ID 107833 kern.warning] WARNING: 
168 /pci@1,0/pci1022,7450@a/pcie11,105@1,1/fp@0,0/disk@w210000e08b944419,0 
169 (sd1):
170 Jun 21 11:09:41 solaris         i/o to invalid geometry
171 Jun 21 11:09:41 solaris scsi: [ID 107833 kern.warning] WARNING: 
172 /pci@1,0/pci1022,7450@a/pcie11,105@1,1/fp@0,0/disk@w210000e08b944419,0 
173 (sd1):
174 Jun 21 11:09:41 solaris         offline or reservation conflict
175 Jun 21 11:09:41 solaris scsi: [ID 107833 kern.warning] WARNING: 
176 /pci@1,0/pci1022,7450@a/pcie11,105@1,1/fp@0,0/disk@w210000e08b944419,0 
177 (sd1):
178 Jun 21 11:09:41 solaris         i/o to invalid geometry
179 Jun 21 11:09:43 solaris scsi: [ID 107833 kern.warning] WARNING: 
180 /pci@1,0/pci1022,7450@a/pcie11,105@1,1/fp@0,0/disk@w210000e08b944419,0 
181 (sd1):
182 Jun 21 11:09:43 solaris         offline or reservation conflict
183 Jun 21 11:09:43 solaris scsi: [ID 107833 kern.warning] WARNING: 
184 /pci@1,0/pci1022,7450@a/pcie11,105@1,1/fp@0,0/disk@w210000e08b944419,0 
185 (sd1):
186 Jun 21 11:09:43 solaris         SYNCHRONIZE CACHE command failed (5)
187
188 I don't see anything in the dmesg on the target side.
189
190 After these errors SCST seems to be dead. I can't unload its modules and 
191 can't communicate it via /proc.
192 A simple cat vdisk just waits and waits.
193
194 Could you please help? What should I set/collect/send in this case to 
195 help resolving this issue?
196
197 ======================================================================
198
199 Hello,
200
201 I am trying to get scst working on an Opteron machine.
202
203 After some hours, playing with different kernel versions and different
204 missing functions, I've sticked with a 2.6.15 and a
205 drivers/scsi/scsi_lib.c hack from 2.6.14, which contains the
206 scsi_wait_req. (Linux is a mess, each point release changes something.
207 How can developers keep up with this?)
208
209 Now everything seems to be OK, I could load the modules and such.
210
211 I have a setup of two machines connected to each other in an FC-P2P
212 manner. The two machines has two 2G links between them. On the initiator
213 side I have FreeBSD, because I know that better and this is what I did
214 some target mode tests.
215
216 The strange thing is that the loop seems to be only running at 1 Gbps:
217 [   61.731265] QLogic Fibre Channel HBA Driver
218 [   61.731454] GSI 21 sharing vector 0xD1 and IRQ 21
219 [   61.731563] ACPI: PCI Interrupt 0000:06:01.0[A] -> GSI 36 (level, low) -> IRQ 21
220 [   61.731821] qla2300 0000:06:01.0: Found an ISP2312, irq 21, iobase 0xffffc200
221 00014000
222 [   61.732194] qla2300 0000:06:01.0: Configuring PCI space...
223 [   61.732441] qla2300 0000:06:01.0: Configure NVRAM parameters...
224 [   61.816885] qla2300 0000:06:01.0: Verifying loaded RISC code...
225 [   61.852177] qla2300 0000:06:01.0: Extended memory detected (512 KB)...
226 [   61.852294] qla2300 0000:06:01.0: Resizing request queue depth (2048 -> 4096)
227 ...
228 [   61.852604] qla2300 0000:06:01.0: LIP reset occured (f8e8).
229 [   61.852740] qla2300 0000:06:01.0: Waiting for LIP to complete...
230 [   62.865911] qla2300 0000:06:01.0: LIP occured (f7f7).
231 [   62.866042] qla2300 0000:06:01.0: LOOP UP detected (1 Gbps).
232 [   62.866269] qla2300 0000:06:01.0: Topology - (Loop), Host Loop address 0x0
233 [   62.868285] scsi0 : qla2xxx
234 [   62.868507] qla2300 0000:06:01.0:
235 [   62.868507]  QLogic Fibre Channel HBA Driver: 8.01.03-k
236 [   62.868508]   QLogic QLA2312 -
237 [   62.868509]   ISP2312: PCI-X (100 MHz) @ 0000:06:01.0 hdma+, host#=0, fw=3.03.18 IPX
238
239
240 I did the following:
241 modprobe qla2x00tgt:
242
243 [  104.988170] qla2x00tgt: no version for "scst_unregister" found: kernel tainted.
244
245 echo "open lun0 /data/lun0" >/proc/scsi_tgt/disk_fileio/disk_fileio"
246 [  169.102877] scst: Device handler disk_fileio for type 0 loaded successfully
247 [  169.103002] scst: Device handler cdrom_fileio for type 5 loaded successfully
248 [  191.261000] dev_fileio: Attached SCSI target virtual disk lun0 (file="/data/l
249 un0", fs=1000001MB, bs=512, nblocks=2048002048, cyln=1000001)
250 [  191.261191] scst: Attached SCSI target mid-level to virtual device lun0 (id 1
251 )
252
253 and
254 echo "add lun0 0" > /proc/scsi_tgt/groups/Default/devices
255
256 On the other side a camcontrol rescan all (SCSI rescan) gives me the following with a verbose logging kernel:
257 Mar 29 18:09:17 blade2 kernel: pass1: <SCST_FIO lun0 093> Fixed Direct Access SCSI-4 device
258 Mar 29 18:09:17 blade2 kernel: pass1: Serial Number 383
259 Mar 29 18:09:17 blade2 kernel: pass1: 100.000MB/s transfers
260 Mar 29 18:09:17 blade2 kernel: da1 at isp0 bus 0 target 0 lun 0
261 Mar 29 18:09:17 blade2 kernel: da1: <SCST_FIO lun0 093> Fixed Direct Access SCSI-4 device
262 Mar 29 18:09:17 blade2 kernel: da1: Serial Number 383
263 Mar 29 18:09:17 blade2 kernel: da1: 100.000MB/s transfers
264 Mar 29 18:09:17 blade2 kernel: da1: 1024MB (2097152 512 byte sectors: 64H 32S/T 1024C)
265 Mar 29 18:09:17 blade2 kernel: (probe0:isp0:0:0:1): error 6
266 Mar 29 18:09:17 blade2 kernel: (probe0:isp0:0:0:1): Unretryable Error
267 Mar 29 18:09:17 blade2 kernel: isp0: data overrun for command on 0.0.0
268 Mar 29 18:09:17 blade2 kernel: (da1:isp0:0:0:0): Data Overrun
269 Mar 29 18:09:17 blade2 kernel: (da1:isp0:0:0:0): Retrying Command
270 Mar 29 18:09:18 blade2 kernel: (probe0:isp0:0:0:2): error 6
271 Mar 29 18:09:18 blade2 kernel: (probe0:isp0:0:0:2): Unretryable Error
272 Mar 29 18:09:18 blade2 kernel: isp0: data overrun for command on 0.0.0
273 Mar 29 18:09:18 blade2 kernel: (da1:isp0:0:0:0): Data Overrun
274 Mar 29 18:09:18 blade2 kernel: (da1:isp0:0:0:0): Retrying Command
275 Mar 29 18:09:18 blade2 kernel: (probe0:isp0:0:0:3): error 6
276 Mar 29 18:09:18 blade2 kernel: (probe0:isp0:0:0:3): Unretryable Error
277 Mar 29 18:09:18 blade2 kernel: isp0: data overrun for command on 0.0.0
278 Mar 29 18:09:18 blade2 kernel: (da1:isp0:0:0:0): Data Overrun
279 Mar 29 18:09:18 blade2 kernel: (da1:isp0:0:0:0): Retrying Command
280 Mar 29 18:09:18 blade2 kernel: (probe0:isp0:0:0:4): error 6
281 Mar 29 18:09:18 blade2 kernel: (probe0:isp0:0:0:4): Unretryable Error
282 Mar 29 18:09:18 blade2 kernel: isp0: data overrun for command on 0.0.0
283 Mar 29 18:09:18 blade2 kernel: (da1:isp0:0:0:0): Data Overrun
284 Mar 29 18:09:18 blade2 kernel: (da1:isp0:0:0:0): Retrying Command
285 Mar 29 18:09:18 blade2 kernel: (probe0:isp0:0:0:5): error 6
286 Mar 29 18:09:18 blade2 kernel: (probe0:isp0:0:0:5): Unretryable Error
287 Mar 29 18:09:18 blade2 kernel: isp0: data overrun for command on 0.0.0
288 Mar 29 18:09:18 blade2 kernel: (da1:isp0:0:0:0): Data Overrun
289 Mar 29 18:09:18 blade2 kernel: (da1:isp0:0:0:0): error 5
290 Mar 29 18:09:18 blade2 kernel: (da1:isp0:0:0:0): Retries Exausted
291 Mar 29 18:09:18 blade2 kernel: (probe0:isp0:0:0:6): error 6
292 Mar 29 18:09:18 blade2 kernel: (probe0:isp0:0:0:6): Unretryable Error
293 Mar 29 18:09:19 blade2 kernel: (probe0:isp0:0:0:7): error 6
294 Mar 29 18:09:19 blade2 kernel: (probe0:isp0:0:0:7): Unretryable Error
295
296
297 The device is there, but I cannot use it.
298
299 BTW, the target mode machine (Linux) runs on a dual Opteron in 64 bit
300 mode, with 8GB of RAM. I've lowered it with mem=800M, but the effect is
301 the same.
302
303 Assuming that mixed 2.6.14-.15 kernel is the fault, could you please
304 tell me what version should I use, for which all of the patches will
305 work?
306
307 ======================================================================
308
309 So, as a bottom line, if you want me to be friendly, don't ask questions
310 answers on which you can find out yourself by a simple documentation
311 reading and minimal thinking effort.
312
313 Also it is very desirable if you attach to your question full kernel log
314 from target since it's booted.
315
316 If you experience kernel crash, hang, etc., you should follow
317 REPORTING-BUGS file from your kernel source tree.
318
319 Vladislav Bolkhovitin <vst@vlnb.net>, http://scst.sourceforge.net