All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jens Axboe <axboe@suse.de>
To: Pascal Schmidt <der.eremit@email.de>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] make ide-cd handle non-2kB sector sizes
Date: Fri, 23 Jan 2004 10:35:25 +0100	[thread overview]
Message-ID: <20040123093525.GP2734@suse.de> (raw)
In-Reply-To: <Pine.LNX.4.44.0401222014390.1296-100000@neptune.local>

On Thu, Jan 22 2004, Pascal Schmidt wrote:
> 
> Hello Jens,
> 
> as I suspected, ide-cd doesn't want to play with my 512 byte sector
> MO discs. You asked me whether I could cook up a patch to support
> different hardware sector sizes, and here it is.
> 
> I've tested it with a 230 MB MO disc, which uses 512 byte sectors.
> I filled the whole disk, then ejected - reinsert - fsck - read and
> compare. Everything worked without problems. Then I inserted a
> 640 MB MO disc, which uses 2048 byte sectors, and went through the
> same procedure. No problems either, so switching between different
> sector sizes appears to work.
> 
> I've also tested with DVDs and CD-ROMs, which continue to work like
> before the patch.
> 
> Without this patch, I only get tons of I/O errors when trying to read
> or write the 512 byte sector disc.
> 
> Please check the logic of my changes.

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.

>  static ide_startstop_t cdrom_start_write(ide_drive_t *drive, struct request *rq)
>  {
>  	struct cdrom_info *info = drive->driver_data;
> +	byte sectors_per_frame = CDROM_STATE_FLAGS(drive)->sectors_per_frame;
>  
>  	/*
> -	 * writes *must* be 2kB frame aligned
> +	 * writes *must* be 2kB frame aligned if not MO
>  	 */
> -	if ((rq->nr_sectors & 3) || (rq->sector & 3)) {
> -		cdrom_end_request(drive, 0);
> -		return ide_stopped;
> -	}
> +	if (!CDROM_CONFIG_FLAGS(drive)->mo_drive)
> +		if ((rq->nr_sectors & 3) || (rq->sector & 3)) {
> +			cdrom_end_request(drive, 0);
> +			return ide_stopped;
> +		}

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

> -	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.

-- 
Jens Axboe


  reply	other threads:[~2004-01-23  9:35 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-01-22 19:23 [PATCH] make ide-cd handle non-2kB sector sizes Pascal Schmidt
2004-01-23  9:35 ` Jens Axboe [this message]
2004-01-23 14:01   ` Pascal Schmidt
2004-01-23 15:24     ` Bartlomiej Zolnierkiewicz
2004-01-23 16:18       ` Jens Axboe
2004-01-23 17:37         ` Pascal Schmidt
2004-01-23 18:50         ` Pascal Schmidt
2004-01-23 23:29           ` Pascal Schmidt
2004-01-23 23:50             ` Bartlomiej Zolnierkiewicz
2004-01-24  0:06               ` Pascal Schmidt
2004-01-24  0:57               ` Pascal Schmidt
2004-01-23 17:36       ` Pascal Schmidt
2004-01-23 15:12 ` Bartlomiej Zolnierkiewicz
2004-01-23 18:58 ` Maciej W. Rozycki
2004-01-23 19:04   ` Pascal Schmidt
2004-01-23 19:17     ` Maciej W. Rozycki
2004-01-23 19:56       ` Pascal Schmidt
2004-01-23 22:10         ` Maciej W. Rozycki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20040123093525.GP2734@suse.de \
    --to=axboe@suse.de \
    --cc=der.eremit@email.de \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.