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