reiserfs & xfs UUIDs
PATCH 1/1 reiserfs & xfs UUIDs
This patch adds support for UUIDs on reiserfs and xfs.
Signature · 5 lines
Robert Millan <GPLv2> I know my rights; I want my phone call! <DRM> What good is a phone call… if you are unable to speak? (as seen on /.)
2008-05-31 Robert Millan <[email protected]>
* fs/reiserfs.c (grub_reiserfs_superblock): Add `uuid' field. (grub_reiserfs_uuid): New function.
(grub_reiserfs_fs): Reference grub_reiserfs_uuid() in `uuid' struct member.
* fs/xfs.c (grub_xfs_sblock): Add `uuid' field. (grub_xfs_uuid): New function.
(grub_xfs_fs): Reference grub_reiserfs_uuid() in `uuid' struct member.
fs/reiserfs.c renamed from grub2/fs/reiserfs.c +35 -0
@@ -108,6 +108,8 @@ struct grub_reiserfs_superblockgrub_uint16_t version;grub_uint16_t reserved;grub_uint32_t inode_generation; +grub_uint8_t unused[4 ]; +grub_uint16_t uuid[8 ]; } __attribute__ ((packed));struct grub_reiserfs_journal_header
@@ -1468,6 +1470,38 @@ grub_reiserfs_label (grub_device_t devicreturn grub_errno; } +static grub_err_t +grub_reiserfs_uuid (grub_device_t device,char **uuid) +{ +struct grub_reiserfs_data *data; +grub_disk_t disk = device->disk; + +#ifndef GRUB_UTIL +grub_dl_ref (my_mod); +#endif + + data =grub_reiserfs_mount (disk); +if (data) + { + *uuid =grub_malloc (40 +sizeof ('\0' )); +grub_sprintf (*uuid,"%04x%04x-%04x-%04x-%04x-%04x%04x%04x" , +grub_be_to_cpu16 (data->superblock.uuid[0 ]),grub_be_to_cpu16 (data->superblock.uuid[1 ]), +grub_be_to_cpu16 (data->superblock.uuid[2 ]),grub_be_to_cpu16 (data->superblock.uuid[3 ]), +grub_be_to_cpu16 (data->superblock.uuid[4 ]),grub_be_to_cpu16 (data->superblock.uuid[5 ]), +grub_be_to_cpu16 (data->superblock.uuid[6 ]),grub_be_to_cpu16 (data->superblock.uuid[7 ])); + } +else + *uuid =NULL ; + +#ifndef GRUB_UTIL +grub_dl_unref (my_mod); +#endif + +grub_free (data); + +return grub_errno; +} +static struct grub_fs grub_reiserfs_fs = { .name ="reiserfs" ,
@@ -1476,6 +1510,7 @@ static struct grub_fs grub_reiserfs_fs = .read = grub_reiserfs_read, .close = grub_reiserfs_close, .label = grub_reiserfs_label, + .uuid = grub_reiserfs_uuid, .next = 0 };
fs/xfs.c renamed from grub2/fs/xfs.c +40 -5
69 lines not on this page · raw message
Committed.
Quoted 159 lines · Robert Millan
This patch adds support for UUIDs on reiserfs and xfs.
Signature · 17 lines
Robert Millan <GPLv2> I know my rights; I want my phone call! <DRM> What good is a phone call… if you are unable to speak? (as seen on /.) 2008-05-31 Robert Millan <[email protected]> * fs/reiserfs.c (grub_reiserfs_superblock): Add `uuid' field. (grub_reiserfs_uuid): New function. (grub_reiserfs_fs): Reference grub_reiserfs_uuid() in `uuid' struct member. * fs/xfs.c (grub_xfs_sblock): Add `uuid' field. (grub_xfs_uuid): New function. (grub_xfs_fs): Reference grub_reiserfs_uuid() in `uuid' struct member. diff -x configure -x config.h.in -x CVS -x '*~' -x '*.mk' -urp ../grub2/fs/reiserfs.c ./fs/reiserfs.cfs/reiserfs.c renamed from grub2/fs/reiserfs.c +35
-0@@ -108,6 +108,8 @@ struct grub_reiserfs_superblockgrub_uint16_t version;grub_uint16_t reserved;grub_uint32_t inode_generation; +grub_uint8_t unused[4 ]; +grub_uint16_t uuid[8 ]; } __attribute__ ((packed));struct grub_reiserfs_journal_header @@ -1468,6 +1470,38 @@ grub_reiserfs_label (grub_device_t devicreturn grub_errno; } +static grub_err_t +grub_reiserfs_uuid (grub_device_t device,char **uuid) +{ +struct grub_reiserfs_data *data; +grub_disk_t disk = device->disk; + +#ifndef GRUB_UTIL +grub_dl_ref (my_mod); +#endif + + data =grub_reiserfs_mount (disk); +if (data) + { + *uuid =grub_malloc (40 +sizeof ('\0' )); +grub_sprintf (*uuid,"%04x%04x-%04x-%04x-%04x-%04x%04x%04x" , +grub_be_to_cpu16 (data->superblock.uuid[0 ]),grub_be_to_cpu16 (data->superblock.uuid[1 ]), +grub_be_to_cpu16 (data->superblock.uuid[2 ]),grub_be_to_cpu16 (data->superblock.uuid[3 ]), +grub_be_to_cpu16 (data->superblock.uuid[4 ]),grub_be_to_cpu16 (data->superblock.uuid[5 ]), +grub_be_to_cpu16 (data->superblock.uuid[6 ]),grub_be_to_cpu16 (data->superblock.uuid[7 ])); + } +else + *uuid =NULL ; + +#ifndef GRUB_UTIL +grub_dl_unref (my_mod); +#endif + +grub_free (data); + +return grub_errno; +} +static struct grub_fs grub_reiserfs_fs = { .name ="reiserfs" ,@@ -1476,6 +1510,7 @@ static struct grub_fs grub_reiserfs_fs = .read = grub_reiserfs_read, .close = grub_reiserfs_close, .label = grub_reiserfs_label, + .uuid = grub_reiserfs_uuid, .next = 0 };diff -x configure -x config.h.in -x CVS -x '*~' -x '*.mk' -urp
../grub2/fs/xfs.c./fs/xfs.cfs/xfs.c renamed from grub2/fs/xfs.c +40
-5@@ -37,17 +37,19 @@ struct grub_xfs_sblock {grub_uint8_t magic[4 ];grub_uint32_t bsize; -grub_uint8_t unused1[48 ]; +grub_uint8_t unused1[24 ]; +grub_uint16_t uuid[8 ]; +grub_uint8_t unused2[8 ];grub_uint64_t rootino; -grub_uint8_t unused2[20 ]; -grub_uint32_t agsize;grub_uint8_t unused3[20 ]; +grub_uint32_t agsize; +grub_uint8_t unused4[20 ];grub_uint8_t label[12 ];grub_uint8_t log2_bsize; -grub_uint8_t unused4[2 ]; +grub_uint8_t unused5[2 ];grub_uint8_t log2_inop;grub_uint8_t log2_agblk; -grub_uint8_t unused5[67 ]; +grub_uint8_t unused6[67 ];grub_uint8_t log2_dirblk; } __attribute__ ((packed));@@ -763,6 +765,38 @@ grub_xfs_label (grub_device_t device, chreturn grub_errno; } +static grub_err_t +grub_xfs_uuid (grub_device_t device,char **uuid) +{ +struct grub_xfs_data *data; +grub_disk_t disk = device->disk; + +#ifndef GRUB_UTIL +grub_dl_ref (my_mod); +#endif + + data =grub_xfs_mount (disk); +if (data) + { + *uuid =grub_malloc (40 +sizeof ('\0' )); +grub_sprintf (*uuid,"%04x%04x-%04x-%04x-%04x-%04x%04x%04x" , +grub_be_to_cpu16 (data->sblock.uuid[0 ]),grub_be_to_cpu16 (data->sblock.uuid[1 ]), +grub_be_to_cpu16 (data->sblock.uuid[2 ]),grub_be_to_cpu16 (data->sblock.uuid[3 ]), +grub_be_to_cpu16 (data->sblock.uuid[4 ]),grub_be_to_cpu16 (data->sblock.uuid[5 ]), +grub_be_to_cpu16 (data->sblock.uuid[6 ]),grub_be_to_cpu16 (data->sblock.uuid[7 ])); + } +else + *uuid =NULL ; + +#ifndef GRUB_UTIL +grub_dl_unref (my_mod); +#endif + +grub_free (data); + +return grub_errno; +} + static struct grub_fs grub_xfs_fs =@@ -773,6 +807,7 @@ static struct grub_fs grub_xfs_fs = .read = grub_xfs_read, .close = grub_xfs_close, .label = grub_xfs_label, + .uuid = grub_xfs_uuid, .next = 0 };_______________________________________________
Grub-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/grub-devel
Signature · 5 lines
Robert Millan <GPLv2> I know my rights; I want my phone call! <DRM> What good is a phone call… if you are unable to speak? (as seen on /.)