lkml.org 
[lkml]   [2004]   [Mar]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH] remove dead ATAPI multi-lun support (used for ide-scsi)
    On 2004.02.20 16:47, Bartlomiej Zolnierkiewicz wrote:
    >
    > [IDE] remove dead ATAPI multi-lun support (used for ide-scsi)
    >
    > ChangeSet@1.889.69.2 03-01-23 14:51:03-05:00 adam@yggdrasil.com
    > | The following changes to ide-scsi.c are a recovery of the
    > | changes that I had in ide-scsi.c in the stock kernel's before
    > | Martin Dalecki's IDE tree was reverted and a few other changes.
    > ...
    >
    > broke it.
    >
    > Before this change drive->id->last_id & 0x7 was used as shost->max_lun
    > and "hdXlun=" kernel parameter could be used to override it.
    >
    > It was needed probably only for some rare ATAPI PD-CD drives
    > (http://www.geocrawler.com/archives/3/58/1999/11/50/2877161/).
    >
    > However it was far from optimal:
    > - people played with "hdXlun=" and then complained about multiple instances
    > of the same device (most ATAPI drives respond to each LUN)
    > - probably some devices return 7 not 0 in id->last_id (=> 7 x same device)
    >
    > This patch cleans things up, multi-lun will be fixed if needed in ide-scsi.
    > I think that this may work but can't verify it:
    >
    > if (id->last_lun && id->last_lun != 7)
    > shost->max_lun = id->last_lun + 1;
    > else
    > shost->max_lun = 1;

    I have verified that this works with my PD/CD drive, the patch to ide-scsi.c
    that I suggest (against linux-2.6.4-rc1-mm2) is below.

    Thanks, Willem Riede.

    --- m0/drivers/scsi/ide-scsi.c 2004-03-05 19:54:33.000000000 -0500
    +++ m1/drivers/scsi/ide-scsi.c 2004-03-06 14:49:47.000000000 -0500
    @@ -1148,7 +1148,16 @@
    return 1;

    host->max_id = 1;
    - host->max_lun = 1;
    +
    +#if IDESCSI_DEBUG_LOG
    + if (drive->id->last_lun)
    + printk(KERN_NOTICE "%s: id->last_lun=%u\n", drive->name, drive->id->last_lun);
    +#endif
    + if ((drive->id->last_lun & 0x7) != 7)
    + host->max_lun = (drive->id->last_lun & 0x7) + 1;
    + else
    + host->max_lun = 1;
    +
    drive->driver_data = host;
    idescsi = scsihost_to_idescsi(host);
    idescsi->drive = drive;
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 14:01    [W:0.023 / U:128.816 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site