1 From: Gerald Schaefer <geraldsc@de.ibm.com>
2 Subject: [PATCH] zfcp: Move debug data from zfcp_data to own data structure
3 References: bnc#532063,LTC#55526
5 From: Christof Schmitt <christof.schmitt@de.ibm.com>
7 The struct zfcp_adapter includes everything related to the debug
8 traces. This introduces dependences between the definitions in
9 zfcp_def.h and zfcp_dbf.h. Move all debug related data structures to a
10 new data structure to break those dependencies and manage the debug
11 data in zfcp_dbf.[hc].
13 Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com>
15 Acked-by: John Jolly <jjolly@suse.de>
18 drivers/s390/scsi/zfcp_aux.c | 4
19 drivers/s390/scsi/zfcp_dbf.c | 217 ++++++++++++++++++++++++-------------------
20 drivers/s390/scsi/zfcp_dbf.h | 17 +++
21 drivers/s390/scsi/zfcp_def.h | 15 --
22 drivers/s390/scsi/zfcp_fsf.h | 3
23 5 files changed, 143 insertions(+), 113 deletions(-)
25 Index: linux-sles11/drivers/s390/scsi/zfcp_aux.c
26 ===================================================================
27 --- linux-sles11.orig/drivers/s390/scsi/zfcp_aux.c 2009-08-17 15:31:25.000000000 +0200
28 +++ linux-sles11/drivers/s390/scsi/zfcp_aux.c 2009-08-17 15:31:35.000000000 +0200
31 spin_lock_init(&adapter->req_list_lock);
33 - spin_lock_init(&adapter->hba_dbf_lock);
34 - spin_lock_init(&adapter->san_dbf_lock);
35 - spin_lock_init(&adapter->scsi_dbf_lock);
36 - spin_lock_init(&adapter->rec_dbf_lock);
37 spin_lock_init(&adapter->req_q_lock);
38 spin_lock_init(&adapter->qdio_stat_lock);
40 Index: linux-sles11/drivers/s390/scsi/zfcp_dbf.c
41 ===================================================================
42 --- linux-sles11.orig/drivers/s390/scsi/zfcp_dbf.c 2009-08-17 15:31:25.000000000 +0200
43 +++ linux-sles11/drivers/s390/scsi/zfcp_dbf.c 2009-08-17 15:31:35.000000000 +0200
46 * Debug traces for zfcp.
48 - * Copyright IBM Corporation 2002, 2008
49 + * Copyright IBM Corporation 2002, 2009
52 #define KMSG_COMPONENT "zfcp"
54 #include <linux/ctype.h>
55 #include <asm/debug.h>
56 +#include "zfcp_dbf.h"
59 static u32 dbfsize = 4;
61 void zfcp_hba_dbf_event_fsf_response(struct zfcp_fsf_req *fsf_req)
63 struct zfcp_adapter *adapter = fsf_req->adapter;
64 + struct zfcp_dbf *dbf = adapter->dbf;
65 struct fsf_qtcb *qtcb = fsf_req->qtcb;
66 union fsf_prot_status_qual *prot_status_qual =
67 &qtcb->prefix.prot_status_qual;
69 struct zfcp_port *port;
70 struct zfcp_unit *unit;
71 struct zfcp_send_els *send_els;
72 - struct zfcp_hba_dbf_record *rec = &adapter->hba_dbf_buf;
73 + struct zfcp_hba_dbf_record *rec = &dbf->hba_dbf_buf;
74 struct zfcp_hba_dbf_record_response *response = &rec->u.response;
78 - spin_lock_irqsave(&adapter->hba_dbf_lock, flags);
79 + spin_lock_irqsave(&dbf->hba_dbf_lock, flags);
80 memset(rec, 0, sizeof(*rec));
81 strncpy(rec->tag, "resp", ZFCP_DBF_TAG_SIZE);
87 - debug_event(adapter->hba_dbf, level, rec, sizeof(*rec));
88 + debug_event(dbf->hba_dbf, level, rec, sizeof(*rec));
90 /* have fcp channel microcode fixed to use as little as possible */
91 if (fsf_req->fsf_command != FSF_QTCB_FCP_CMND) {
93 char *buf = (char *)qtcb + qtcb->header.log_start;
94 int len = qtcb->header.log_length;
95 for (; len && !buf[len - 1]; len--);
96 - zfcp_dbf_hexdump(adapter->hba_dbf, rec, sizeof(*rec), level,
98 + zfcp_dbf_hexdump(dbf->hba_dbf, rec, sizeof(*rec), level, buf,
102 - spin_unlock_irqrestore(&adapter->hba_dbf_lock, flags);
103 + spin_unlock_irqrestore(&dbf->hba_dbf_lock, flags);
107 @@ -247,10 +249,11 @@
108 void zfcp_hba_dbf_event_fsf_unsol(const char *tag, struct zfcp_adapter *adapter,
109 struct fsf_status_read_buffer *status_buffer)
111 - struct zfcp_hba_dbf_record *rec = &adapter->hba_dbf_buf;
112 + struct zfcp_dbf *dbf = adapter->dbf;
113 + struct zfcp_hba_dbf_record *rec = &dbf->hba_dbf_buf;
116 - spin_lock_irqsave(&adapter->hba_dbf_lock, flags);
117 + spin_lock_irqsave(&dbf->hba_dbf_lock, flags);
118 memset(rec, 0, sizeof(*rec));
119 strncpy(rec->tag, "stat", ZFCP_DBF_TAG_SIZE);
120 strncpy(rec->tag2, tag, ZFCP_DBF_TAG_SIZE);
122 &status_buffer->payload, rec->u.status.payload_size);
125 - debug_event(adapter->hba_dbf, 2, rec, sizeof(*rec));
126 - spin_unlock_irqrestore(&adapter->hba_dbf_lock, flags);
127 + debug_event(dbf->hba_dbf, 2, rec, sizeof(*rec));
128 + spin_unlock_irqrestore(&dbf->hba_dbf_lock, flags);
132 @@ -307,17 +310,18 @@
133 unsigned int qdio_error, int sbal_index,
136 - struct zfcp_hba_dbf_record *r = &adapter->hba_dbf_buf;
137 + struct zfcp_dbf *dbf = adapter->dbf;
138 + struct zfcp_hba_dbf_record *r = &dbf->hba_dbf_buf;
141 - spin_lock_irqsave(&adapter->hba_dbf_lock, flags);
142 + spin_lock_irqsave(&dbf->hba_dbf_lock, flags);
143 memset(r, 0, sizeof(*r));
144 strncpy(r->tag, "qdio", ZFCP_DBF_TAG_SIZE);
145 r->u.qdio.qdio_error = qdio_error;
146 r->u.qdio.sbal_index = sbal_index;
147 r->u.qdio.sbal_count = sbal_count;
148 - debug_event(adapter->hba_dbf, 0, r, sizeof(*r));
149 - spin_unlock_irqrestore(&adapter->hba_dbf_lock, flags);
150 + debug_event(dbf->hba_dbf, 0, r, sizeof(*r));
151 + spin_unlock_irqrestore(&dbf->hba_dbf_lock, flags);
155 @@ -328,17 +332,18 @@
156 void zfcp_hba_dbf_event_berr(struct zfcp_adapter *adapter,
157 struct zfcp_fsf_req *req)
159 - struct zfcp_hba_dbf_record *r = &adapter->hba_dbf_buf;
160 + struct zfcp_dbf *dbf = adapter->dbf;
161 + struct zfcp_hba_dbf_record *r = &dbf->hba_dbf_buf;
162 struct fsf_status_read_buffer *sr_buf = req->data;
163 struct fsf_bit_error_payload *err = &sr_buf->payload.bit_error;
166 - spin_lock_irqsave(&adapter->hba_dbf_lock, flags);
167 + spin_lock_irqsave(&dbf->hba_dbf_lock, flags);
168 memset(r, 0, sizeof(*r));
169 strncpy(r->tag, "berr", ZFCP_DBF_TAG_SIZE);
170 memcpy(&r->u.berr, err, sizeof(struct fsf_bit_error_payload));
171 - debug_event(adapter->hba_dbf, 0, r, sizeof(*r));
172 - spin_unlock_irqrestore(&adapter->hba_dbf_lock, flags);
173 + debug_event(dbf->hba_dbf, 0, r, sizeof(*r));
174 + spin_unlock_irqrestore(&dbf->hba_dbf_lock, flags);
176 static void zfcp_hba_dbf_view_response(char **p,
177 struct zfcp_hba_dbf_record_response *r)
180 void zfcp_rec_dbf_event_thread(u8 id2, struct zfcp_adapter *adapter)
182 - struct zfcp_rec_dbf_record *r = &adapter->rec_dbf_buf;
183 + struct zfcp_dbf *dbf = adapter->dbf;
184 + struct zfcp_rec_dbf_record *r = &dbf->rec_dbf_buf;
185 unsigned long flags = 0;
186 struct list_head *entry;
187 unsigned ready = 0, running = 0, total;
188 @@ -718,15 +724,15 @@
190 total = adapter->erp_total_count;
192 - spin_lock_irqsave(&adapter->rec_dbf_lock, flags);
193 + spin_lock_irqsave(&dbf->rec_dbf_lock, flags);
194 memset(r, 0, sizeof(*r));
195 r->id = ZFCP_REC_DBF_ID_THREAD;
197 r->u.thread.total = total;
198 r->u.thread.ready = ready;
199 r->u.thread.running = running;
200 - debug_event(adapter->rec_dbf, 6, r, sizeof(*r));
201 - spin_unlock_irqrestore(&adapter->rec_dbf_lock, flags);
202 + debug_event(dbf->rec_dbf, 6, r, sizeof(*r));
203 + spin_unlock_irqrestore(&dbf->rec_dbf_lock, flags);
207 @@ -749,10 +755,11 @@
208 atomic_t *status, atomic_t *erp_count,
209 u64 wwpn, u32 d_id, u64 fcp_lun)
211 - struct zfcp_rec_dbf_record *r = &adapter->rec_dbf_buf;
212 + struct zfcp_dbf *dbf = adapter->dbf;
213 + struct zfcp_rec_dbf_record *r = &dbf->rec_dbf_buf;
216 - spin_lock_irqsave(&adapter->rec_dbf_lock, flags);
217 + spin_lock_irqsave(&dbf->rec_dbf_lock, flags);
218 memset(r, 0, sizeof(*r));
219 r->id = ZFCP_REC_DBF_ID_TARGET;
222 r->u.target.d_id = d_id;
223 r->u.target.fcp_lun = fcp_lun;
224 r->u.target.erp_count = atomic_read(erp_count);
225 - debug_event(adapter->rec_dbf, 3, r, sizeof(*r));
226 - spin_unlock_irqrestore(&adapter->rec_dbf_lock, flags);
227 + debug_event(dbf->rec_dbf, 3, r, sizeof(*r));
228 + spin_unlock_irqrestore(&dbf->rec_dbf_lock, flags);
232 @@ -824,10 +831,11 @@
233 void *action, struct zfcp_adapter *adapter,
234 struct zfcp_port *port, struct zfcp_unit *unit)
236 - struct zfcp_rec_dbf_record *r = &adapter->rec_dbf_buf;
237 + struct zfcp_dbf *dbf = adapter->dbf;
238 + struct zfcp_rec_dbf_record *r = &dbf->rec_dbf_buf;
241 - spin_lock_irqsave(&adapter->rec_dbf_lock, flags);
242 + spin_lock_irqsave(&dbf->rec_dbf_lock, flags);
243 memset(r, 0, sizeof(*r));
244 r->id = ZFCP_REC_DBF_ID_TRIGGER;
247 r->u.trigger.us = atomic_read(&unit->status);
248 r->u.trigger.fcp_lun = unit->fcp_lun;
250 - debug_event(adapter->rec_dbf, action ? 1 : 4, r, sizeof(*r));
251 - spin_unlock_irqrestore(&adapter->rec_dbf_lock, flags);
252 + debug_event(dbf->rec_dbf, action ? 1 : 4, r, sizeof(*r));
253 + spin_unlock_irqrestore(&dbf->rec_dbf_lock, flags);
257 @@ -856,10 +864,11 @@
258 void zfcp_rec_dbf_event_action(u8 id2, struct zfcp_erp_action *erp_action)
260 struct zfcp_adapter *adapter = erp_action->adapter;
261 - struct zfcp_rec_dbf_record *r = &adapter->rec_dbf_buf;
262 + struct zfcp_dbf *dbf = adapter->dbf;
263 + struct zfcp_rec_dbf_record *r = &dbf->rec_dbf_buf;
266 - spin_lock_irqsave(&adapter->rec_dbf_lock, flags);
267 + spin_lock_irqsave(&dbf->rec_dbf_lock, flags);
268 memset(r, 0, sizeof(*r));
269 r->id = ZFCP_REC_DBF_ID_ACTION;
272 r->u.action.status = erp_action->status;
273 r->u.action.step = erp_action->step;
274 r->u.action.fsf_req = (unsigned long)erp_action->fsf_req;
275 - debug_event(adapter->rec_dbf, 5, r, sizeof(*r));
276 - spin_unlock_irqrestore(&adapter->rec_dbf_lock, flags);
277 + debug_event(dbf->rec_dbf, 5, r, sizeof(*r));
278 + spin_unlock_irqrestore(&dbf->rec_dbf_lock, flags);
282 @@ -880,13 +889,14 @@
283 struct zfcp_send_ct *ct = (struct zfcp_send_ct *)fsf_req->data;
284 struct zfcp_wka_port *wka_port = ct->wka_port;
285 struct zfcp_adapter *adapter = wka_port->adapter;
286 + struct zfcp_dbf *dbf = adapter->dbf;
287 struct ct_hdr *hdr = sg_virt(ct->req);
288 - struct zfcp_san_dbf_record *r = &adapter->san_dbf_buf;
289 + struct zfcp_san_dbf_record *r = &dbf->san_dbf_buf;
290 struct zfcp_san_dbf_record_ct_request *oct = &r->u.ct_req;
294 - spin_lock_irqsave(&adapter->san_dbf_lock, flags);
295 + spin_lock_irqsave(&dbf->san_dbf_lock, flags);
296 memset(r, 0, sizeof(*r));
297 strncpy(r->tag, "octc", ZFCP_DBF_TAG_SIZE);
298 r->fsf_reqid = (unsigned long)fsf_req;
299 @@ -901,10 +911,10 @@
300 oct->max_res_size = hdr->max_res_size;
301 oct->len = min((int)ct->req->length - (int)sizeof(struct ct_hdr),
302 ZFCP_DBF_SAN_MAX_PAYLOAD);
303 - debug_event(adapter->san_dbf, level, r, sizeof(*r));
304 - zfcp_dbf_hexdump(adapter->san_dbf, r, sizeof(*r), level,
305 + debug_event(dbf->san_dbf, level, r, sizeof(*r));
306 + zfcp_dbf_hexdump(dbf->san_dbf, r, sizeof(*r), level,
307 (void *)hdr + sizeof(struct ct_hdr), oct->len);
308 - spin_unlock_irqrestore(&adapter->san_dbf_lock, flags);
309 + spin_unlock_irqrestore(&dbf->san_dbf_lock, flags);
313 @@ -917,12 +927,13 @@
314 struct zfcp_wka_port *wka_port = ct->wka_port;
315 struct zfcp_adapter *adapter = wka_port->adapter;
316 struct ct_hdr *hdr = sg_virt(ct->resp);
317 - struct zfcp_san_dbf_record *r = &adapter->san_dbf_buf;
318 + struct zfcp_dbf *dbf = adapter->dbf;
319 + struct zfcp_san_dbf_record *r = &dbf->san_dbf_buf;
320 struct zfcp_san_dbf_record_ct_response *rct = &r->u.ct_resp;
324 - spin_lock_irqsave(&adapter->san_dbf_lock, flags);
325 + spin_lock_irqsave(&dbf->san_dbf_lock, flags);
326 memset(r, 0, sizeof(*r));
327 strncpy(r->tag, "rctc", ZFCP_DBF_TAG_SIZE);
328 r->fsf_reqid = (unsigned long)fsf_req;
329 @@ -937,10 +948,10 @@
330 rct->max_res_size = hdr->max_res_size;
331 rct->len = min((int)ct->resp->length - (int)sizeof(struct ct_hdr),
332 ZFCP_DBF_SAN_MAX_PAYLOAD);
333 - debug_event(adapter->san_dbf, level, r, sizeof(*r));
334 - zfcp_dbf_hexdump(adapter->san_dbf, r, sizeof(*r), level,
335 + debug_event(dbf->san_dbf, level, r, sizeof(*r));
336 + zfcp_dbf_hexdump(dbf->san_dbf, r, sizeof(*r), level,
337 (void *)hdr + sizeof(struct ct_hdr), rct->len);
338 - spin_unlock_irqrestore(&adapter->san_dbf_lock, flags);
339 + spin_unlock_irqrestore(&dbf->san_dbf_lock, flags);
342 static void zfcp_san_dbf_event_els(const char *tag, int level,
343 @@ -949,10 +960,11 @@
346 struct zfcp_adapter *adapter = fsf_req->adapter;
347 - struct zfcp_san_dbf_record *rec = &adapter->san_dbf_buf;
348 + struct zfcp_dbf *dbf = adapter->dbf;
349 + struct zfcp_san_dbf_record *rec = &dbf->san_dbf_buf;
352 - spin_lock_irqsave(&adapter->san_dbf_lock, flags);
353 + spin_lock_irqsave(&dbf->san_dbf_lock, flags);
354 memset(rec, 0, sizeof(*rec));
355 strncpy(rec->tag, tag, ZFCP_DBF_TAG_SIZE);
356 rec->fsf_reqid = (unsigned long)fsf_req;
357 @@ -960,10 +972,10 @@
360 rec->u.els.ls_code = ls_code;
361 - debug_event(adapter->san_dbf, level, rec, sizeof(*rec));
362 - zfcp_dbf_hexdump(adapter->san_dbf, rec, sizeof(*rec), level,
363 + debug_event(dbf->san_dbf, level, rec, sizeof(*rec));
364 + zfcp_dbf_hexdump(dbf->san_dbf, rec, sizeof(*rec), level,
365 buffer, min(buflen, ZFCP_DBF_SAN_MAX_PAYLOAD));
366 - spin_unlock_irqrestore(&adapter->san_dbf_lock, flags);
367 + spin_unlock_irqrestore(&dbf->san_dbf_lock, flags);
371 @@ -1067,14 +1079,15 @@
372 struct zfcp_fsf_req *fsf_req,
373 unsigned long old_req_id)
375 - struct zfcp_scsi_dbf_record *rec = &adapter->scsi_dbf_buf;
376 + struct zfcp_dbf *dbf = adapter->dbf;
377 + struct zfcp_scsi_dbf_record *rec = &dbf->scsi_dbf_buf;
378 struct zfcp_dbf_dump *dump = (struct zfcp_dbf_dump *)rec;
380 struct fcp_rsp_iu *fcp_rsp;
381 char *fcp_rsp_info = NULL, *fcp_sns_info = NULL;
382 int offset = 0, buflen = 0;
384 - spin_lock_irqsave(&adapter->scsi_dbf_lock, flags);
385 + spin_lock_irqsave(&dbf->scsi_dbf_lock, flags);
387 memset(rec, 0, sizeof(*rec));
389 @@ -1133,9 +1146,9 @@
390 memcpy(dump->data, fcp_sns_info + offset, dump->size);
391 offset += dump->size;
393 - debug_event(adapter->scsi_dbf, level, rec, sizeof(*rec));
394 + debug_event(dbf->scsi_dbf, level, rec, sizeof(*rec));
395 } while (offset < buflen);
396 - spin_unlock_irqrestore(&adapter->scsi_dbf_lock, flags);
397 + spin_unlock_irqrestore(&dbf->scsi_dbf_lock, flags);
401 @@ -1239,6 +1252,22 @@
405 +static debug_info_t *zfcp_dbf_reg(const char *name, int level,
406 + struct debug_view *view, int size)
408 + struct debug_info *d;
410 + d = debug_register(name, dbfsize, level, size);
414 + debug_register_view(d, &debug_hex_ascii_view);
415 + debug_register_view(d, view);
416 + debug_set_level(d, level);
422 * zfcp_adapter_debug_register - registers debug feature for an adapter
423 * @adapter: pointer to adapter for which debug features should be registered
424 @@ -1247,52 +1276,56 @@
425 int zfcp_adapter_debug_register(struct zfcp_adapter *adapter)
427 char dbf_name[DEBUG_MAX_NAME_LEN];
428 + struct zfcp_dbf *dbf;
430 + dbf = kmalloc(sizeof(struct zfcp_dbf), GFP_KERNEL);
434 + spin_lock_init(&dbf->hba_dbf_lock);
435 + spin_lock_init(&dbf->san_dbf_lock);
436 + spin_lock_init(&dbf->scsi_dbf_lock);
437 + spin_lock_init(&dbf->rec_dbf_lock);
439 /* debug feature area which records recovery activity */
440 sprintf(dbf_name, "zfcp_%s_rec", zfcp_get_busid_by_adapter(adapter));
441 - adapter->rec_dbf = debug_register(dbf_name, dbfsize, 1,
442 - sizeof(struct zfcp_rec_dbf_record));
443 - if (!adapter->rec_dbf)
445 - debug_register_view(adapter->rec_dbf, &debug_hex_ascii_view);
446 - debug_register_view(adapter->rec_dbf, &zfcp_rec_dbf_view);
447 - debug_set_level(adapter->rec_dbf, 3);
448 + dbf->rec_dbf = zfcp_dbf_reg(dbf_name, 3, &zfcp_rec_dbf_view,
449 + sizeof(struct zfcp_rec_dbf_record));
453 /* debug feature area which records HBA (FSF and QDIO) conditions */
454 sprintf(dbf_name, "zfcp_%s_hba", zfcp_get_busid_by_adapter(adapter));
455 - adapter->hba_dbf = debug_register(dbf_name, dbfsize, 1,
456 - sizeof(struct zfcp_hba_dbf_record));
457 - if (!adapter->hba_dbf)
459 - debug_register_view(adapter->hba_dbf, &debug_hex_ascii_view);
460 - debug_register_view(adapter->hba_dbf, &zfcp_hba_dbf_view);
461 - debug_set_level(adapter->hba_dbf, 3);
462 + dbf->hba_dbf = zfcp_dbf_reg(dbf_name, 3, &zfcp_hba_dbf_view,
463 + sizeof(struct zfcp_hba_dbf_record));
467 /* debug feature area which records SAN command failures and recovery */
468 sprintf(dbf_name, "zfcp_%s_san", zfcp_get_busid_by_adapter(adapter));
469 - adapter->san_dbf = debug_register(dbf_name, dbfsize, 1,
470 - sizeof(struct zfcp_san_dbf_record));
471 - if (!adapter->san_dbf)
473 - debug_register_view(adapter->san_dbf, &debug_hex_ascii_view);
474 - debug_register_view(adapter->san_dbf, &zfcp_san_dbf_view);
475 - debug_set_level(adapter->san_dbf, 6);
476 + dbf->san_dbf = zfcp_dbf_reg(dbf_name, 6, &zfcp_san_dbf_view,
477 + sizeof(struct zfcp_san_dbf_record));
481 /* debug feature area which records SCSI command failures and recovery */
482 sprintf(dbf_name, "zfcp_%s_scsi", zfcp_get_busid_by_adapter(adapter));
483 - adapter->scsi_dbf = debug_register(dbf_name, dbfsize, 1,
484 - sizeof(struct zfcp_scsi_dbf_record));
485 - if (!adapter->scsi_dbf)
487 - debug_register_view(adapter->scsi_dbf, &debug_hex_ascii_view);
488 - debug_register_view(adapter->scsi_dbf, &zfcp_scsi_dbf_view);
489 - debug_set_level(adapter->scsi_dbf, 3);
490 + dbf->scsi_dbf = zfcp_dbf_reg(dbf_name, 3, &zfcp_scsi_dbf_view,
491 + sizeof(struct zfcp_scsi_dbf_record));
492 + if (!dbf->scsi_dbf)
495 + adapter->dbf = dbf;
499 - zfcp_adapter_debug_unregister(adapter);
502 + debug_unregister(dbf->san_dbf);
504 + debug_unregister(dbf->hba_dbf);
506 + debug_unregister(dbf->rec_dbf);
512 @@ -1302,12 +1335,10 @@
514 void zfcp_adapter_debug_unregister(struct zfcp_adapter *adapter)
516 - debug_unregister(adapter->scsi_dbf);
517 - debug_unregister(adapter->san_dbf);
518 - debug_unregister(adapter->hba_dbf);
519 - debug_unregister(adapter->rec_dbf);
520 - adapter->scsi_dbf = NULL;
521 - adapter->san_dbf = NULL;
522 - adapter->hba_dbf = NULL;
523 - adapter->rec_dbf = NULL;
524 + debug_unregister(adapter->dbf->scsi_dbf);
525 + debug_unregister(adapter->dbf->san_dbf);
526 + debug_unregister(adapter->dbf->hba_dbf);
527 + debug_unregister(adapter->dbf->rec_dbf);
528 + kfree(adapter->dbf);
529 + adapter->dbf = NULL;
531 Index: linux-sles11/drivers/s390/scsi/zfcp_dbf.h
532 ===================================================================
533 --- linux-sles11.orig/drivers/s390/scsi/zfcp_dbf.h 2009-08-17 15:31:25.000000000 +0200
534 +++ linux-sles11/drivers/s390/scsi/zfcp_dbf.h 2009-08-17 15:31:35.000000000 +0200
536 * This file is part of the zfcp device driver for
537 * FCP adapters for IBM System z9 and zSeries.
539 - * Copyright IBM Corp. 2008, 2008
540 + * Copyright IBM Corp. 2008, 2009
542 * This program is free software; you can redistribute it and/or modify
543 * it under the terms of the GNU General Public License as published by
545 u8 sns_info[ZFCP_DBF_SCSI_FCP_SNS_INFO];
546 } __attribute__ ((packed));
549 + debug_info_t *rec_dbf;
550 + debug_info_t *hba_dbf;
551 + debug_info_t *san_dbf;
552 + debug_info_t *scsi_dbf;
553 + spinlock_t rec_dbf_lock;
554 + spinlock_t hba_dbf_lock;
555 + spinlock_t san_dbf_lock;
556 + spinlock_t scsi_dbf_lock;
557 + struct zfcp_rec_dbf_record rec_dbf_buf;
558 + struct zfcp_hba_dbf_record hba_dbf_buf;
559 + struct zfcp_san_dbf_record san_dbf_buf;
560 + struct zfcp_scsi_dbf_record scsi_dbf_buf;
563 #endif /* ZFCP_DBF_H */
564 Index: linux-sles11/drivers/s390/scsi/zfcp_def.h
565 ===================================================================
566 --- linux-sles11.orig/drivers/s390/scsi/zfcp_def.h 2009-08-17 15:31:29.000000000 +0200
567 +++ linux-sles11/drivers/s390/scsi/zfcp_def.h 2009-08-17 15:31:35.000000000 +0200
569 #include <asm/qdio.h>
570 #include <asm/debug.h>
571 #include <asm/ebcdic.h>
572 -#include "zfcp_dbf.h"
573 #include "zfcp_fsf.h"
576 /********************* GENERAL DEFINES *********************************/
578 #define REQUEST_LIST_SIZE 128
580 u32 erp_low_mem_count; /* nr of erp actions waiting
582 struct zfcp_wka_port nsp; /* adapter's nameserver */
583 - debug_info_t *rec_dbf;
584 - debug_info_t *hba_dbf;
585 - debug_info_t *san_dbf; /* debug feature areas */
586 - debug_info_t *scsi_dbf;
587 - spinlock_t rec_dbf_lock;
588 - spinlock_t hba_dbf_lock;
589 - spinlock_t san_dbf_lock;
590 - spinlock_t scsi_dbf_lock;
591 - struct zfcp_rec_dbf_record rec_dbf_buf;
592 - struct zfcp_hba_dbf_record hba_dbf_buf;
593 - struct zfcp_san_dbf_record san_dbf_buf;
594 - struct zfcp_scsi_dbf_record scsi_dbf_buf;
595 + struct zfcp_dbf *dbf; /* debug traces */
596 struct zfcp_adapter_mempool pool; /* Adapter memory pools */
597 struct qdio_initialize qdio_init_data; /* for qdio_establish */
598 struct fc_host_statistics *fc_stats;
599 Index: linux-sles11/drivers/s390/scsi/zfcp_fsf.h
600 ===================================================================
601 --- linux-sles11.orig/drivers/s390/scsi/zfcp_fsf.h 2009-08-17 15:31:25.000000000 +0200
602 +++ linux-sles11/drivers/s390/scsi/zfcp_fsf.h 2009-08-17 15:31:35.000000000 +0200
605 * Interface to the FSF support functions.
607 - * Copyright IBM Corporation 2002, 2008
608 + * Copyright IBM Corporation 2002, 2009
614 #include <linux/pfn.h>
615 +#include <linux/scatterlist.h>
617 #define FSF_QTCB_CURRENT_VERSION 0x00000001