filesystem: VMUFAT filesystem
RFC PATCH 1/1 filesystem: VMUFAT filesystem
(Already posted to lkml)
The SEGA Dreamcast visual memory unit implements a file allocation table based filesystem which is somewhat similar to FAT16. This filesystem code implements that filesystem and I have used it to successfully manage Dreamcast VMUs and VMU images mounted via loop.
You can read more about the filesystem here:
http://mc.pp.se/dc/vms/flashmem.html
I intend to fully document the filesystem and write an appropriate user tool to create a drive image, but in the meantime here is an early cut of the filesystem itself for comment.
(A version of this for the 2.4 kernel existed in the Dreamcast CVS on Sourceforge but wasn't truly hardware independent).
fs/Kconfig | 1 + fs/Makefile | 1 + fs/vmufat/Kconfig | 14 + fs/vmufat/Makefile | 7 + fs/vmufat/inode.c | 702 ++++++++++++++++++++++++++++++++++++++++++++++++++++ fs/vmufat/super.c | 533 +++++++++++++++++++++++++++++++++++++++ fs/vmufat/vmufat.h | 58 +++++
---
fs/Kconfig +1 -0
@@ -222,6 +222,7 @@ source "fs/qnx4/Kconfig" source "fs/romfs/Kconfig" source "fs/sysv/Kconfig" source "fs/ufs/Kconfig" +source "fs/vmufat/Kconfig" endif # MISC_FILESYSTEMS
fs/Makefile +1 -0
@@ -122,3 +122,4 @@ obj-$(CONFIG_DEBUG_FS) += debugfs/ obj-$(CONFIG_OCFS2_FS) += ocfs2/ obj-$(CONFIG_BTRFS_FS) += btrfs/ obj-$(CONFIG_GFS2_FS) += gfs2/ +obj-$(CONFIG_VMUFAT_FS) += vmufat/
fs/vmufat/Kconfig new file +14 -0
@@ -0,0 +1,14 @@ +config VMUFAT_FS + tristate "Dreamcast VMU FAT filesystem" + depends on BLOCK + help + This implements the simple FAT type filesystem found on SEGA + Dreamcast visual memory units. + + Dreamcast users who want to mount their VMUs to view the native + filesystem will say 'Y' here. The filesystem is hardware independent + but is not recommended for any serious use in other circumstances, so + just about everyone else should say 'N'. + + To compile this as a module say 'M' here. The module will be called + vmufat
fs/vmufat/Makefile new file +7 -0
@@ -0,0 +1,7 @@ +# +# Makefile for VMUFAT filesystem +# + +obj-$(CONFIG_VMUFAT_FS) += vmufat.o + +vmufat-objs := super.o inode.o
fs/vmufat/inode.c new file +680 -0
680 lines not on this page · raw message
fs/vmufat/super.c new file +518 -0
518 lines not on this page · raw message
fs/vmufat/vmufat.h new file +57 -0
57 lines not on this page · raw message