lkml.org 
[lkml]   [2008]   [Aug]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 2/9] ide-disk: set_addressing() fixes
    * Return -EIO if arg > 0 and LBA48 is unsupported.

    * No need to reset ->addressing.

    * Make ->addressing a single bit flag.

    Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
    ---
    drivers/ide/ide-disk.c | 11 +++++------
    include/linux/ide.h | 2 +-
    2 files changed, 6 insertions(+), 7 deletions(-)

    Index: b/drivers/ide/ide-disk.c
    ===================================================================
    --- a/drivers/ide/ide-disk.c
    +++ b/drivers/ide/ide-disk.c
    @@ -694,14 +694,13 @@ static int set_addressing(ide_drive_t *d
    if (arg < 0 || arg > 2)
    return -EINVAL;

    - drive->addressing = 0;
    -
    - if (drive->hwif->host_flags & IDE_HFLAG_NO_LBA48)
    - return 0;
    -
    - if (ata_id_lba48_enabled(drive->id) == 0)
    + if (arg && ((drive->hwif->host_flags & IDE_HFLAG_NO_LBA48) ||
    + ata_id_lba48_enabled(drive->id) == 0))
    return -EIO;

    + if (arg == 2)
    + arg = 0;
    +
    drive->addressing = arg;

    return 0;
    Index: b/include/linux/ide.h
    ===================================================================
    --- a/include/linux/ide.h
    +++ b/include/linux/ide.h
    @@ -507,7 +507,7 @@ struct ide_drive_s {
    unsigned sleeping : 1; /* 1=sleeping & sleep field valid */
    unsigned post_reset : 1;
    unsigned udma33_warned : 1;
    - unsigned addressing : 2; /* 0=28-bit, 1=48-bit, 2=48-bit doing 28-bit */
    + unsigned addressing : 1; /* 0=28-bit, 1=48-bit */
    unsigned wcache : 1; /* status of write cache */
    unsigned nowerr : 1; /* used for ignoring ATA_DF */


    \
     
     \ /
      Last update: 2008-08-17 19:21    [W:0.022 / U:0.528 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site