9front - general discussion about 9front
 help / color / mirror / Atom feed
From: Arne Meyer <meyer.arne83@netcologne.de>
To: 9front@9front.org
Subject: Re: [9front] [patch] cdfs handle block sizes correctly
Date: Sun, 2 Oct 2022 20:56:38 +0200 (CEST)	[thread overview]
Message-ID: <1993373294.3416290.1664736998610@comcenter.netcologne.de> (raw)
In-Reply-To: <63930A6D48F026FB3A6DAA769914CA81@eigenstate.org>

[-- Attachment #1: Type: text/plain, Size: 1513 bytes --]

The old Readblock value is fine for data tracks, because 4 2048 byte blocks fit in the 8192 byte RPCMAX. But cdda blocks are 2352 bytes and 4 of those don't fit into 8192 bytes and stuff breaks. If I read the code correctly my change should set the number of blocks to 4 for data tracks and to 3 for everything else.

I've attached the patch to this mail to preserve whitespace.

> ori@eigenstate.org hat am 01.10.2022 21:20 GMT geschrieben:
> 
>  
> Quoth Arne Meyer <meyer.arne83@netcologne.de>:
> > The Readblock enum does not work when you try to read audio cds.  4
> > cdda blocks are lager than 8192 and the command fails (at least when
> > using an usb cd drive).  This sets the block count according to the
> > track block size.  With this and the fix for libdisk I can rip audio
> > cds on my el cheapo usb dvd drive.  Tested with "Midnight Oil - Blue
> > Sky Mining"
> > Greetings,
> > Arne
> 
> 
> > 
> >  typedef struct Buf Buf;
> > --- a/sys/src/cmd/cdfs/mmc.c
> > +++ b/sys/src/cmd/cdfs/mmc.c
> > @@ -1171,7 +1171,7 @@
> >         o->track = &drive->track[trackno];
> >         o->nchange = drive->nchange;
> >         o->omode = OREAD;
> > -       o->buf = bopen(mmcread, OREAD, o->track->bs, Readblock);
> > +       o->buf = bopen(mmcread, OREAD, o->track->bs, Maxrpc/o->track->bs);
> 
> these changes smell funny to me; if the block size is larger than Maxrpc, we
> set nblock to 0. Looking at bread in buf.c, it seems like we'd simplly end up
> trying to read 0 bytes out of these large buffers.

[-- Attachment #2: cdfs.patch --]
[-- Type: application/octet-stream, Size: 1245 bytes --]

diff e938acc8ff64a3cbbd6ef7ba88f83e3f03ede681 uncommitted
--- a/sys/src/cmd/cdfs/dat.h
+++ b/sys/src/cmd/cdfs/dat.h
@@ -133,10 +133,11 @@
 	DVDNblock = 16,		/* DVD ECC block is 16 sectors */
 	BDNblock = 32,		/* BD ECC block (`cluster') is 32 sectors */
 	/*
-	 * make a single transfer fit in a 9P rpc.  if we don't do this,
-	 * remote access (e.g., via /mnt/term/dev/sd*) fails mysteriously.
+	 * number of blocks read/written must fit in this. if we don't do this,
+	 * remote access (e.g., via /mnt/term/dev/sd* or nusb/disk) fails mysteriously.
+	 * see /sys/src/9/port/devmnt.c MAXRPC.
 	 */
-	Readblock = 8192/BScdrom,
+	Maxrpc = 8192,
 };
 
 typedef struct Buf Buf;
--- a/sys/src/cmd/cdfs/mmc.c
+++ b/sys/src/cmd/cdfs/mmc.c
@@ -1171,7 +1171,7 @@
 	o->track = &drive->track[trackno];
 	o->nchange = drive->nchange;
 	o->omode = OREAD;
-	o->buf = bopen(mmcread, OREAD, o->track->bs, Readblock);
+	o->buf = bopen(mmcread, OREAD, o->track->bs, Maxrpc/o->track->bs);
 	o->buf->otrack = o;
 
 	aux->nropen++;
@@ -1395,7 +1395,7 @@
 	o->nchange = drive->nchange;
 	o->omode = OWRITE;
 	o->track = t;
-	o->buf = bopen(mmcwrite, OWRITE, bs, Readblock);
+	o->buf = bopen(mmcwrite, OWRITE, bs, Maxrpc/bs);
 	o->buf->otrack = o;
 
 	aux->nwopen++;

  reply	other threads:[~2022-10-02 18:58 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-01 10:34 Arne Meyer
2022-10-01 21:20 ` ori
2022-10-02 18:56   ` Arne Meyer [this message]
2022-10-02 20:04     ` ori
2022-10-22 16:20       ` Arne Meyer
2022-10-22 18:43         ` ori

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=1993373294.3416290.1664736998610@comcenter.netcologne.de \
    --to=meyer.arne83@netcologne.de \
    --cc=9front@9front.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).