wiki:UDF

Version 10 (modified by Julia Medvedeva, 12 years ago) ( diff )

UDF file system server

1 Current status

FS type Reading Writing
UDF Plain+-
DVD Video+N/A
Blu-Ray Video+N/A

2 TODO plan

  • Implement initial writing support for UDF plain disks (in progress)

3 How to test

3.1 Download sources from my branch

bzr branch lp:~medvedeva-julia/helenos/udf helenos

3.2 Compile sources

cd helenos
make PROFILE=ia32

3.3 Create UDF disk image under Linux

To create UDF image under Linux you need to install package with UDF utilities. For example in Arch it's udftools. The package should contain the mkudffs tool.

mkudffs --media-type=hd --blocksize=512 --utf8 ./udf.img

You can also select media type: "hd" or "dvd" and blocksize: 512 or 2048 or something else.

Unless you are overwriting already existing image, you need to create an empty file first (otherwise you would get the trying to change type of multiple extents error). Following creates a 32M file:

dd if=/dev/zero of=./udf.img bs=4096 count=8192

3.4 Mount udf disk image under Linux

You can mount the UDF image (from step 3.3) under your Linux host and copy several files into it.

mount -o loop -t udf ./udf.img /mnt/udf-mount-point

where udf.img is the image from step 3.3

3.5 Boot HelenOS with user disk image

To boot HelenOS run QEMU:

qemu-system-i386 -m 512 -boot d -hda udf.img -cdrom image.iso

udf.img is the UDF disk image

3.6 Mount user disk image under HelenOS

In HelenOS run a batch script to run UDF server, ATA server and mount the first ATA disk as UDF.

batch u

Then, go to the /mnt directory:

cd /mnt

and here you are :)

4 Read functions dashboard

VFS method Task Implementation File Progress TODO and comments
mounted check volume recognition sequence udf_volume_recongnition udf_volume done
search for anchor volume descriptor udf_get_anchor_volume_descriptor udf_volume done
read volume descriptor sequence udf_read_volume_descriptor_sequence udf_volume done
data structure for saving information about item (file or dir) udf_node_t udf.h done
hash table for udf_node saving udf_idx_ udf_idx done udf_idx_hash too simple
ckecksum functions entire file udf_cksum done
osta unicode compression entire file udf_osta done
mount udf disk udf_mounted udf_ops done
node_get get, put and reading udf_node udf_node_get udf_ops done
read read icb sequence by index udf_node_get_core udf_file done
read file entry descriptor from icb udf_read_icb udf_file done
read allocation sequence from file entry descriptor udf_read_allocation_sequence udf_file done read allocator for next sequence
sorting of allocators udf_allocator_sort udf_file done too simple
read file by position udf_read_file udf_ops done read file saved in allocator
read directory udf_get_fid udf_ops in progress rewrite for fragmented fid
root_get get root directory udf_root_get udf_ops done
match search fid in directory by name udf_match udf_ops done
node_put delete node udf_node_put udf_ops in progress
index_get get index of node udf_index_get udf_ops done
has_children return true if a directory contains elements udf_has_children udf_ops in progress
size_get size of element (file or directory) udf_size_get udf_ops done
lnkcnt_get count links on node udf_lnkcnt_get udf_ops done
is_directory identify directory udf_is_directory udf_ops done
is_file identify file udf_is_file udf_ops done
service_get get service id udf_service_get udf_ops done

5 Unsupported functions dashboard

VFS method
node_open
create_node
destroy_node
link
unlink
sync
write
truncate
destroy
Note: See TracWiki for help on using the wiki.