Specification of the Umsdos file system for LINUX
What is UMSDOS
General strategy
File name mangling
#Specification: file name / non MSDOS conforming / mangling
#Specification: file name / non MSDOS conforming / mangling
#Specification: file name / MSDOS devices / mangling
#Specification: file name / --linux-.---
#Specification: file name / non MSDOS conforming / base length 0
#Specification: file name / non MSDOS conforming / mangling clash
#Specification: file name / non MSDOS conforming / last char == .
#Specification: file name / too long
--linux-.---: the EMD file
#Specification: EMD file / record size
#Specification: EMD file structure
#Specification: EMD file / empty entries
#Specification: strategy / in memory inode
#Specification: strategy / in memory inode
#Specification: EMD file / spare bytes
Hard links
#Specification: hard link / strategy
#Specification: hard link / directory
#Specification: hard link / hidden name
#Specification: hard link / first hard link
#Specification: hard link / deleting a link
Symbolic links
#Specification: symbolic links / strategy
Special file
#Specification: Special files / strategy
Pseudo root
#Specification: pseudo root / mount
#Specification: pseudo root / directory /DOS
#Specification: pseudo root / DOS hard coded
#Specification: pseudo root / .. in real root
#Specification: pseudo root / any file creation /DOS
#Specification: pseudo root / dir lookup
#Specification: pseudo root / DOS/..
#Specification: pseudo root / DOS/linux
#Specification: pseudo root / lookup(DOS)
#Specification: pseudo root / reading real root
#Specification: pseudo root / rmdir /DOS
Dual mode
#Specification: dual mode / introduction
#Specification: dual mode / rmdir in a DOS directory
#Specification: mkdir / umsdos directory / create EMD
Miscellaneous
- UMSDOS_create
#Specification: file creation / not atomic
#Specification: create / . and ..
- UMSDOS_ioctl_dir
#Specification: ioctl / acces
#Specification: ioctl / prototypes
#Specification: ioctl / UMSDOS_GETVERSION
#Specification: ioctl / UMSDOS_READDIR_DOS
#Specification: ioctl / UMSDOS_RMDIR_DOS
#Specification: ioctl / UMSDOS_STAT_DOS
#Specification: ioctl / UMSDOS_UNLINK_DOS
#Specification: ioctl / UMSDOS_CREAT_EMD
#Specification: ioctl / UMSDOS_READDIR_EMD
#Specification: ioctl / UMSDOS_UNLINK_EMD
#Specification: ioctl / UMSDOS_DOS_SETUP
#Specification: ioctl / UMSDOS_INIT_EMD
- UMSDOS_lookup
#Specification: locating .. / strategy
#Specification: umsdos / lookup
#Specification: umsdos / lookup / inode info
#Specification: umsdos / i_nlink
- UMSDOS_notify_change
#Specification: notify_change / msdos fs
#Specification: root inode / attributes
#Specification: notify_change / i_nlink > 0
- UMSDOS_readdir
#Specification: umsdos / readdir
#Specification: readdir / . and ..
#Specification: umsdos / readdir / not in MSDOS
- mount and UMSDOS_remount_fs
#Specification: mount / options
- UMSDOS_rename
#Specification: rename / new name exist
#Specification: rename / new name exist / possible flaw
- Data structure
#Specification: inode / umsdos info
- Inode management
#Specification: Inode / post initialisation
Synchronisation problems
#Specification: create / file exist in DOS
#Specification: mkdir / Directory already exist in DOS
Convention and style
#Specification: function name / convention
#Specification: style / iput strategy
#Specification: convention / PRINTK Printk and printk
Weakness and features
#Specification: weakness / hard link
#Specification: weakness / hard link / rename directory
#Specification: weakness / rename
utilities
- The UMSDOS synchroniser
#Specification: utility / synchroniser
#Specification: umssync / default creation mode
#Specification: umssync / depth
#Specification: umssync / mangled name
#Specification: umssync / mount point
#Specification: umssync / user mode
- Other
#Specification: utilities / udump
#Specification: umsdos_progs / udosctl
Test cases
- utstgen
#Specification: umsdos / automated test / general
#Specification: utstgen / hard link / cases / across directory boundary
#Specification: utstgen / hard link / cases / target does not exist
#Specification: utstgen / hard link / to a directory
#Specification: utstgen / hard links / case / link 2 link 2 link ...
#Specification: utstgen / multi task / basic test
#Specification: utstgen / Rename test
#Specification: utstgen / Rename test / open file
#Specification: utstgen / rename / destination exist
#Specification: utstgen / symbolic links / link 2 link 2 link ...
#Specification: utstgen / creating . and ..
#Specification: utstgen / removing a busy directory
- utstspc
#Specification: umsdos / automated test / specific
#Specification: utstspc / default environnement
#Specification: utstspc / floppy only
#Specification: utstspc / what's needed
#Specification: utstspc / hard link / cases / across directory boundary
#Specification: utstspc / hard link / cases / target does not exist
#Specification: utstspc / hard link / in a DOS directory
#Specification: utstspc / hard link / subdirectory of a dos directory
#Specification: utstspc / hard link / to a directory
#Specification: utstspc / hard links / case / link 2 link 2 link ...
#Specification: utstspc / read write
#Specification: utstspc / read write / text mode
The MsDOS fs
#Specification: msdos / strategy / special device / dummy blocks
#Specification: msdos / special devices / mmap
#Specification: msdos / special devices / swap file
#Specification: msdos / special device / writing