fixed nasty error with resizing 'fixed-start filesystems'. added a check
* include/GParted_Core.h, src/GParted_Core.cc: fixed nasty error with resizing 'fixed-start filesystems'. * src/Partition.cc: added a check to prevent unused space from being bigger then total space. * src/ntfs.cc: removed -Q from mkntfs. -Q bypassed some safetychecks to gain performance and (so i heard later) also had a tendency of failing ;) (Adrighem)
This commit is contained in:
parent
b189e385f1
commit
e71d5c5887
|
@ -1,3 +1,11 @@
|
||||||
|
2004-11-24 Bart Hakvoort <gparted@users.sf.net>
|
||||||
|
|
||||||
|
* include/GParted_Core.h,
|
||||||
|
src/GParted_Core.cc: fixed nasty error with resizing 'fixed-start filesystems'.
|
||||||
|
* src/Partition.cc: added a check to prevent unused space from being bigger then total space.
|
||||||
|
* src/ntfs.cc: removed -Q from mkntfs. -Q bypassed some safetychecks to gain performance and (so i heard later) also had a
|
||||||
|
tendency of failing ;) (Adrighem)
|
||||||
|
|
||||||
2004-11-23 Bart Hakvoort <gparted@users.sf.net>
|
2004-11-23 Bart Hakvoort <gparted@users.sf.net>
|
||||||
|
|
||||||
* src/Dialog_Partition_New.cc,
|
* src/Dialog_Partition_New.cc,
|
||||||
|
|
|
@ -61,7 +61,7 @@ private:
|
||||||
void Set_Used_Sectors( Partition & partition );
|
void Set_Used_Sectors( Partition & partition );
|
||||||
Glib::ustring Get_Flags( PedPartition *c_partition ) ;
|
Glib::ustring Get_Flags( PedPartition *c_partition ) ;
|
||||||
int Create_Empty_Partition( const Glib::ustring & device_path, Partition & new_partition, bool copy = false ) ;
|
int Create_Empty_Partition( const Glib::ustring & device_path, Partition & new_partition, bool copy = false ) ;
|
||||||
bool Resize_Container_Partition( const Glib::ustring & device_path, const Partition & partition_old, const Partition & partition_new ) ;
|
bool Resize_Container_Partition( const Glib::ustring & device_path, const Partition & partition_old, const Partition & partition_new, bool fixed_start = true ) ;
|
||||||
bool Resize_Normal_Using_Libparted( const Glib::ustring & device_path, const Partition & partition_old, const Partition & partition_new ) ;
|
bool Resize_Normal_Using_Libparted( const Glib::ustring & device_path, const Partition & partition_old, const Partition & partition_new ) ;
|
||||||
|
|
||||||
void Show_Error( Glib::ustring message ) ;
|
void Show_Error( Glib::ustring message ) ;
|
||||||
|
|
|
@ -307,6 +307,8 @@ bool GParted_Core::Delete( const Glib::ustring & device_path, const Partition &
|
||||||
|
|
||||||
return_value = ( ped_disk_delete_partition( disk, c_partition ) && Commit( disk ) ) ;
|
return_value = ( ped_disk_delete_partition( disk, c_partition ) && Commit( disk ) ) ;
|
||||||
close_device_and_disk( device, disk ) ;
|
close_device_and_disk( device, disk ) ;
|
||||||
|
|
||||||
|
sleep( 1 ) ;//paranoia give the OS some time to update nodes in /dev
|
||||||
}
|
}
|
||||||
|
|
||||||
return return_value ;
|
return return_value ;
|
||||||
|
@ -315,7 +317,7 @@ bool GParted_Core::Delete( const Glib::ustring & device_path, const Partition &
|
||||||
bool GParted_Core::Resize( const Glib::ustring & device_path, const Partition & partition_old, const Partition & partition_new )
|
bool GParted_Core::Resize( const Glib::ustring & device_path, const Partition & partition_old, const Partition & partition_new )
|
||||||
{
|
{
|
||||||
if ( partition_old .type == GParted::EXTENDED )
|
if ( partition_old .type == GParted::EXTENDED )
|
||||||
return Resize_Container_Partition( device_path, partition_old, partition_new ) ;
|
return Resize_Container_Partition( device_path, partition_old, partition_new, false ) ;
|
||||||
|
|
||||||
//these 3 still use libparted's resizer.
|
//these 3 still use libparted's resizer.
|
||||||
else if ( partition_old .filesystem == "linux-swap" ||
|
else if ( partition_old .filesystem == "linux-swap" ||
|
||||||
|
@ -484,7 +486,7 @@ int GParted_Core::Create_Empty_Partition( const Glib::ustring & device_path, Par
|
||||||
return new_partition .partition_number ;
|
return new_partition .partition_number ;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GParted_Core::Resize_Container_Partition( const Glib::ustring & device_path, const Partition & partition_old, const Partition & partition_new )
|
bool GParted_Core::Resize_Container_Partition( const Glib::ustring & device_path, const Partition & partition_old, const Partition & partition_new, bool fixed_start )
|
||||||
{
|
{
|
||||||
bool return_value = false ;
|
bool return_value = false ;
|
||||||
|
|
||||||
|
@ -501,6 +503,17 @@ bool GParted_Core::Resize_Container_Partition( const Glib::ustring & device_path
|
||||||
if ( c_partition )
|
if ( c_partition )
|
||||||
{
|
{
|
||||||
constraint = ped_constraint_any( device );
|
constraint = ped_constraint_any( device );
|
||||||
|
|
||||||
|
if ( fixed_start && constraint ) //create a constraint which keeps de startpoint intact and rounds the end to a cylinderboundary
|
||||||
|
{
|
||||||
|
ped_disk_set_partition_geom ( disk, c_partition, constraint, partition_new .sector_start, partition_new .sector_end ) ;
|
||||||
|
ped_constraint_destroy ( constraint );
|
||||||
|
constraint = NULL ;
|
||||||
|
|
||||||
|
ped_geometry_set_start ( & c_partition ->geom, partition_new .sector_start ) ;
|
||||||
|
constraint = ped_constraint_exact ( & c_partition ->geom ) ;
|
||||||
|
}
|
||||||
|
|
||||||
if ( constraint )
|
if ( constraint )
|
||||||
{
|
{
|
||||||
if ( ped_disk_set_partition_geom ( disk, c_partition, constraint, partition_new .sector_start, partition_new .sector_end ) )
|
if ( ped_disk_set_partition_geom ( disk, c_partition, constraint, partition_new .sector_start, partition_new .sector_end ) )
|
||||||
|
|
|
@ -31,7 +31,7 @@ void Partition::Reset( )
|
||||||
status = GParted::STAT_REAL ;
|
status = GParted::STAT_REAL ;
|
||||||
type = GParted::UNALLOCATED ;
|
type = GParted::UNALLOCATED ;
|
||||||
partition_number = sector_start = sector_end = sectors_used = sectors_unused = -1;
|
partition_number = sector_start = sector_end = sectors_used = sectors_unused = -1;
|
||||||
color.set( "black" ) ;
|
color .set( "black" ) ;
|
||||||
inside_extended = busy = false ;
|
inside_extended = busy = false ;
|
||||||
logicals .clear( ) ;
|
logicals .clear( ) ;
|
||||||
}
|
}
|
||||||
|
@ -58,8 +58,11 @@ void Partition::Set( const Glib::ustring & partition,
|
||||||
|
|
||||||
void Partition::Set_Unused( Sector sectors_unused )
|
void Partition::Set_Unused( Sector sectors_unused )
|
||||||
{
|
{
|
||||||
this ->sectors_unused = sectors_unused ;
|
if ( sectors_unused < ( sector_end - sector_start ) )
|
||||||
this ->sectors_used = ( sectors_unused == -1 ) ? -1 : ( sector_end - sector_start) - sectors_unused ;
|
{
|
||||||
|
this ->sectors_unused = sectors_unused ;
|
||||||
|
this ->sectors_used = ( sectors_unused == -1 ) ? -1 : ( sector_end - sector_start) - sectors_unused ;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Partition::Set_Unallocated( Sector sector_start, Sector sector_end, bool inside_extended )
|
void Partition::Set_Unallocated( Sector sector_start, Sector sector_end, bool inside_extended )
|
||||||
|
|
|
@ -72,7 +72,7 @@ void ntfs::Set_Used_Sectors( Partition & partition )
|
||||||
|
|
||||||
bool ntfs::Create( const Glib::ustring device_path, const Partition & new_partition )
|
bool ntfs::Create( const Glib::ustring device_path, const Partition & new_partition )
|
||||||
{
|
{
|
||||||
return Execute_Command( "mkntfs -Q " + new_partition .partition ) ;
|
return Execute_Command( "mkntfs " + new_partition .partition ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ntfs::Resize( const Partition & partition_new, bool fill_partition )
|
bool ntfs::Resize( const Partition & partition_new, bool fill_partition )
|
||||||
|
|
Loading…
Reference in New Issue