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