Also pass device_path into GParted_Core::is_busy() (#183)
Will use this extra parameter when determining if a device or partition containing bcache is busy or not. Closes #183 - Basic support for bcache
This commit is contained in:
parent
99d683221d
commit
f1920e306b
|
@ -99,7 +99,7 @@ private:
|
||||||
void read_uuid( Partition & partition ) ;
|
void read_uuid( Partition & partition ) ;
|
||||||
void set_mountpoints( Partition & partition );
|
void set_mountpoints( Partition & partition );
|
||||||
bool set_mountpoints_helper( Partition & partition, const Glib::ustring & path );
|
bool set_mountpoints_helper( Partition & partition, const Glib::ustring & path );
|
||||||
bool is_busy( FSType fstype, const Glib::ustring & path );
|
bool is_busy(const Glib::ustring& device_path, FSType fstype, const Glib::ustring& partition_path);
|
||||||
void set_used_sectors( Partition & partition, PedDisk* lp_disk );
|
void set_used_sectors( Partition & partition, PedDisk* lp_disk );
|
||||||
void mounted_fs_set_used_sectors(Partition& partition);
|
void mounted_fs_set_used_sectors(Partition& partition);
|
||||||
#ifdef HAVE_LIBPARTED_FS_RESIZE
|
#ifdef HAVE_LIBPARTED_FS_RESIZE
|
||||||
|
|
|
@ -860,16 +860,16 @@ void GParted_Core::set_device_partitions( Device & device, PedDevice* lp_device,
|
||||||
{
|
{
|
||||||
//Try device_name + partition_number
|
//Try device_name + partition_number
|
||||||
Glib::ustring dmraid_path = device .get_path() + Utils::num_to_str( lp_partition ->num ) ;
|
Glib::ustring dmraid_path = device .get_path() + Utils::num_to_str( lp_partition ->num ) ;
|
||||||
partition_is_busy = is_busy(fstype, dmraid_path);
|
partition_is_busy = is_busy(device.get_path(), fstype, dmraid_path);
|
||||||
|
|
||||||
//Try device_name + p + partition_number
|
//Try device_name + p + partition_number
|
||||||
dmraid_path = device .get_path() + "p" + Utils::num_to_str( lp_partition ->num ) ;
|
dmraid_path = device .get_path() + "p" + Utils::num_to_str( lp_partition ->num ) ;
|
||||||
partition_is_busy |= is_busy(fstype, dmraid_path);
|
partition_is_busy |= is_busy(device.get_path(), fstype, dmraid_path);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
partition_is_busy = is_busy(fstype, partition_path);
|
partition_is_busy = is_busy(device.get_path(), fstype, partition_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fstype == FS_LUKS)
|
if (fstype == FS_LUKS)
|
||||||
|
@ -980,7 +980,7 @@ void GParted_Core::set_device_one_partition( Device & device, PedDevice * lp_dev
|
||||||
device.partitions.clear();
|
device.partitions.clear();
|
||||||
|
|
||||||
Glib::ustring path = lp_device->path;
|
Glib::ustring path = lp_device->path;
|
||||||
bool partition_is_busy = is_busy( fstype, path );
|
bool partition_is_busy = is_busy(device.get_path(), fstype, path);
|
||||||
|
|
||||||
Partition * partition_temp = NULL;
|
Partition * partition_temp = NULL;
|
||||||
if ( fstype == FS_LUKS )
|
if ( fstype == FS_LUKS )
|
||||||
|
@ -1021,7 +1021,7 @@ void GParted_Core::set_luks_partition( PartitionLUKS & partition )
|
||||||
Glib::ustring mapping_path = DEV_MAPPER_PATH + mapping.name;
|
Glib::ustring mapping_path = DEV_MAPPER_PATH + mapping.name;
|
||||||
std::vector<Glib::ustring> detect_messages;
|
std::vector<Glib::ustring> detect_messages;
|
||||||
FSType fstype = detect_filesystem_in_encryption_mapping(mapping_path, detect_messages);
|
FSType fstype = detect_filesystem_in_encryption_mapping(mapping_path, detect_messages);
|
||||||
bool fs_busy = is_busy( fstype, mapping_path );
|
bool fs_busy = is_busy(mapping_path, fstype, mapping_path);
|
||||||
|
|
||||||
partition.set_luks( mapping_path,
|
partition.set_luks( mapping_path,
|
||||||
fstype,
|
fstype,
|
||||||
|
@ -1556,8 +1556,9 @@ bool GParted_Core::set_mountpoints_helper( Partition & partition, const Glib::us
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Report whether the partition is busy (mounted/active)
|
|
||||||
bool GParted_Core::is_busy( FSType fstype, const Glib::ustring & path )
|
// Report whether the partition is busy (mounted/active)
|
||||||
|
bool GParted_Core::is_busy(const Glib::ustring& device_path, FSType fstype, const Glib::ustring& partition_path)
|
||||||
{
|
{
|
||||||
FileSystem * p_filesystem = NULL ;
|
FileSystem * p_filesystem = NULL ;
|
||||||
bool busy = false ;
|
bool busy = false ;
|
||||||
|
@ -1568,14 +1569,14 @@ bool GParted_Core::is_busy( FSType fstype, const Glib::ustring & path )
|
||||||
{
|
{
|
||||||
case FS::GPARTED:
|
case FS::GPARTED:
|
||||||
//Search GParted internal mounted partitions map
|
//Search GParted internal mounted partitions map
|
||||||
busy = Mount_Info::is_dev_mounted( path );
|
busy = Mount_Info::is_dev_mounted(partition_path);
|
||||||
break ;
|
break ;
|
||||||
|
|
||||||
case FS::EXTERNAL:
|
case FS::EXTERNAL:
|
||||||
//Call file system specific method
|
//Call file system specific method
|
||||||
p_filesystem = get_filesystem_object( fstype ) ;
|
p_filesystem = get_filesystem_object( fstype ) ;
|
||||||
if ( p_filesystem )
|
if ( p_filesystem )
|
||||||
busy = p_filesystem -> is_busy( path ) ;
|
busy = p_filesystem -> is_busy(partition_path) ;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -1588,12 +1589,12 @@ bool GParted_Core::is_busy( FSType fstype, const Glib::ustring & path )
|
||||||
|
|
||||||
//Still search GParted internal mounted partitions map in case an
|
//Still search GParted internal mounted partitions map in case an
|
||||||
// unknown file system is mounted
|
// unknown file system is mounted
|
||||||
busy = Mount_Info::is_dev_mounted( path );
|
busy = Mount_Info::is_dev_mounted(partition_path);
|
||||||
|
|
||||||
// Custom checks for recognised but other not-supported file system types.
|
// Custom checks for recognised but other not-supported file system types.
|
||||||
busy |= (fstype == FS_LINUX_SWRAID && SWRaid_Info::is_member_active(path));
|
busy |= (fstype == FS_LINUX_SWRAID && SWRaid_Info::is_member_active(partition_path));
|
||||||
busy |= (fstype == FS_ATARAID && (SWRaid_Info::is_member_active(path) ||
|
busy |= (fstype == FS_ATARAID && (SWRaid_Info::is_member_active(partition_path) ||
|
||||||
dmraid.is_member_active(path) ));
|
dmraid.is_member_active(partition_path) ));
|
||||||
}
|
}
|
||||||
|
|
||||||
return busy ;
|
return busy ;
|
||||||
|
|
Loading…
Reference in New Issue