Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 06 Nov 2001 14:38:58 -0800 (PST)
From:      John Baldwin <jhb@FreeBSD.org>
To:        John Baldwin <jhb@FreeBSD.org>
Cc:        cvs-all@FreeBSD.org, cvs-committers@FreeBSD.org
Subject:   RE: cvs commit: src/lib/libstand cd9660.c
Message-ID:  <XFMail.011106143858.jhb@FreeBSD.org>
In-Reply-To: <200111062231.fA6MVAd14777@freefall.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On 06-Nov-01 John Baldwin wrote:
> jhb         2001/11/06 14:31:10 PST
> 
>   Modified files:
>     lib/libstand         cd9660.c 
>   Log:
>   - Change the f_isdir field of struct file to be a flags field and two
>     new flags: F_ROOTDIR and F_RR (Rock Ridge present).
>   - Cache the SUSP LEN_SKP parameter in struct file as well.
>   - If we open() '/', then force a read of the directory's contents so we
>     can examine the directory record of '.' to see if Rock Ridge is present.
>   - If Rock Ridge extensions are present, lookup Rock Ridge names in
>     readdir().

At this point no emulation CD booting should be fairly usable and useful.  The
one thing I haven't actually tested yet is booting a kernel off of the CD. 
Right now the RB_CDROM is being set wrong.  It should probably only be set if
rootdev is cd0, but for now it is always turned on if we boot from cdboot.  (I
think MFS roots as used in installation will override RB_CDROM though.)  With
this directory listings look pretty:

FreeBSD/i386 bootstrap loader, Revision 1.0
(john@laptop.baldwin.cx, Sat Nov  3 16:19:24 PST 2001)
Loading /boot/defaults/loader.conf 
Unable to load kernel:
Aborted!
\
can't load 'kernel'

Type '?' for a list of commands, 'help' for more detailed help.
ok ls
/
 d  boot
    boot.catalog
ok ls -l /boot
/boot
       1168 cdboot
 d     2048 defaults
     163840 loader
       9237 loader.4th
         38 loader.conf
      12064 loader.help
        362 loader.rc
      25121 support.4th
ok 

I haven't added Rock Ridge support to cd9660_stat() for 2 reasons: 1) we would
need to cache the LBA and offset of our directory record in struct file.  Not
too terribly difficult, but 2) the only consumer of stat() (ls) only uses size
anyways, so there's not much point as the info would be unused.  The only other
feature I'm thinking of possibly adding now is having the bioscd driver in the
loader use the BIOS to lock the CD in when at least one file is open on the
volume.  This won't work that well if we keep the file associated with currdev
open while we are idle though (not sure yet if we do that).  Comments?

Oh, and once I can test and commit some bits to split the mfsroot out of the
kernel for boot.flp (works on i386, still need to test on alpha, but it should
work w/o a problem), I plan to at least develop patches so we can use cdboot
instead of boot.flp for CD's.  Then I'll probably put a test ISO up for people
to try out and see how it works before we cut over to using cdboot by default.

-- 

John Baldwin <jhb@FreeBSD.org> -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.baldwin.cx/~john/pgpkey.asc
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.011106143858.jhb>