lkml.org 
[lkml]   [2008]   [Nov]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 10/49] cciss: fix regression firmware not displayed in procfs
    2.6.27-stable review patch.  If anyone has any objections, please let us know.

    ------------------

    From: Mike Miller <mike.miller@hp.com>

    commit 22bece00dc1f28dd3374c55e464c9f02eb642876 upstream

    This regression was introduced by commit
    6ae5ce8e8d4de666f31286808d2285aa6a50fa40 ("cciss: remove redundant code").

    This patch fixes a regression where the controller firmware version is not
    displayed in procfs. The previous patch would be called anytime something
    changed. This will get called only once for each controller.

    Signed-off-by: Mike Miller <mike.miller@hp.com>
    Cc: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
    Cc: Jens Axboe <jens.axboe@oracle.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/block/cciss.c | 23 ++++++++++++++++++++++-
    1 file changed, 22 insertions(+), 1 deletion(-)

    --- a/drivers/block/cciss.c
    +++ b/drivers/block/cciss.c
    @@ -3403,7 +3403,8 @@ static int __devinit cciss_init_one(stru
    int i;
    int j = 0;
    int rc;
    - int dac;
    + int dac, return_code;
    + InquiryData_struct *inq_buff = NULL;

    i = alloc_cciss_hba();
    if (i < 0)
    @@ -3509,6 +3510,25 @@ static int __devinit cciss_init_one(stru
    /* Turn the interrupts on so we can service requests */
    hba[i]->access.set_intr_mask(hba[i], CCISS_INTR_ON);

    + /* Get the firmware version */
    + inq_buff = kzalloc(sizeof(InquiryData_struct), GFP_KERNEL);
    + if (inq_buff == NULL) {
    + printk(KERN_ERR "cciss: out of memory\n");
    + goto clean4;
    + }
    +
    + return_code = sendcmd_withirq(CISS_INQUIRY, i, inq_buff,
    + sizeof(InquiryData_struct), 0, 0 , 0, TYPE_CMD);
    + if (return_code == IO_OK) {
    + hba[i]->firm_ver[0] = inq_buff->data_byte[32];
    + hba[i]->firm_ver[1] = inq_buff->data_byte[33];
    + hba[i]->firm_ver[2] = inq_buff->data_byte[34];
    + hba[i]->firm_ver[3] = inq_buff->data_byte[35];
    + } else { /* send command failed */
    + printk(KERN_WARNING "cciss: unable to determine firmware"
    + " version of controller\n");
    + }
    +
    cciss_procinit(i);

    hba[i]->cciss_max_sectors = 2048;
    @@ -3519,6 +3539,7 @@ static int __devinit cciss_init_one(stru
    return 1;

    clean4:
    + kfree(inq_buff);
    #ifdef CONFIG_CISS_SCSI_TAPE
    kfree(hba[i]->scsi_rejects.complete);
    #endif
    --


    \
     
     \ /
      Last update: 2008-11-12 01:33    [W:0.023 / U:62.788 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site