lkml.org 
[lkml]   [2004]   [Jan]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH] make ide-cd handle non-2kB sector sizes
    Date
    On Friday 23 of January 2004 15:01, Pascal Schmidt wrote:
    > On Fri, 23 Jan 2004, Jens Axboe wrote:
    > > It's a good first start, thanks for doing this. You really want to be
    > > storing this info in the queue, though, there's a hardsector size just
    > > for this very purpose. That way other layers know about the hardware
    > > sector size as well, not just ide-cd. And you get other things right for
    > > free as well, for instance ide_cdrom_prep_fs() needs a correct hardware
    > > block size or it will build wrong cdbs.
    >
    > Hmmm. I'm doing
    >
    > blk_queue_hardsect_size(drive->queue, sectors_per_frame << 9);
    >
    > inside of cdrom_read_toc, is that not enough? Or do you mean that
    > I should only store it in the queue and not also in cdrom_state_flags?

    I think Jens means storing it only in q->hardsect_size.
    This way you can just use rq->q->hardsect_size << 9 to get sectors_per_frame.

    > > Hmm, you made it a bit more confusing. It should read that writes must
    > > be hardware sector aligned. Something ala
    > >
    > > if ((rq->nr_sectors << 9) & (sector_size - 1) ||
    > > (rq->sector & ((sector_size >> 9) - 1)))
    > > problem
    >
    > I'll change that.

    If you do that please remember to revert this chunk
    (except comment fix of course):

    @@ -1969,9 +1959,13 @@ static ide_startstop_t cdrom_start_write

    info->nsectors_buffered = 0;

    - /* use dma, if possible. we don't need to check more, since we
    - * know that the transfer is always (at least!) 2KB aligned */
    - info->dma = drive->using_dma ? 1 : 0;
    + /* use dma, if possible */
    + if (drive->using_dma && (rq->sector % sectors_per_frame == 0) &&
    + (rq->nr_sectors % sectors_per_frame == 0))
    + info->dma = 1;
    + else
    + info->dma = 0;
    +

    > > > - set_capacity(drive->disk, toc->capacity * SECTORS_PER_FRAME);
    > > > + set_capacity(drive->disk, toc->capacity * sectors_per_frame);
    > > > +
    > > > + if (CDROM_STATE_FLAGS(drive)->sectors_per_frame != sectors_per_frame)
    > > > + printk(KERN_INFO "%s: new hardware sector size %lu\n",
    > > > + drive->name, sectors_per_frame << 9);
    > >
    > > if you feel you must print this, then do it in the same line as the
    > > other cdrom info printed.
    >
    > This happens on disc change, no other info is normally printed. But this
    > printk can probably go away, I just put it there for debugging.

    Good.

    Cheers,
    --bart

    -
    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:00    [W:0.023 / U:1.232 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site