]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libblkid: remove workaround for FAT+MBR on whole-disk
authorKarel Zak <kzak@redhat.com>
Fri, 9 Apr 2021 12:42:18 +0000 (14:42 +0200)
committerKarel Zak <kzak@redhat.com>
Fri, 9 Apr 2021 12:42:18 +0000 (14:42 +0200)
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>
libblkid/src/superblocks/vfat.c
tests/ts/blkid/mbr-wholedisk [deleted file]
tests/ts/blkid/mbr-wholedisk-vfat.img [deleted file]

index c7a3d080c8fd3fca50cd6acb2eed10a63deb5658..9b23ea900828d79b4fa0728dbc1bf244fff8a7ab 100644 (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;
 
diff --git a/tests/ts/blkid/mbr-wholedisk b/tests/ts/blkid/mbr-wholedisk
deleted file mode 100755 (executable)
index 239592e..0000000
+++ /dev/null
@@ -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
diff --git a/tests/ts/blkid/mbr-wholedisk-vfat.img b/tests/ts/blkid/mbr-wholedisk-vfat.img
deleted file mode 100644 (file)
index 22bee6c..0000000
Binary files a/tests/ts/blkid/mbr-wholedisk-vfat.img and /dev/null differ