/[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 - (hide annotations) (download) (as text)
Sat Jun 11 23:16:54 2005 UTC (15 years, 2 months ago) by dsd
File MIME type: text/x-diff
File size: 3056 byte(s)
Import historical releases
1 dsd 2 # 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