Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions application/widgets/createvgwidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1140,6 +1140,34 @@ void CreateVGWidget::updateData()
qDebug() << "CreateVGWidget::updateData completed";
}

static bool isDeviceRemovable(const QString &devicePath)
{
QFileInfo deviceInfo(devicePath);
QString deviceName = deviceInfo.fileName(); // e.g., "sda"

QString sysfsRemovablePath = QString("/sys/block/%1/removable").arg(deviceName);
QFile removableFile(sysfsRemovablePath);
bool removable = false;
QByteArray content;

if (!removableFile.exists()) {
qWarning() << "Sysfs path does not exist:" << sysfsRemovablePath;
goto quit;
}

if (!removableFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
qWarning() << "Could not open sysfs removable file:" << sysfsRemovablePath;
goto quit;
}

content = removableFile.readAll().trimmed(); // trimmed() 移除换行符和空格
removable = (content == "1");

quit:
qDebug() << "isDeviceRemovable:" << devicePath << removable;
return removable;
}

QList<DeviceInfo> CreateVGWidget::createAvailableDiskData()
{
qDebug() << "CreateVGWidget::createAvailableDiskData called.";
Expand All @@ -1155,6 +1183,11 @@ QList<DeviceInfo> CreateVGWidget::createAvailableDiskData()
continue;
}

// 排除可移动设备
if (isDeviceRemovable(info.m_path)) {
continue;
}

// 排除已加入VG的磁盘以及分区表错误的磁盘
if (isJoinAllVG.value(info.m_path) == "false") {//还需加上磁盘分区表是否错误的判断
PartitionVec lstNewPartition;
Expand Down
6 changes: 6 additions & 0 deletions debian/changelog
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
deepin-diskmanager (6.0.22) unstable; urgency=medium

* feat: Exclude removable devices when creating logical volume groups

-- wangrong <wangrong@uniontech.com> Thu, 13 Nov 2025 14:34:03 +0800

deepin-diskmanager (6.0.21) unstable; urgency=medium

* fix: Fix non-reproducible builds
Expand Down