Refactor linux-swap recreation (#775932)
Linux-swap is recreated as part of copy, resize and move operations and the code was special cased to implement that by calling the linux-swap specific resize method. However the displayed text always said "growing file system" and then proceeded to recreate linux swap. Example operation: Copy /dev/sdb1 to /dev/sdb2 ... + copy file system from /dev/sdb1 to /dev/sdb2 Partition copy action skipped because linux-swap file system does not contain data + grow file system to fill the partition + create new linux-swap file system + mkswap -L"" -U "77d939ef-54d6-427a-a2bf-a053da7eed4c" /dev/sdb2 Setting up swapspace version 1, size = 262140 KiB LABEL=, UUID=77d939ef-54d6-427a-a2bf-a053da7eed4c Fix by writing recreate_linux_swap_filesystem() method with better messaging and use everywhere maximise_filesystem() was previously used to recreate linux-swap. Also as this is a create step, erase the partition first to prevent the possibility of any other file system signatures being found afterwards. Now the operation steps are more reflective of what is actually being performed. Copy /dev/sdb1 to /dev/sdb2 ... + copy file system from /dev/sdb1 to /dev/sdb2 Partition copy action skipped because linux-swap file system does not contain data + clear old file system signatures in /dev/sdb2 + create new linux-swap file system + mkswap -L"" -U "77d939ef-54d6-427a-a2bf-a053da7eed4c" /dev/sdb2 Setting up swapspace version 1, size = 262140 KiB LABEL=, UUID=77d939ef-54d6-427a-a2bf-a053da7eed4c Bug 775932 - Refactor mostly applying of operations
This commit is contained in:
parent
a1c938b30d
commit
2740113dcb
|
@ -143,6 +143,8 @@ private:
|
|||
const Partition & partition_new,
|
||||
OperationDetail & operationdetail );
|
||||
bool maximize_filesystem( const Partition & partition, OperationDetail & operationdetail ) ;
|
||||
bool recreate_linux_swap_filesystem( const Partition & partition,
|
||||
OperationDetail & operationdetail );
|
||||
bool resize_filesystem_implement( const Partition & partition_old,
|
||||
const Partition & partition_new,
|
||||
OperationDetail & operationdetail );
|
||||
|
|
|
@ -2354,7 +2354,7 @@ bool GParted_Core::move( const Partition & partition_old,
|
|||
|
||||
if ( partition_new.filesystem == FS_LINUX_SWAP )
|
||||
// linux-swap is recreated, not moved
|
||||
return maximize_filesystem( partition_new, operationdetail );
|
||||
return recreate_linux_swap_filesystem( partition_new, operationdetail );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -2521,7 +2521,7 @@ bool GParted_Core::resize( const Partition & partition_old,
|
|||
{
|
||||
// linux-swap is recreated, not resize
|
||||
success = resize_move_partition( partition_old, partition_new, operationdetail )
|
||||
&& maximize_filesystem( partition_new, operationdetail );
|
||||
&& recreate_linux_swap_filesystem( partition_new, operationdetail );
|
||||
|
||||
return success;
|
||||
}
|
||||
|
@ -2809,6 +2809,33 @@ bool GParted_Core::maximize_filesystem( const Partition & partition, OperationDe
|
|||
return success;
|
||||
}
|
||||
|
||||
bool GParted_Core::recreate_linux_swap_filesystem( const Partition & partition, OperationDetail & operationdetail )
|
||||
{
|
||||
if ( partition.filesystem != FS_LINUX_SWAP )
|
||||
{
|
||||
operationdetail.add_child( OperationDetail(
|
||||
/* TO TRANSLATORS: looks like not a linux-swap file system for a recreate linux-swap only step */
|
||||
GPARTED_BUG + ": " + String::ucompose( _("not a %1 file system for a recreate %1 only step"),
|
||||
Utils::get_filesystem_string( FS_LINUX_SWAP ),
|
||||
Utils::get_filesystem_string( FS_LINUX_SWAP ) ),
|
||||
STATUS_ERROR, FONT_ITALIC ) );
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( ! erase_filesystem_signatures( partition, operationdetail ) )
|
||||
return false;
|
||||
|
||||
operationdetail.add_child( OperationDetail(
|
||||
/* TO TRANSLATORS: looks like recreate linux-swap file system */
|
||||
String::ucompose( _("recreate %1 file system"),
|
||||
Utils::get_filesystem_string( FS_LINUX_SWAP ) ) ) );
|
||||
|
||||
// Linux-swap is recreated by using the linux_swap::resize() method
|
||||
bool success = resize_filesystem_implement( partition, partition, operationdetail );
|
||||
operationdetail.get_last_child().set_status( success ? STATUS_SUCCES : STATUS_ERROR );
|
||||
return success;
|
||||
}
|
||||
|
||||
bool GParted_Core::resize_filesystem_implement( const Partition & partition_old,
|
||||
const Partition & partition_new,
|
||||
OperationDetail & operationdetail )
|
||||
|
@ -2893,7 +2920,7 @@ bool GParted_Core::copy( const Partition & partition_src,
|
|||
if ( partition_dst.filesystem == FS_LINUX_SWAP )
|
||||
{
|
||||
// linux-swap is recreated, not copied
|
||||
return maximize_filesystem( partition_dst, operationdetail );
|
||||
return recreate_linux_swap_filesystem( partition_dst, operationdetail );
|
||||
}
|
||||
else if ( partition_dst.get_byte_length() > partition_src.get_byte_length() )
|
||||
{
|
||||
|
|
|
@ -168,19 +168,12 @@ bool linux_swap::create( const Partition & new_partition, OperationDetail & oper
|
|||
|
||||
bool linux_swap::resize( const Partition & partition_new, OperationDetail & operationdetail, bool fill_partition )
|
||||
{
|
||||
/*TO TRANSLATORS: looks like create new linux-swap file system */
|
||||
operationdetail .add_child( OperationDetail(
|
||||
String::ucompose( _("create new %1 file system"), Utils::get_filesystem_string( FS_LINUX_SWAP ) ) ) ) ;
|
||||
|
||||
//Maintain label and uuid when recreating swap
|
||||
Glib::ustring command = "mkswap -L \"" + partition_new.get_filesystem_label() + "\" ";
|
||||
if ( ! partition_new .uuid .empty() )
|
||||
command += " -U \"" + partition_new .uuid + "\" " ;
|
||||
command += partition_new .get_path() ;
|
||||
bool exit_status = ! execute_command( command , operationdetail.get_last_child(), EXEC_CHECK_STATUS );
|
||||
|
||||
operationdetail .get_last_child() .set_status( exit_status ? STATUS_SUCCES : STATUS_ERROR ) ;
|
||||
return exit_status ;
|
||||
return ! execute_command( command, operationdetail, EXEC_CHECK_STATUS );
|
||||
}
|
||||
|
||||
bool linux_swap::move( const Partition & partition_new
|
||||
|
|
Loading…
Reference in New Issue