Generic flash filesystem
||You must be root to start this driver.|
[-a] [-b priority] [-c]
[-E] [-f verifylevel] [-i arrayindex[,partindex]]
[-l] [-m mountover[,cmpover]]
[-p backgroundpercent[,superlimit]] [-r]
[-t threads] [-u update] [-V] [-v]
Most flash devices
- Don't automount filesystem partitions present on the media.
- -b priority
- Enable background reclaim at the specified priority.
By default, background reclamation is disabled.
- Disable compressed mountpoints.
||The -c option is for use with flash filesystem version 2
- Do not daemonize. Exit on EBADFSYS with partition num + 1 of corrupt
- -f verifylevel
- Enable flash verify. (default=0, 0=none, write=1, erase=2, all=3)
- -i arrayindex[,partindex]
- Starting socket index and first partition index;
0 >= index >=15. The default is 0,0.
Use this to give multiple drivers unique IDs.
The -i option is just a suggestion for the resource
database manager; the selected indexes can be larger.
- List the available flash databases and exit.
- -m mountover[,cmpover]
- Override the mountpoints assigned to the file system that are formatted
with an empty (i.e. flashctl -p/dev/fs0p0 -f -n "") mountpoint. The mountover
argument can include two
%X format specifiers (like those for printf())
that are replaced by the socket index and the partition index.
The cmpover argument can include two %X
specifiers, or one %s format specifier that's replaced
by the formatted mountover.
||The cmpover argument is only available to use
with flash filesystem version 2 (ffs2).
The default is /fs%Xp%X,%s/.cmp.
|| The -m option doesn't override a mountpoint specified with
- -p backgroundpercent[,superlimit]
- Set the background-reclaim percentage trigger (stale space over free
space) and, optionally, the superseded extent limit before reclaim.
The default is 100,16.
- Enable fault recovery for dirty extents, dangling extents, and
partial reclaims. By default, recovery isn't performed, which,
when power faults are likely,
can waste space on the media or make the media read-only.
- -s baseaddress[,widthsize[,arrayoffset[,arraysize[,unitsize[,buswidth[,interleave]]]]]
- Set socket options, normally the base physical address, window size,
array offset, array size, unit size, bus width, and interleave. The format is left flexible
for socket services with customized drivers. This option must be specified.
You can specify the base physical address, sizes, and offset
in octal (1000), hexadecimal (0x200), or
The sizes must be a power of two, and you can specify them with any of
the following suffixes:
- (nothing) -- bytes
- k -- kilobytes
- m -- megabytes
- -t threads
- Number of threads;
1 >= threads >= 4
(default is 2). Extra threads increase performance when
background reclaim is enabled (with the -b option) and
when multiple chips and/or spare blocks are available.
- -u update
- Update level for timestamps; 0 for never update,
1 to update files only, and 2 to update files
and directories. The default update is 0.
- Display filesystem and MTD version information.
- Display verbose information.
- -w buffersize
- Write (append) buffer size in bytes. The default
buffersize is 512. Using a larger write-buffer
prevents the creation of very small extents, reducing overhead.
If buffersize is 0, appending is disabled.
The devf-generic manager provides Flash filesystem
support for any standard flash device. Typically, all you need to do is to pass
the address and size using the -s option. The manager should detect the
The following default filenames (the ID, n, appended to /dev/fs
can be changed via the -i option):
- Default mountpoint for socket n.
- Raw access for socket n, partition 0.
- Flash filesystem mountpoint for socket n, partition 0 with
- Flash filesystem mountpoint for socket n, partition 0
without transparent decompression (only previously compressed files
are available here).
You can specify the mountpoint above with the
mount attribute of the
command, and override it with the
-n option to
By default, it's /fsnp0.
||If you erase a raw partition or the raw array (socket),
you might erase any boot monitor,
BIOS, or other data installed by the manufacturer.
Check the documentation for the board.|
The driver probes the hardware to determine its block size.
If you need to know the block size, you can:
- Look in the documentation for the hardware.
- Start the driver in verbose mode by specifying the -v option.
In the output, U: indicates the number of units (i.e. blocks),
and S: indicates the block size.
Both numbers are in hexadecimal.
- Start the driver, and then run
specifying the -i option.
Start devf-generic and automatically mount the flash filesystem
partitions at the base address 0xFF000 with a window size of 16 megabytes,
with an initial fault recovery process, most POSIX semantics
enabled and background reclaim at priority 5:
devf-generic -s 0xFF000,16M -r -u2 -b5 &
You must specify the -s option when using this driver.
Although the Flash filesystem supports most POSIX semantics, some
functionality isn't implemented in order to keep the driver simple and
efficient. The unsupported POSIX semantics include:
- Hard links, and everything related to hard links (the
. and .. directories don't exist,
struct stat's nlink member is hard-coded,
of directories returns ENOTSUP).
- Access times aren't updated on the media; they're set to
the modification time.
QNX Neutrino flash filesystem version 3 no longer
provides built-in decompression.
The flash filesystem's decompression functionality has moved into the
resource manager. You should now use the deflate utility
to compress files.
Performance might be slow when multiple writers are writing randomly
to a shared file or to a shared directory (e.g. using unlink or
In these cases,
the offset pointers have to be rewound for every access.
There's no performance penalty when appending to a file, or when
creating files with open(O_CREAT),
mkdir, mknod, or link.
in the Working With Filesystems chapter of the User's Guide