From: Charles Mason <mason@csit.fsu.edu>
To: zippel@linux-m68k.org, linux-kernel@vger.kernel.org
Subject: HFS bug
Date: Wed, 12 Nov 2003 14:26:28 -0500 [thread overview]
Message-ID: <20031112192627.GA3331@imap.csit.fsu.edu> (raw)
This may or may not be a bug, but I figured that sending out the message
would do better good than not sending one out at all:
when I run the command:
# mount -t hfs /dev/scd0 /mnt/cdrom
The kernel gives an Oops that traces back to line buffer.c:2555 (kernel
version 2.4.23-pre1). I'd attach the Oops output, but I'm on a remote
machine now.
The BUG() macro is called because the block size requested to be read by
HFS (512 bytes) is not the same as the hardware block size set by the
SCSI drivers (2048 by default). grow_buffers() wants whatever called it
to request a blocksize that is a multiple of get_hardsect_size().
I would have bothered myself to write a fix, since I firmly believe that
a CD could have an HFS filesystem, but the kernel code has grown so
complex that writing the code to perform the reads correctly would be
difficult.
My idea was to change buffer.c:2555 to just modify the requested block
size to fit the hardware block size, then return an offset into a buffer
where that requested (sub)block is. For example, if you're requesting
512 bytes but the hardsect size is 2048. Read a 2048 block, and offset
the buffer to (block_no % 4) * 512. This may have worked, but it could
possibly have been slow too.
By the way, the offending code is the hfs/super.c:hfs_read_super() that
traces to hfs/sysdep.c:hfs_buffer_get() which calls sb_bread() and
further then to buffer.c:grow_buffers(). hfs_read_super() sets
mdb->s_blocksize to 512. sb_bread will use the hardsect_size set by the
SCSI driver (drivers/scsi/sr.c:sr_init()).
Alas, if this information helps out, let me know -- I'm not on any
kernel mailing list. Further information about my system is attached.
Sincerely,
Charles Mason
mason@csit.fsu.edu
Kernel: Linux 2.4.23-pre1 (generally tained with the nvidia module)
Hardware: AMD XP 2500+ / 1GB RAM / nVidia mainboard/chipset
Distribution: Debian unstable
next reply other threads:[~2003-11-12 19:26 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-11-12 19:26 Charles Mason [this message]
2003-11-12 20:32 James Pearson
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=20031112192627.GA3331@imap.csit.fsu.edu \
--to=mason@csit.fsu.edu \
--cc=linux-kernel@vger.kernel.org \
--cc=zippel@linux-m68k.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
Powered by JetHome