[gparted] Quote mount point when copying and resizing xfs (#782681)
- From: Curtis Gedak <gedakc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gparted] Quote mount point when copying and resizing xfs (#782681)
- Date: Sun, 21 May 2017 16:03:03 +0000 (UTC)
commit 2025581029eae816cf331918ddae42094d3600f1
Author: Mike Fleetwood <mike fleetwood googlemail com>
Date: Fri May 19 15:52:15 2017 +0100
Quote mount point when copying and resizing xfs (#782681)
Attempting to grow an already mounted xfs where the mount point
contained spaces failed like this:
Grow /dev/sdb4 from 1.00 GiB to 1.50 GiB
+ calibrate /dev/sdb4
+ grow partition from 1.00 GiB to 1.50 GiB
+ grow file system to fill the partition
+ xfs_growfs /tmp/File System Label
Usage: xfs_growfs [options] mountpoint
...
Apply the rule and quote all uses of mount points within command lines.
This is also applied to copying xfs file systems even though it was safe
because it only ever used GParted generated mount points.
Also for the xfs copy operation switch unmounting of partitions to
specify mount points instead of partitions. This is just to be
consistent with how it is done in all the online file system resizing
code.
Bug 782681 - btrfs partitions mounted with whitespace cannot be resized
src/xfs.cc | 26 ++++++++++++++++----------
1 files changed, 16 insertions(+), 10 deletions(-)
---
diff --git a/src/xfs.cc b/src/xfs.cc
index 8593e90..f925737 100644
--- a/src/xfs.cc
+++ b/src/xfs.cc
@@ -193,7 +193,8 @@ bool xfs::resize( const Partition & partition_new, OperationDetail & operationde
mount_point = mk_temp_dir( "", operationdetail ) ;
if ( mount_point.empty() )
return false ;
- success &= ! execute_command( "mount -v -t xfs " + partition_new .get_path() + " " +
mount_point,
+ success &= ! execute_command( "mount -v -t xfs " + partition_new .get_path() +
+ " \"" + mount_point + "\"",
operationdetail, EXEC_CHECK_STATUS );
}
else
@@ -201,10 +202,12 @@ bool xfs::resize( const Partition & partition_new, OperationDetail & operationde
if ( success )
{
- success &= ! execute_command( "xfs_growfs " + mount_point, operationdetail, EXEC_CHECK_STATUS
);
+ success &= ! execute_command( "xfs_growfs \"" + mount_point + "\"",
+ operationdetail, EXEC_CHECK_STATUS );
if ( ! partition_new .busy )
- success &= ! execute_command( "umount -v " + mount_point, operationdetail,
EXEC_CHECK_STATUS );
+ success &= ! execute_command( "umount -v \"" + mount_point + "\"",
+ operationdetail, EXEC_CHECK_STATUS );
}
if ( ! partition_new .busy )
@@ -236,7 +239,8 @@ bool xfs::copy( const Partition & src_part,
}
success &= ! execute_command( "mount -v -t xfs -o noatime,ro " + src_part.get_path() +
- " " + src_mount_point, operationdetail, EXEC_CHECK_STATUS );
+ " \"" + src_mount_point + "\"",
+ operationdetail, EXEC_CHECK_STATUS );
// Get source FS used bytes, needed in progress update calculation
Byte_Value fs_size;
@@ -249,21 +253,23 @@ bool xfs::copy( const Partition & src_part,
if ( success )
{
success &= ! execute_command( "mount -v -t xfs " + dest_part.get_path() +
- " " + dest_mount_point, operationdetail, EXEC_CHECK_STATUS );
+ " \"" + dest_mount_point + "\"",
+ operationdetail, EXEC_CHECK_STATUS );
if ( success )
{
- success &= ! execute_command( "sh -c 'xfsdump -J - " + src_mount_point +
- " | xfsrestore -J - " + dest_mount_point + "'",
+ success &= ! execute_command( "sh -c 'xfsdump -J - \"" + src_mount_point +
+ "\" | xfsrestore -J - \"" + dest_mount_point + "\"'",
operationdetail,
EXEC_CHECK_STATUS|EXEC_CANCEL_SAFE|EXEC_PROGRESS_TIMED,
static_cast<TimedSlot>( sigc::mem_fun( *this,
&xfs::copy_progress ) ) );
- success &= ! execute_command( "umount -v " + dest_part.get_path(), operationdetail,
- EXEC_CHECK_STATUS );
+ success &= ! execute_command( "umount -v \"" + dest_mount_point + "\"",
+ operationdetail, EXEC_CHECK_STATUS );
}
- success &= ! execute_command( "umount -v " + src_part.get_path(), operationdetail,
EXEC_CHECK_STATUS );
+ success &= ! execute_command( "umount -v \"" + src_mount_point + "\"",
+ operationdetail, EXEC_CHECK_STATUS );
}
rm_temp_dir( dest_mount_point, operationdetail ) ;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]