115 lines
4.8 KiB
Groff
115 lines
4.8 KiB
Groff
PCFS quirks file $Id: pcfs.5,v 1.2 1993/08/02 17:51:42 mycroft Exp $
|
|
|
|
PCFS filesystems on floppy disks only are supported in this release.
|
|
And, only high density floppy disks are supported. This is because
|
|
the floppy disk driver only supports high density disks.
|
|
|
|
Created files use only the user permissions bits. And of these
|
|
only the write bit is meaningful. DOS files always have the
|
|
execute and read bits on.
|
|
|
|
PCFS does not turn on or off the DOS archive attribute bit.
|
|
|
|
The timestamp on dos files is updated when ever the file is modified.
|
|
There is no inode time or create time stamp.
|
|
|
|
The timestamp placed on a dos file does not have corrections for
|
|
daylight savings time included. It does have the correction for
|
|
timezone though.
|
|
|
|
Unix times before 1980 will have their year set to 1980 in dos file
|
|
timestamps. This is because dos's idea of time starts in 1980.
|
|
|
|
PCFS filesystems do not support sparse files. Any attempt to seek
|
|
past the end of a file results in the blocks being allocated and
|
|
cleared.
|
|
|
|
When read() is used to examine pcfs directories you will get dos
|
|
directory contents. Note that the root directory does not contain
|
|
a "." or ".." entry. Only the readdir() system call simulates these
|
|
entries in the root directory of a dos filesystem. readdir() returns
|
|
directory entries as described in getdirentries(2).
|
|
|
|
Using read() and write() to manipulate the contents of dos directories
|
|
is unwise on an active dos filesystem since a more up to date copy of
|
|
their contents may reside in data structures in the kernel. It is
|
|
probably safe to examine the filename field of dos directory entries.
|
|
The filesystem code keeps this up to date at all times.
|
|
|
|
The cluster allocation algorithm is very simplistic. It starts at
|
|
cluster 2 and searchs until the last cluster of the filesystem and
|
|
takes the first available cluster.
|
|
|
|
The fsync() system call does not work on file descriptors open on
|
|
directories. This isn't a terrible thing since very few programs
|
|
open directories for writing.
|
|
|
|
The pcfs filesystem truncates filenames quietly. If a filename has
|
|
more than 8 characters before the 1st period only the 1st eigth are
|
|
used. It only uses the 1st three characters after the period if
|
|
they exist. The filenames "abc" and "abc." are the same to pcfs.
|
|
Filenames that begin with a "." are considered to be dos filenames
|
|
with an extension only and so are limited to 3 characters after the
|
|
leading ".". For example ".imlost" would be seen as ".iml" by pcfs.
|
|
PCFS folds filenames to upper case before writing them to disk or
|
|
looking up filenames, and folds them to lower case when reading them
|
|
from disk for presentation to the user (for example by readdir()).
|
|
|
|
Directory entries for the DOS filesystem label are quietly ignored.
|
|
|
|
This is probably going to be a problem. This implementation expects
|
|
the length of the root directory to be a multiple of the size of
|
|
a cluster. If this is not true a warning message is printed when
|
|
the filesystem is mounted.
|
|
|
|
PCFS supports DOS filesystems with 12 bit or 16 bit FATs. It supports
|
|
both regular and huge filesystems ( > 32 megabytes). It supports
|
|
both version 3.3 and 5.0 BPB's. Don't know about version 4.x and
|
|
less than 3.3. It has not been tested with 16 bit fats or huge
|
|
filesystems. This is because the hard disk drivers need to support
|
|
dos partitions to do these things.
|
|
|
|
PCFS does not support symbolic links or hard links. It does not
|
|
support quotas. How could it, pcfs files have no owners. PCFS
|
|
files have a simulated owner and group of 0. PCFS does not support
|
|
file locking. Though it may in the future. PCFS filesystems are
|
|
not remote mountable, but they will be in the future.
|
|
|
|
This is the first release and as such has performance problems.
|
|
Reading large files is very slow because the read ahead code in pcfs_read()
|
|
doesn't read far enough ahead for filesystems with small blocksizes.
|
|
Performance and dos hard disk paritions are the next areas to be
|
|
worked on. Unless someone else does it.
|
|
|
|
|
|
Operational Details
|
|
-------------------
|
|
|
|
To mount a pcfs filesystem:
|
|
mount -t pcfs /dev/fd0a /mnt
|
|
|
|
To unmount a pcfs filesystem:
|
|
umount /mnt
|
|
|
|
If you want to be sure the fat is ALWAYS up to date, mount the
|
|
filesystem with the synchronous option:
|
|
mount -t pcfs -o synchronous /dev/fd0a /mnt
|
|
This reasults in very slow file write performance because it turns
|
|
off write behind of fst disk blocks.
|
|
|
|
|
|
Configuring PCFS into your kernel
|
|
---------------------------------
|
|
|
|
Add the following statements to your configuration file in /sys/i386/conf/BLOT.
|
|
Or whatever you call your config file.
|
|
|
|
options PCFS
|
|
|
|
PCFS consumes approximately 24000 bytes of kernel code space and
|
|
approximately 4000 bytes of bss.
|
|
|
|
PCFS has some debug printf's that can be turned on by defining PCFSDEBUG.
|
|
It produces lots of output. If you use it be sure to kill syslogd before
|
|
using a PCFS filesystem with debug.
|