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
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:58 UTC