/[linux-patches]/genpatches-2.6/historical/2.6.10/2315_aacraid-redundancy.patch
Gentoo

Contents of /genpatches-2.6/historical/2.6.10/2315_aacraid-redundancy.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2 - (show annotations) (download) (as text)
Sat Jun 11 23:16:54 2005 UTC (15 years ago) by dsd
File MIME type: text/x-diff
File size: 3056 byte(s)
Import historical releases
1 # This is a BitKeeper generated diff -Nru style patch.
2 #
3 # ChangeSet
4 # 2005/01/03 15:22:39-06:00 coughlan@redhat.com
5 # [PATCH] aacraid: remove aac_handle_aif
6 #
7 # When aac_command_thread detects an adapter event (AifCmdDriverNotify or
8 # AifCmdEventNotify) it calls aac_handle_aif. This routine sets a flag,
9 # calls fib_adapter_complete, and returns. The bad news is that after the
10 # return, aac_command_thread continues to process the command and calls
11 # fib_adapter_complete again.
12 #
13 # Under some circumstances this causes the driver to take the device
14 # offline. In my case, it happens with a Dell CERC SATA with a RAID 5 in
15 # the "building" state:
16 #
17 # aacraid: Host adapter reset request. SCSI hang ?
18 # aacraid: Host adapter appears dead
19 # scsi: Device offlined - not ready after error recovery: host 0 channel 0
20 # id 0 lun 0
21 # SCSI error : <0 0 0 0> return code = 0x6000000
22 # end_request: I/O error, dev sda, sector 976537592
23 #
24 # Mark Salyzyn says the intent is for aac_handle_aif to perform some
25 # plug-n-play actions based on the adapter event, and return, leaving the
26 # command completion to the caller.
27 #
28 # The attached patch solves the problem by removing aac_handle_aif
29 # entirely, since it is wrong, and there is currently no code in the
30 # driver to actually do anything with these events.
31 #
32 # Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
33 #
34 # drivers/scsi/aacraid/commsup.c
35 # 2005/01/02 18:00:00-06:00 coughlan@redhat.com +0 -27
36 # aacraid: remove aac_handle_aif
37 #
38 diff -Nru a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c
39 --- a/drivers/scsi/aacraid/commsup.c 2005-02-01 11:40:03 -08:00
40 +++ b/drivers/scsi/aacraid/commsup.c 2005-02-01 11:40:03 -08:00
41 @@ -768,28 +768,6 @@
42 memset(cp, 0, 256);
43 }
44
45 -
46 -/**
47 - * aac_handle_aif - Handle a message from the firmware
48 - * @dev: Which adapter this fib is from
49 - * @fibptr: Pointer to fibptr from adapter
50 - *
51 - * This routine handles a driver notify fib from the adapter and
52 - * dispatches it to the appropriate routine for handling.
53 - */
54 -
55 -static void aac_handle_aif(struct aac_dev * dev, struct fib * fibptr)
56 -{
57 - struct hw_fib * hw_fib = fibptr->hw_fib;
58 - /*
59 - * Set the status of this FIB to be Invalid parameter.
60 - *
61 - * *(u32 *)fib->data = ST_INVAL;
62 - */
63 - *(u32 *)hw_fib->data = cpu_to_le32(ST_OK);
64 - fib_adapter_complete(fibptr, sizeof(u32));
65 -}
66 -
67 /**
68 * aac_command_thread - command processing thread
69 * @dev: Adapter to monitor
70 @@ -859,7 +837,6 @@
71 aifcmd = (struct aac_aifcmd *) hw_fib->data;
72 if (aifcmd->command == cpu_to_le32(AifCmdDriverNotify)) {
73 /* Handle Driver Notify Events */
74 - aac_handle_aif(dev, fib);
75 *(u32 *)hw_fib->data = cpu_to_le32(ST_OK);
76 fib_adapter_complete(fib, sizeof(u32));
77 } else {
78 @@ -869,10 +846,6 @@
79
80 u32 time_now, time_last;
81 unsigned long flagv;
82 -
83 - /* Sniff events */
84 - if (aifcmd->command == cpu_to_le32(AifCmdEventNotify))
85 - aac_handle_aif(dev, fib);
86
87 time_now = jiffies/HZ;
88

  ViewVC Help
Powered by ViewVC 1.1.20