Add blkid fallback for file system detection if udev method fails.

This commit is contained in:
Andrius Štikonas 2020-10-02 23:12:33 +01:00
parent ae05c031b7
commit 30bd4d62a9
2 changed files with 13 additions and 4 deletions

View File

@ -464,12 +464,20 @@ FileSystem::Type SfdiskBackend::detectFileSystem(const QString& partitionPath)
QStringLiteral("--query=property"),
partitionPath });
QString udevTypeRegExp = QStringLiteral("ID_FS_TYPE=(\\w+)");
QString udevVersionRegExp = QStringLiteral("ID_FS_VERSION=(\\w+)");
QString typeRegExp = QStringLiteral("ID_FS_TYPE=(\\w+)");
QString versionRegExp = QStringLiteral("ID_FS_VERSION=(\\w+)");
QString name = {};
rval = runDetectFileSystemCommand(udevCommand, udevTypeRegExp, udevVersionRegExp, name);
rval = runDetectFileSystemCommand(udevCommand, typeRegExp, versionRegExp, name);
// Fallback to blkid. blkid has slightly worse detection but it works on whole block device filesystems.
if (rval == FileSystem::Type::Unknown) {
ExternalCommand blkidCommand(QStringLiteral("blkid"), { partitionPath });
typeRegExp = QStringLiteral("TYPE=\"(\\w+)\"");
versionRegExp = QStringLiteral("SEC_TYPE=\"(\\w+)\"");
rval = runDetectFileSystemCommand(blkidCommand, typeRegExp, versionRegExp, name);
}
if (rval == FileSystem::Type::Unknown) {
qWarning() << "unknown file system type " << name << " on " << partitionPath;

View File

@ -1,5 +1,5 @@
/*
SPDX-FileCopyrightText: 2018-2019 Andrius Štikonas <andrius@stikonas.eu>
SPDX-FileCopyrightText: 2018-2020 Andrius Štikonas <andrius@stikonas.eu>
SPDX-FileCopyrightText: 2019 Shubham Jangra <aryan100jangid@gmail.com>
SPDX-License-Identifier: GPL-3.0-or-later
@ -15,6 +15,7 @@ QStringLiteral("udevadm"),
//Core programs
QStringLiteral("blockdev"),
QStringLiteral("blkid"),
QStringLiteral("partx"),
QStringLiteral("sfdisk"),
QStringLiteral("wipefs"),