2008-06-08 Robert Millan <rmh@aybabtu.com>
* include/grub/ntfs.h (struct grub_ntfs_bpb): Rename `serial_number' to `num_serial' (for consistency with other variables). (struct grub_ntfs_data): Add `uuid' member. * fs/ntfs.c (grub_ntfs_mount): Initialize `data->uuid'. (grub_ntfs_uuid): New function. (grub_ntfs_fs): Reference grub_ntfs_uuid() in `uuid' struct member.
This commit is contained in:
parent
dc20b0f9f5
commit
ad4936a035
3 changed files with 42 additions and 1 deletions
|
@ -1,3 +1,12 @@
|
||||||
|
2008-06-08 Robert Millan <rmh@aybabtu.com>
|
||||||
|
|
||||||
|
* include/grub/ntfs.h (struct grub_ntfs_bpb): Rename `serial_number' to
|
||||||
|
`num_serial' (for consistency with other variables).
|
||||||
|
(struct grub_ntfs_data): Add `uuid' member.
|
||||||
|
* fs/ntfs.c (grub_ntfs_mount): Initialize `data->uuid'.
|
||||||
|
(grub_ntfs_uuid): New function.
|
||||||
|
(grub_ntfs_fs): Reference grub_ntfs_uuid() in `uuid' struct member.
|
||||||
|
|
||||||
2008-06-07 Pavel Roskin <proski@gnu.org>
|
2008-06-07 Pavel Roskin <proski@gnu.org>
|
||||||
|
|
||||||
* util/biosdisk.c (open_device): Revert last change to the
|
* util/biosdisk.c (open_device): Revert last change to the
|
||||||
|
|
31
fs/ntfs.c
31
fs/ntfs.c
|
@ -830,6 +830,8 @@ grub_ntfs_mount (grub_disk_t disk)
|
||||||
(disk, data->mft_start, 0, data->mft_size << BLK_SHR, data->mmft.buf))
|
(disk, data->mft_start, 0, data->mft_size << BLK_SHR, data->mmft.buf))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
|
data->uuid = grub_le_to_cpu64 (bpb.num_serial);
|
||||||
|
|
||||||
if (fixup (data, data->mmft.buf, data->mft_size, "FILE"))
|
if (fixup (data, data->mmft.buf, data->mft_size, "FILE"))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
|
@ -1078,6 +1080,34 @@ fail:
|
||||||
return grub_errno;
|
return grub_errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static grub_err_t
|
||||||
|
grub_ntfs_uuid (grub_device_t device, char **uuid)
|
||||||
|
{
|
||||||
|
struct grub_ntfs_data *data;
|
||||||
|
grub_disk_t disk = device->disk;
|
||||||
|
|
||||||
|
#ifndef GRUB_UTIL
|
||||||
|
grub_dl_ref (my_mod);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
data = grub_ntfs_mount (disk);
|
||||||
|
if (data)
|
||||||
|
{
|
||||||
|
*uuid = grub_malloc (16 + sizeof ('\0'));
|
||||||
|
grub_sprintf (*uuid, "%016llx", data->uuid);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
*uuid = NULL;
|
||||||
|
|
||||||
|
#ifndef GRUB_UTIL
|
||||||
|
grub_dl_unref (my_mod);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
grub_free (data);
|
||||||
|
|
||||||
|
return grub_errno;
|
||||||
|
}
|
||||||
|
|
||||||
static struct grub_fs grub_ntfs_fs = {
|
static struct grub_fs grub_ntfs_fs = {
|
||||||
.name = "ntfs",
|
.name = "ntfs",
|
||||||
.dir = grub_ntfs_dir,
|
.dir = grub_ntfs_dir,
|
||||||
|
@ -1085,6 +1115,7 @@ static struct grub_fs grub_ntfs_fs = {
|
||||||
.read = grub_ntfs_read,
|
.read = grub_ntfs_read,
|
||||||
.close = grub_ntfs_close,
|
.close = grub_ntfs_close,
|
||||||
.label = grub_ntfs_label,
|
.label = grub_ntfs_label,
|
||||||
|
.uuid = grub_ntfs_uuid,
|
||||||
.next = 0
|
.next = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -115,7 +115,7 @@ struct grub_ntfs_bpb
|
||||||
grub_int8_t reserved_4[3];
|
grub_int8_t reserved_4[3];
|
||||||
grub_int8_t clusters_per_index;
|
grub_int8_t clusters_per_index;
|
||||||
grub_int8_t reserved_5[3];
|
grub_int8_t reserved_5[3];
|
||||||
grub_uint64_t serial_number;
|
grub_uint64_t num_serial;
|
||||||
grub_uint32_t checksum;
|
grub_uint32_t checksum;
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
|
@ -151,6 +151,7 @@ struct grub_ntfs_data
|
||||||
grub_uint32_t spc;
|
grub_uint32_t spc;
|
||||||
grub_uint32_t blocksize;
|
grub_uint32_t blocksize;
|
||||||
grub_uint32_t mft_start;
|
grub_uint32_t mft_start;
|
||||||
|
grub_uint64_t uuid;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct grub_ntfs_comp
|
struct grub_ntfs_comp
|
||||||
|
|
Loading…
Reference in a new issue