removed cylindersize buffering during resize from the filesystems. It is
* include/FileSystem.h, include/GParted_Core.h, src/FileSystem.cc, src/GParted_Core.cc, src/ext2.cc, src/ext3.cc, src/ntfs.cc, src/reiserfs.cc: removed cylindersize buffering during resize from the filesystems. It is not needed anymore now we calculate the new position before calling this. Also added some extra progressfeedback in the core
This commit is contained in:
parent
8059d5f6d9
commit
d663c3c277
14
ChangeLog
14
ChangeLog
|
@ -1,3 +1,17 @@
|
||||||
|
2006-07-23 Bart Hakvoort <hakvoort@cvs.gnome.org>
|
||||||
|
|
||||||
|
* include/FileSystem.h,
|
||||||
|
include/GParted_Core.h,
|
||||||
|
src/FileSystem.cc,
|
||||||
|
src/GParted_Core.cc,
|
||||||
|
src/ext2.cc,
|
||||||
|
src/ext3.cc,
|
||||||
|
src/ntfs.cc,
|
||||||
|
src/reiserfs.cc: removed cylindersize buffering during resize from
|
||||||
|
the filesystems. It is not needed anymore now we calculate the new
|
||||||
|
position before calling this.
|
||||||
|
Also added some extra progressfeedback in the core
|
||||||
|
|
||||||
2006-07-23 Bart Hakvoort <hakvoort@cvs.gnome.org>
|
2006-07-23 Bart Hakvoort <hakvoort@cvs.gnome.org>
|
||||||
|
|
||||||
* include/GParted_Core.h,
|
* include/GParted_Core.h,
|
||||||
|
|
|
@ -44,8 +44,6 @@ public:
|
||||||
std::vector<OperationDetails> & operation_details ) = 0 ;
|
std::vector<OperationDetails> & operation_details ) = 0 ;
|
||||||
virtual bool Check_Repair( const Partition & partition, std::vector<OperationDetails> & operation_details ) = 0 ;
|
virtual bool Check_Repair( const Partition & partition, std::vector<OperationDetails> & operation_details ) = 0 ;
|
||||||
|
|
||||||
Sector cylinder_size ; //see GParted_Core::resize()
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
int execute_command( const Glib::ustring & command, std::vector<OperationDetails> & operation_details ) ;
|
int execute_command( const Glib::ustring & command, std::vector<OperationDetails> & operation_details ) ;
|
||||||
|
|
||||||
|
|
|
@ -101,8 +101,7 @@ private:
|
||||||
bool resize_move_filesystem_using_libparted( const Partition & partition_old,
|
bool resize_move_filesystem_using_libparted( const Partition & partition_old,
|
||||||
const Partition & partition_new,
|
const Partition & partition_new,
|
||||||
std::vector<OperationDetails> & operation_details ) ;
|
std::vector<OperationDetails> & operation_details ) ;
|
||||||
bool resize( const Device & device,
|
bool resize( const Partition & partition_old,
|
||||||
const Partition & partition_old,
|
|
||||||
const Partition & partition_new,
|
const Partition & partition_new,
|
||||||
std::vector<OperationDetails> & operation_detail ) ;
|
std::vector<OperationDetails> & operation_detail ) ;
|
||||||
bool resize_move_partition( const Partition & partition_old,
|
bool resize_move_partition( const Partition & partition_old,
|
||||||
|
@ -111,7 +110,6 @@ private:
|
||||||
bool resize_filesystem( const Partition & partition_old,
|
bool resize_filesystem( const Partition & partition_old,
|
||||||
const Partition & partition_new,
|
const Partition & partition_new,
|
||||||
std::vector<OperationDetails> & operation_details,
|
std::vector<OperationDetails> & operation_details,
|
||||||
Sector cylinder_size = 0,
|
|
||||||
bool fill_partition = false ) ;
|
bool fill_partition = false ) ;
|
||||||
bool maximize_filesystem( const Partition & partition,
|
bool maximize_filesystem( const Partition & partition,
|
||||||
std::vector<OperationDetails> & operation_details ) ;
|
std::vector<OperationDetails> & operation_details ) ;
|
||||||
|
@ -141,7 +139,7 @@ private:
|
||||||
Partition & partition_new,
|
Partition & partition_new,
|
||||||
std::vector<OperationDetails> & operation_details,
|
std::vector<OperationDetails> & operation_details,
|
||||||
Sector min_size = -1 ) ;
|
Sector min_size = -1 ) ;
|
||||||
void set_proper_filesystem( const FILESYSTEM & filesystem, Sector cylinder_size = 0 ) ;
|
void set_proper_filesystem( const FILESYSTEM & filesystem ) ;
|
||||||
bool wait_for_node( const Glib::ustring & node ) ;
|
bool wait_for_node( const Glib::ustring & node ) ;
|
||||||
bool erase_filesystem_signatures( const Partition & partition ) ;
|
bool erase_filesystem_signatures( const Partition & partition ) ;
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,6 @@ namespace GParted
|
||||||
|
|
||||||
FileSystem::FileSystem()
|
FileSystem::FileSystem()
|
||||||
{
|
{
|
||||||
cylinder_size = 0 ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int FileSystem::execute_command( const Glib::ustring & command, std::vector<OperationDetails> & operation_details )
|
int FileSystem::execute_command( const Glib::ustring & command, std::vector<OperationDetails> & operation_details )
|
||||||
|
|
|
@ -977,7 +977,9 @@ bool GParted_Core::create_partition( Partition & new_partition,
|
||||||
String::ucompose( _("path: %1"), new_partition .get_path() ) + "\n" +
|
String::ucompose( _("path: %1"), new_partition .get_path() ) + "\n" +
|
||||||
String::ucompose( _("start: %1"), new_partition .sector_start ) + "\n" +
|
String::ucompose( _("start: %1"), new_partition .sector_start ) + "\n" +
|
||||||
String::ucompose( _("end: %1"), new_partition .sector_end ) + "\n" +
|
String::ucompose( _("end: %1"), new_partition .sector_end ) + "\n" +
|
||||||
String::ucompose( _("size: %1"), Utils::format_size( new_partition .get_length() ) ) +
|
String::ucompose( _("size: %1 (%2)"),
|
||||||
|
new_partition .get_length(),
|
||||||
|
Utils::format_size( new_partition .get_length() ) ) +
|
||||||
"</i>",
|
"</i>",
|
||||||
OperationDetails::NONE ) ) ;
|
OperationDetails::NONE ) ) ;
|
||||||
}
|
}
|
||||||
|
@ -1080,25 +1082,25 @@ bool GParted_Core::resize_move( const Device & device,
|
||||||
|
|
||||||
//see if we need move or resize..
|
//see if we need move or resize..
|
||||||
if ( partition_new .sector_start == partition_old .sector_start )
|
if ( partition_new .sector_start == partition_old .sector_start )
|
||||||
return resize( device, partition_old, partition_new, operation_details ) ;
|
return resize( partition_old, partition_new, operation_details ) ;
|
||||||
else if ( partition_new .get_length() > partition_old .get_length() )
|
else if ( partition_new .get_length() > partition_old .get_length() )
|
||||||
{
|
{
|
||||||
//first move, then grow...
|
//first move, then grow...
|
||||||
Partition temp = partition_new ;
|
Partition temp = partition_new ;
|
||||||
temp .sector_end = temp .sector_start + partition_old .get_length() ;
|
temp .sector_end = temp .sector_start + partition_old .get_length() -1 ;
|
||||||
|
|
||||||
return calculate_exact_geom( partition_old, temp, operation_details, temp .get_length() ) &&
|
return calculate_exact_geom( partition_old, temp, operation_details, temp .get_length() ) &&
|
||||||
move( device, partition_old, temp, operation_details ) &&
|
move( device, partition_old, temp, operation_details ) &&
|
||||||
resize( device, temp, partition_new, operation_details ) ;
|
resize( temp, partition_new, operation_details ) ;
|
||||||
}
|
}
|
||||||
else if ( partition_new .get_length() < partition_old .get_length() )
|
else if ( partition_new .get_length() < partition_old .get_length() )
|
||||||
{
|
{
|
||||||
//first shrink, then move..
|
//first shrink, then move..
|
||||||
Partition temp = partition_old ;
|
Partition temp = partition_old ;
|
||||||
temp .sector_end = partition_old .sector_start + partition_new .get_length() ;
|
temp .sector_end = partition_old .sector_start + partition_new .get_length() -1 ;
|
||||||
|
|
||||||
return calculate_exact_geom( partition_old, temp, operation_details ) &&
|
return calculate_exact_geom( partition_old, temp, operation_details ) &&
|
||||||
resize( device, partition_old, temp, operation_details ) &&
|
resize( partition_old, temp, operation_details ) &&
|
||||||
calculate_exact_geom( temp, partition_new, operation_details, temp .get_length() ) &&
|
calculate_exact_geom( temp, partition_new, operation_details, temp .get_length() ) &&
|
||||||
move( device, temp, partition_new, operation_details ) ;
|
move( device, temp, partition_new, operation_details ) ;
|
||||||
}
|
}
|
||||||
|
@ -1355,8 +1357,7 @@ bool GParted_Core::resize_move_filesystem_using_libparted( const Partition & par
|
||||||
return return_value ;
|
return return_value ;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GParted_Core::resize( const Device & device,
|
bool GParted_Core::resize( const Partition & partition_old,
|
||||||
const Partition & partition_old,
|
|
||||||
const Partition & partition_new,
|
const Partition & partition_new,
|
||||||
std::vector<OperationDetails> & operation_details )
|
std::vector<OperationDetails> & operation_details )
|
||||||
{
|
{
|
||||||
|
@ -1365,11 +1366,8 @@ bool GParted_Core::resize( const Device & device,
|
||||||
{
|
{
|
||||||
succes = true ;
|
succes = true ;
|
||||||
|
|
||||||
//FIXME, find another way to resolve this cylsize problem...
|
|
||||||
//i think we don't need cylsize here anymore.. now partition_new is _exact_ we don't have to buffer
|
|
||||||
//for security.
|
|
||||||
if ( succes && partition_new .get_length() < partition_old .get_length() )
|
if ( succes && partition_new .get_length() < partition_old .get_length() )
|
||||||
succes = resize_filesystem( partition_old, partition_new, operation_details, device .cylsize ) ;
|
succes = resize_filesystem( partition_old, partition_new, operation_details ) ;
|
||||||
|
|
||||||
if ( succes )
|
if ( succes )
|
||||||
succes = resize_move_partition(
|
succes = resize_move_partition(
|
||||||
|
@ -1385,9 +1383,6 @@ bool GParted_Core::resize( const Device & device,
|
||||||
if ( ! maximize_filesystem( partition_new, operation_details ) )
|
if ( ! maximize_filesystem( partition_new, operation_details ) )
|
||||||
succes = false ;
|
succes = false ;
|
||||||
|
|
||||||
if ( ! check_repair( partition_new, operation_details ) )
|
|
||||||
succes = false ;
|
|
||||||
|
|
||||||
return succes ;
|
return succes ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1478,7 +1473,9 @@ bool GParted_Core::resize_move_partition( const Partition & partition_old,
|
||||||
"<i>" +
|
"<i>" +
|
||||||
String::ucompose( _("old start: %1"), partition_old .sector_start ) + "\n" +
|
String::ucompose( _("old start: %1"), partition_old .sector_start ) + "\n" +
|
||||||
String::ucompose( _("old end: %1"), partition_old .sector_end ) + "\n" +
|
String::ucompose( _("old end: %1"), partition_old .sector_end ) + "\n" +
|
||||||
String::ucompose( _("old size: %1"), Utils::format_size( partition_old .get_length() ) ) +
|
String::ucompose( _("old size: %1 (%2)"),
|
||||||
|
partition_old .get_length(),
|
||||||
|
Utils::format_size( partition_old .get_length() ) ) +
|
||||||
"</i>",
|
"</i>",
|
||||||
OperationDetails::NONE ) ) ;
|
OperationDetails::NONE ) ) ;
|
||||||
|
|
||||||
|
@ -1528,7 +1525,9 @@ bool GParted_Core::resize_move_partition( const Partition & partition_old,
|
||||||
"<i>" +
|
"<i>" +
|
||||||
String::ucompose( _("new start: %1"), lp_partition ->geom .start ) + "\n" +
|
String::ucompose( _("new start: %1"), lp_partition ->geom .start ) + "\n" +
|
||||||
String::ucompose( _("new end: %1"), lp_partition ->geom .end ) + "\n" +
|
String::ucompose( _("new end: %1"), lp_partition ->geom .end ) + "\n" +
|
||||||
String::ucompose( _("new size: %1"), Utils::format_size( lp_partition ->geom .length ) ) +
|
String::ucompose( _("new size: %1 (%2)"),
|
||||||
|
lp_partition ->geom .length,
|
||||||
|
Utils::format_size( lp_partition ->geom .length ) ) +
|
||||||
"</i>",
|
"</i>",
|
||||||
OperationDetails::NONE ) ) ;
|
OperationDetails::NONE ) ) ;
|
||||||
}
|
}
|
||||||
|
@ -1549,11 +1548,10 @@ bool GParted_Core::resize_move_partition( const Partition & partition_old,
|
||||||
return return_value ;
|
return return_value ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GParted_Core::resize_filesystem( const Partition & partition_old,
|
bool GParted_Core::resize_filesystem( const Partition & partition_old,
|
||||||
const Partition & partition_new,
|
const Partition & partition_new,
|
||||||
std::vector<OperationDetails> & operation_details,
|
std::vector<OperationDetails> & operation_details,
|
||||||
Sector cylinder_size,
|
|
||||||
bool fill_partition )
|
bool fill_partition )
|
||||||
{
|
{
|
||||||
//by default 'grow' to accomodate expand_filesystem()
|
//by default 'grow' to accomodate expand_filesystem()
|
||||||
|
@ -1593,7 +1591,7 @@ bool GParted_Core::resize_filesystem( const Partition & partition_old,
|
||||||
operation_details .back() .sub_details ) ;
|
operation_details .back() .sub_details ) ;
|
||||||
break ;
|
break ;
|
||||||
case GParted::FS::EXTERNAL:
|
case GParted::FS::EXTERNAL:
|
||||||
set_proper_filesystem( partition_new .filesystem, cylinder_size ) ;
|
set_proper_filesystem( partition_new .filesystem ) ;
|
||||||
succes = ( p_filesystem &&
|
succes = ( p_filesystem &&
|
||||||
p_filesystem ->Resize( partition_new,
|
p_filesystem ->Resize( partition_new,
|
||||||
operation_details .back() .sub_details,
|
operation_details .back() .sub_details,
|
||||||
|
@ -1623,7 +1621,7 @@ bool GParted_Core::maximize_filesystem( const Partition & partition,
|
||||||
return true ;
|
return true ;
|
||||||
}
|
}
|
||||||
|
|
||||||
return resize_filesystem( partition, partition, operation_details, 0, true ) ;
|
return resize_filesystem( partition, partition, operation_details, true ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GParted_Core::copy( const Partition & partition_src,
|
bool GParted_Core::copy( const Partition & partition_src,
|
||||||
|
@ -1910,7 +1908,9 @@ bool GParted_Core::calculate_exact_geom( const Partition & partition_old,
|
||||||
"<i>" +
|
"<i>" +
|
||||||
String::ucompose( _("requested start: %1"), partition_new .sector_start ) + "\n" +
|
String::ucompose( _("requested start: %1"), partition_new .sector_start ) + "\n" +
|
||||||
String::ucompose( _("requested end: %1"), partition_new .sector_end ) + "\n" +
|
String::ucompose( _("requested end: %1"), partition_new .sector_end ) + "\n" +
|
||||||
String::ucompose( _("requested size: %1"), Utils::format_size( partition_new .get_length() ) ) +
|
String::ucompose( _("requested size: %1 (%2)"),
|
||||||
|
partition_new .get_length(),
|
||||||
|
Utils::format_size( partition_new .get_length() ) ) +
|
||||||
"</i>",
|
"</i>",
|
||||||
OperationDetails::NONE ) ) ;
|
OperationDetails::NONE ) ) ;
|
||||||
|
|
||||||
|
@ -1965,7 +1965,9 @@ bool GParted_Core::calculate_exact_geom( const Partition & partition_old,
|
||||||
"<i>" +
|
"<i>" +
|
||||||
String::ucompose( _("new start: %1"), partition_new .sector_start ) + "\n" +
|
String::ucompose( _("new start: %1"), partition_new .sector_start ) + "\n" +
|
||||||
String::ucompose( _("new end: %1"), partition_new .sector_end ) + "\n" +
|
String::ucompose( _("new end: %1"), partition_new .sector_end ) + "\n" +
|
||||||
String::ucompose( _("new size: %1"), Utils::format_size( partition_new .get_length() ) ) +
|
String::ucompose( _("new size: %1 (%2)"),
|
||||||
|
partition_new .get_length(),
|
||||||
|
Utils::format_size( partition_new .get_length() ) ) +
|
||||||
"</i>",
|
"</i>",
|
||||||
OperationDetails::NONE ) ) ;
|
OperationDetails::NONE ) ) ;
|
||||||
}
|
}
|
||||||
|
@ -1977,7 +1979,7 @@ bool GParted_Core::calculate_exact_geom( const Partition & partition_old,
|
||||||
return succes ;
|
return succes ;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GParted_Core::set_proper_filesystem( const FILESYSTEM & filesystem, Sector cylinder_size )
|
void GParted_Core::set_proper_filesystem( const FILESYSTEM & filesystem )
|
||||||
{
|
{
|
||||||
if ( p_filesystem )
|
if ( p_filesystem )
|
||||||
delete p_filesystem ;
|
delete p_filesystem ;
|
||||||
|
@ -2000,9 +2002,6 @@ void GParted_Core::set_proper_filesystem( const FILESYSTEM & filesystem, Sector
|
||||||
|
|
||||||
default : p_filesystem = NULL ;
|
default : p_filesystem = NULL ;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( p_filesystem )
|
|
||||||
p_filesystem ->cylinder_size = cylinder_size ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GParted_Core::wait_for_node( const Glib::ustring & node )
|
bool GParted_Core::wait_for_node( const Glib::ustring & node )
|
||||||
|
|
|
@ -85,7 +85,7 @@ bool ext2::Resize( const Partition & partition_new,
|
||||||
|
|
||||||
if ( ! fill_partition )
|
if ( ! fill_partition )
|
||||||
str_temp += " " + Utils::num_to_str( Utils::round( Utils::sector_to_unit(
|
str_temp += " " + Utils::num_to_str( Utils::round( Utils::sector_to_unit(
|
||||||
partition_new .get_length() - cylinder_size, GParted::UNIT_MIB ) ), true ) + "M" ;
|
partition_new .get_length(), GParted::UNIT_KIB ) ) -1, true ) + "K" ;
|
||||||
|
|
||||||
return ! execute_command( str_temp, operation_details ) ;
|
return ! execute_command( str_temp, operation_details ) ;
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,7 +86,7 @@ bool ext3::Resize( const Partition & partition_new,
|
||||||
|
|
||||||
if ( ! fill_partition )
|
if ( ! fill_partition )
|
||||||
str_temp += " " + Utils::num_to_str( Utils::round( Utils::sector_to_unit(
|
str_temp += " " + Utils::num_to_str( Utils::round( Utils::sector_to_unit(
|
||||||
partition_new .get_length() - cylinder_size, GParted::UNIT_MIB ) ), true ) + "M" ;
|
partition_new .get_length(), GParted::UNIT_KIB ) ) -1, true ) + "K" ;
|
||||||
|
|
||||||
return ! execute_command( str_temp, operation_details ) ;
|
return ! execute_command( str_temp, operation_details ) ;
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,7 +86,7 @@ bool ntfs::Resize( const Partition & partition_new,
|
||||||
{
|
{
|
||||||
str_temp += " -s " ;
|
str_temp += " -s " ;
|
||||||
str_temp += Utils::num_to_str( Utils::round( Utils::sector_to_unit(
|
str_temp += Utils::num_to_str( Utils::round( Utils::sector_to_unit(
|
||||||
partition_new .get_length() - cylinder_size, GParted::UNIT_BYTE ) ), true ) ;
|
partition_new .get_length(), GParted::UNIT_BYTE ) ) -1, true ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
//simulation..
|
//simulation..
|
||||||
|
|
|
@ -91,7 +91,7 @@ bool reiserfs::Resize( const Partition & partition_new,
|
||||||
{
|
{
|
||||||
str_temp += " -s " ;
|
str_temp += " -s " ;
|
||||||
str_temp += Utils::num_to_str( Utils::round( Utils::sector_to_unit(
|
str_temp += Utils::num_to_str( Utils::round( Utils::sector_to_unit(
|
||||||
partition_new .get_length() - cylinder_size, GParted::UNIT_BYTE ) ), true ) ;
|
partition_new .get_length(), GParted::UNIT_BYTE ) ) -1, true ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
exit_status = execute_command( str_temp, operation_details ) ;
|
exit_status = execute_command( str_temp, operation_details ) ;
|
||||||
|
|
Loading…
Reference in New Issue