mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-10-31 16:21:11 +03:00
volume_id: ntfs - fix uuid setting
In my scenario, the ntfs prober did *not* detect the presence of a ntfs filesystem (i.e. vol_id --probe-all returned *only* ext3). However, if you examine the source of the ntfs prober, it overwrites the uuid field of the volume_id object long before it actually decides there's a valid filesystem there - this resulted in vol_id returning the rather bizarre combination of type=ext3, but a uuid populated by the ntfs prober. https://bugs.edge.launchpad.net/ubuntu/+source/udev/+bug/337015
This commit is contained in:
parent
9270e08082
commit
1597517c9e
@ -24,7 +24,7 @@ AC_SUBST(LIBUDEV_LT_AGE)
|
||||
|
||||
dnl /* libvolume_id version */
|
||||
VOLID_LT_CURRENT=1
|
||||
VOLID_LT_REVISION=9
|
||||
VOLID_LT_REVISION=10
|
||||
VOLID_LT_AGE=0
|
||||
AC_SUBST(VOLID_LT_CURRENT)
|
||||
AC_SUBST(VOLID_LT_REVISION)
|
||||
|
@ -97,6 +97,7 @@ static struct volume_info {
|
||||
|
||||
int volume_id_probe_ntfs(struct volume_id *id, uint64_t off, uint64_t size)
|
||||
{
|
||||
uint8_t volume_serial[8];
|
||||
unsigned int sector_size;
|
||||
unsigned int cluster_size;
|
||||
uint64_t mft_cluster;
|
||||
@ -119,7 +120,7 @@ int volume_id_probe_ntfs(struct volume_id *id, uint64_t off, uint64_t size)
|
||||
if (memcmp(ns->oem_id, "NTFS", 4) != 0)
|
||||
return -1;
|
||||
|
||||
volume_id_set_uuid(id, ns->volume_serial, 0, UUID_64BIT_LE);
|
||||
memcpy(volume_serial, ns->volume_serial, sizeof(volume_serial));
|
||||
|
||||
sector_size = le16_to_cpu(ns->bytes_per_sector);
|
||||
if (sector_size < 0x200)
|
||||
@ -193,6 +194,7 @@ int volume_id_probe_ntfs(struct volume_id *id, uint64_t off, uint64_t size)
|
||||
}
|
||||
}
|
||||
|
||||
volume_id_set_uuid(id, volume_serial, 0, UUID_64BIT_LE);
|
||||
volume_id_set_usage(id, VOLUME_ID_FILESYSTEM);
|
||||
id->type = "ntfs";
|
||||
/* we think this is ntfs, but we make sure no other signatures are found */
|
||||
|
Loading…
Reference in New Issue
Block a user