libblkid: remove workaround for FAT+MBR on whole-disk

The current libblkid ignores FAT when created on the same whole-disk
device as valid MBR. This restriction is not compatible with many
devices (like USB flash disk) created by Windows or the latest
dosfstools where the first partition is used for entire device and
where is also valid FAT. The filesystem is accessible from partition
as well as from whole-disk device.

The conclusion (between util-linux, dosfstools and udisks) is that
libblkid has to provide all details, not hide anything and the proper
policy (hide/show) has to be implemented by udisks (or so).

CC: Tomáš Bžatek <tbzatek@redhat.com>
CC: Pali Rohár <pali.rohar@gmail.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
Karel Zak 2021-04-09 14:42:18 +02:00
parent 33ef6ce910
commit 751eca28fc
3 changed files with 0 additions and 60 deletions

View File

@ -250,24 +250,6 @@ static int fat_valid_superblock(blkid_probe pr,
if (cluster_count)
*cluster_count = __cluster_count;
if (blkid_probe_is_wholedisk(pr)) {
/* OK, seems like FAT, but it's possible that we found boot
* sector with crazy FAT-like stuff (magic strings, media,
* etc..) before MBR. Let's make sure that there is no MBR with
* usable partition. */
unsigned char *buf = (unsigned char *) ms;
if (mbr_is_valid_magic(buf)) {
struct dos_partition *p0 = mbr_get_partition(buf, 0);
if (dos_partition_get_size(p0) != 0 &&
(p0->boot_ind == 0 || p0->boot_ind == 0x80)) {
DBG(LOWPROBE, ul_debug("\tMBR detected"));
return 0;
}
}
}
if (blkid_probe_is_bitlocker(pr))
return 0;

View File

@ -1,42 +0,0 @@
#!/bin/bash
#
# Copyright (C) 2015 Karel Zak <kzak@redhat.com>
#
# This file is part of util-linux.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This file is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
TS_TOPDIR="${0%/*}/../.."
TS_DESC="mbr-wholedisk"
. $TS_TOPDIR/functions.sh
ts_init "$*"
ts_check_test_command "$TS_CMD_BLKID"
ts_skip_nonroot
# set global variable TS_DEVICE
ts_scsi_debug_init dev_size_mb=50
#
# This looks like VFAT, but it's MBR
#
ts_init_subtest "fake-vfat"
dd if=${TS_SELF}/mbr-wholedisk-vfat.img of=${TS_DEVICE} &> /dev/null
udevadm settle
$TS_CMD_BLKID -p -o udev ${TS_DEVICE} >> $TS_OUTPUT
ts_finalize_subtest
ts_finalize