Date: Fri, 29 May 1998 12:36:46 -0700 From: Mike Smith <mike@smith.net.au> To: Joerg Schilling <schilling@fokus.gmd.de> Cc: mike@smith.net.au, freebsd-current@FreeBSD.ORG Subject: Re: cdrecord trouble on currnet Message-ID: <199805291936.MAA00596@dingo.cdrom.com> In-Reply-To: Your message of "Fri, 29 May 1998 19:03:23 %2B0200." <199805291703.TAA14897@sherwood.gmd.de>
next in thread | previous in thread | raw e-mail | index | archive | help
> >From mike@antipodes.cdrom.com Fri May 29 18:26:05 1998
>
> >> First some notes. You are discussing things related to cdrecord.
> >> If you like to see your effort back in the main stream cdrecord, this
> >> is definitely the wring mailing list.
>
> >It's a good place to deal with the specifics of making cdrecord work on =
>
> >FreeBSD though. It's certainly unlikely that Peter would have been =
>
> I see that this should be discussed on the FreeBSD list too, but if you like
> to get help from me, you could not get it from freebsd-current, I am not
> subscribed.
I understand that.
> >The FreeBSD Posix implementation is still under development, and the =
> >scheduler module is an optional addition (as allowed for under the =
> >spec.). Cdrecord doesn't make the required runtime check for the =
> >presence of the desired functionality.
>
> OK, but this is a new issue. It never has been nessecary before.
> If other operating systems will start to behave similar, it would make
> autoconfiguration a lot more complex.
I suggest you study IEEE Std1003.1-1988 and the definition of sysconf().
It certainly appears to me (and the FreeBSD Posix implementors) that
it's legitimate to define the various _SC_ constants without providing
the backing functionality.
If you have a differing interpretation, and some time to discuss it, I'm
quite certain that we would appreciate your input. I take your point
that the current state is somewhat unique, and likely to surprise an
implementor that's not expecting it. This is somewhat normal for
-current, which changes on a day-to-day basis.
> >> >> > Bus error (core dumped)
> >> =
> >> If you are not able to analyze the core with adb and send a usable
> >> bug description, I cannot help..
>
> >The bus error is (in my case at any rate) due to a buffer overrun =
> >elsewhere. I haven't been able to ascertain the cause of this yet, but =
> >there are indications that winding back the visible Posix interface =
> >resolves the issue.
>
> I am interested to find the reason for this core dump as it should not
> happen. Some versions of HP-UX have the definition for POSIX RR and do not
> implement it. On such HP_UX versions you usually get a warning about
> the non existence of RR scheduling and cdrecord then uses nice(2).
It's due to not checking the return value from the sysconf(_SC_PAGESIZE)
in fifo.c. Once you get past that, there's a timing failure between the
writer and reader processes due to a similar omission a little further
down the file.
Having dealt with these, I seem to be dummy-burning quite happily.
I'll cut a disc for real to be sure, and then send you my patches for
discussion.
> I am testing cdrecord on all systems I can get hold of in a way that allows
> testing to me (root access). As the SCSI implementations usually are not
> sufficient, development and testing is mainly done on Solaris.
We can almost certainly arrange that sort of access for you to a CAM
system, if you're interested.
> >We're not talking about "rubbish". We're talking about an
> >in-development implementation of the Posix environment.
>
> OK, I understand. BTW: I would be happy if the user interface of the new
> SCSI user transport calls would be easier to access and to understand.
> In other words:
>
> I like to have the device files be present by default so that
> programs like cdrecord onlu have to open the right file to get
> access to the device.
The CAM interface works like that:
sprintf(name, "cd%d", unit);
dev = cam_open_device(name, O_RDWR);
specifically, it takes care of working out where the device nodes are
and how to connect to the device. What you get back is a cam_device
structure referring to the device.
If you want to search on SCSI ID, that's a little trickier:
for (passno = 0; ; passno++) {
sprintf(name, "pass%d", passno);
if ((dev = cam_open_device(name, O_RDWR)) == NULL)
break;
if ((dev->path_id == bus) &&
(dev->target_id == target) &&
(dev->target_lun == lun))
break;
cam_close_device(dev);
}
The "pass" device attaches to everything, so you can use it if you want
to work this way around (ie. as cdrecord currently does).
> >It was. The real problems with scg have to do with the lack of visible
> >documentation. It is unclear how to do any sort of meaningful error
> >handling, or whether this should be managed at a lower level. Again,
> >this is an issue I was postponing until I had established that
> >everything else was going to behave and the interface had stabilised.
>
> OK, here is what I send to Sun some weeks ago:
Thanks for this. I will verify that I (believe I) am compliant with
this before I send you the changes.
--
\\ Sometimes you're ahead, \\ Mike Smith
\\ sometimes you're behind. \\ mike@smith.net.au
\\ The race is long, and in the \\ msmith@freebsd.org
\\ end it's only with yourself. \\ msmith@cdrom.com
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199805291936.MAA00596>
