aboutsummaryrefslogtreecommitdiffstats
path: root/fs/udf/udf_sb.h
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2008-04-08 14:37:21 -0400
committerJan Kara <jack@suse.cz>2008-04-17 08:29:36 -0400
commitbfb257a5981af805a9394f00f75d3d9f7b611cc0 (patch)
tree2f91577f4c2a706ece3553372c737daf05885375 /fs/udf/udf_sb.h
parentf4bcbbd92ebda971f7c2cd1132b399808ed6cf9b (diff)
udf: Add read-only support for 2.50 UDF media
This patch implements parsing of metadata partitions and reading of Metadata File thus allowing to read UDF 2.50 media. Error resilience is implemented through accessing the Metadata Mirror File in case the data the Metadata File cannot be read. The patch is based on the original patch by Sebastian Manciulea <manciuleas@yahoo.com> and Mircea Fedoreanu <mirceaf_spl@yahoo.com>. Signed-off-by: Sebastian Manciulea <manciuleas@yahoo.com> Signed-off-by: Mircea Fedoreanu <mirceaf_spl@yahoo.com> Signed-off-by: Jan Kara <jack@suse.cz>
Diffstat (limited to 'fs/udf/udf_sb.h')
-rw-r--r--fs/udf/udf_sb.h16
1 files changed, 15 insertions, 1 deletions
diff --git a/fs/udf/udf_sb.h b/fs/udf/udf_sb.h
index 8308a12e1232..1c1c514a9725 100644
--- a/fs/udf/udf_sb.h
+++ b/fs/udf/udf_sb.h
@@ -6,7 +6,7 @@
6/* Since UDF 2.01 is ISO 13346 based... */ 6/* Since UDF 2.01 is ISO 13346 based... */
7#define UDF_SUPER_MAGIC 0x15013346 7#define UDF_SUPER_MAGIC 0x15013346
8 8
9#define UDF_MAX_READ_VERSION 0x0201 9#define UDF_MAX_READ_VERSION 0x0250
10#define UDF_MAX_WRITE_VERSION 0x0201 10#define UDF_MAX_WRITE_VERSION 0x0201
11 11
12#define UDF_FLAG_USE_EXTENDED_FE 0 12#define UDF_FLAG_USE_EXTENDED_FE 0
@@ -46,9 +46,22 @@
46#define UDF_VIRTUAL_MAP15 0x1512U 46#define UDF_VIRTUAL_MAP15 0x1512U
47#define UDF_VIRTUAL_MAP20 0x2012U 47#define UDF_VIRTUAL_MAP20 0x2012U
48#define UDF_SPARABLE_MAP15 0x1522U 48#define UDF_SPARABLE_MAP15 0x1522U
49#define UDF_METADATA_MAP25 0x2511U
49 50
50#pragma pack(1) /* XXX(hch): Why? This file just defines in-core structures */ 51#pragma pack(1) /* XXX(hch): Why? This file just defines in-core structures */
51 52
53struct udf_meta_data {
54 __u32 s_meta_file_loc;
55 __u32 s_mirror_file_loc;
56 __u32 s_bitmap_file_loc;
57 __u32 s_alloc_unit_size;
58 __u16 s_align_unit_size;
59 __u8 s_dup_md_flag;
60 struct inode *s_metadata_fe;
61 struct inode *s_mirror_fe;
62 struct inode *s_bitmap_fe;
63};
64
52struct udf_sparing_data { 65struct udf_sparing_data {
53 __u16 s_packet_len; 66 __u16 s_packet_len;
54 struct buffer_head *s_spar_map[4]; 67 struct buffer_head *s_spar_map[4];
@@ -82,6 +95,7 @@ struct udf_part_map {
82 union { 95 union {
83 struct udf_sparing_data s_sparing; 96 struct udf_sparing_data s_sparing;
84 struct udf_virtual_data s_virtual; 97 struct udf_virtual_data s_virtual;
98 struct udf_meta_data s_metadata;
85 } s_type_specific; 99 } s_type_specific;
86 __u32 (*s_partition_func)(struct super_block *, __u32, __u16, __u32); 100 __u32 (*s_partition_func)(struct super_block *, __u32, __u16, __u32);
87 __u16 s_volumeseqnum; 101 __u16 s_volumeseqnum;