*
* Documentation/filesystems/udf.txt
*
UDF Filesystem version 0.9.8.1

If you encounter problems with reading UDF discs using this driver,
please report them to linux_udf@hpesjro.fc.hp.com, which is the
developer's list.

Write support requires a block driver which supports writing. The current
scsi and ide cdrom drivers do not support writing.

-------------------------------------------------------------------------------
The following mount options are supported:

	gid=		Set the default group.
	umask=		Set the default umask.
	uid=		Set the default user.
	bs=		Set the block size.
	unhide		Show otherwise hidden files.
	undelete	Show deleted files in lists.
	adinicb		Embed data in the inode (default)
	noadinicb	Don't embed data in the inode
	shortad		Use short ad's
	longad		Use long ad's (default)
	nostrict	Unset strict conformance
	iocharset=	Set the NLS character set

The uid= and gid= options need a bit more explaining.  They will accept a
decimal numeric value which will be used as the default ID for that mount.
They will also accept the string "ignore" and "forget".  For files on the disk
that are owned by nobody ( -1 ), they will instead look as if they are owned
by the default ID.  The ignore option causes the default ID to override all
IDs on the disk, not just -1.  The forget option causes all IDs to be written
to disk as -1, so when the media is later remounted, they will appear to be
owned by whatever default ID it is mounted with at that time.

For typical desktop use of removable media, you should set the ID to that
of the interactively logged on user, and also specify both the forget and
ignore options.  This way the interactive user will always see the files
on the disk as belonging to him.

The remaining are for debugging and disaster recovery:

	novrs		Skip volume sequence recognition 

The following expect a offset from 0.

	session=	Set the CDROM session (default= last session)
	anchor=		Override standard anchor location. (default= 256)
	volume=		Override the VolumeDesc location. (unused)
	partition=	Override the PartitionDesc location. (unused)
	lastblock=	Set the last block of the filesystem/

The following expect a offset from the partition root.

	fileset=	Override the fileset block location. (unused)
	rootdir=	Override the root directory location. (unused)
			WARNING: overriding the rootdir to a non-directory may
				yield highly unpredictable results.
-------------------------------------------------------------------------------


For the latest version and toolset see:
	http://linux-udf.sourceforge.net/

Documentation on UDF and ECMA 167 is available FREE from:
	http://www.osta.org/
	http://www.ecma-international.org/

Ben Fennema <bfennema@falcon.csc.calpoly.edu>
