[RFC] mount can figure out fstype automatically

Ceri Davies ceri at submonkey.net
Tue Jul 11 13:27:58 UTC 2006


On Tue, Jul 11, 2006 at 12:45:18PM +0100, Robert Watson wrote:
> 
> On Mon, 10 Jul 2006, Christoph Hellwig wrote:
> 
> >On Mon, Jul 10, 2006 at 01:06:02PM -0600, Scott Long wrote:
> >>So in your opinion and experience, what are the pros and cons of 
> >>maintaining a table of magic numbers?
> >
> >The feature is imensely useful.  The implementation won't win any points 
> >for a clean design but works very well in practice.  I think it's 
> >definitly better than probing in the kernel because letting a filesystem 
> >driver try to make sense of something that's not it's own format can lead 
> >to all kinds of funnies.  Linux does this (iterating all filesystem types 
> >in kernel) for the special case of the root filesystem where mount(8) is 
> >not available, and it showeds various interesting bugs at least in the fat 
> >driver.
> 
> In both FreeBSD and Darwin, I've noticed that the kernel msdosfs code is 
> excessively permissive as to what it considers a FAT file system.  This is 
> presumably necessary due to the enourmous diversity of FAT file systems 
> floating around, but it makes it a little too easy to cause msdos to trip 
> over layouts that violate its layout assumptions. :-)  FAT is much more 
> reliably detected by looking at the partition type it lives in than by 
> looking at the bytes that appear inside the partition, I believe.

Assuming that there is a valid partition type.  I don't really know what
this makes, but there's a valid FAT filesystem on it:

% truncate -s 1440k floppy
% sudo mdconfig -a -f floppy 
md1
% sudo newfs_msdos -f 1440 /dev/md1
/dev/md1: 2847 sectors in 2847 FAT12 clusters (512 bytes/cluster)
bps=512 spc=1 res=1 nft=2 rde=224 sec=2880 mid=0xf0 spf=9 spt=18 hds=2 hid=0
% sudo mount -t msdos /dev/md1 /mnt
% df -h /mnt
Filesystem    Size    Used   Avail Capacity  Mounted on
/dev/md1      1.4M    1.0K    1.4M     0%    /mnt
{ceri at shrike}-{~} % fdisk /dev/md1
******* Working on device /dev/md1 *******
parameters extracted from in-core disklabel are:
cylinders=0 heads=255 sectors/track=63 (16065 blks/cyl)

parameters to be used for BIOS calculations are:
cylinders=0 heads=255 sectors/track=63 (16065 blks/cyl)

Media sector size is 512
Warning: BIOS sector numbering starts with sector 1
Information from DOS bootblock is:
The data for partition 1 is:
<UNUSED>
The data for partition 2 is:
<UNUSED>
The data for partition 3 is:
<UNUSED>
The data for partition 4 is:
<UNUSED>

Ceri
-- 
That must be wonderful!  I don't understand it at all.
                                                  -- Moliere
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-current/attachments/20060711/7c3bdc3f/attachment.pgp


More information about the freebsd-current mailing list