[gparted] Don't ignore any errors resizing btrfs on Linux >= 3.2 (#669389)
- From: Curtis Gedak <gedakc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gparted] Don't ignore any errors resizing btrfs on Linux >= 3.2 (#669389)
- Date: Fri, 10 Feb 2012 19:52:30 +0000 (UTC)
commit 11d044dba0c07a5c51843beec6ff38f0c55303d8
Author: Mike Fleetwood <mike fleetwood googlemail com>
Date: Sun Feb 5 09:08:05 2012 +0000
Don't ignore any errors resizing btrfs on Linux >= 3.2 (#669389)
Btrfs file system can be successfully resized to the same size without
failing on Linux 3.2 or higher.
Linux 3.2-rc4 includes commit:
35bae54a255fbf3eab747b842d300d59f6e1abb4
Btrfs: Don't error on resizing FS to same size
Closes bug #669389
src/btrfs.cc | 42 ++++++++++++++++++++++++++----------------
1 files changed, 26 insertions(+), 16 deletions(-)
---
diff --git a/src/btrfs.cc b/src/btrfs.cc
index 419190b..a0265f8 100644
--- a/src/btrfs.cc
+++ b/src/btrfs.cc
@@ -23,6 +23,7 @@ namespace GParted
{
bool btrfs_found = false ;
+bool resize_to_same_size_fails = true ;
FS btrfs::get_filesystem_support()
{
@@ -97,6 +98,10 @@ FS btrfs::get_filesystem_support()
fs .MIN = 256 * MEBIBYTE ;
+ //Linux before version 3.2 fails when resizing btrfs file system
+ // to the same size.
+ resize_to_same_size_fails = ! Utils::kernel_version_at_least( 3, 2, 0 ) ;
+
return fs ;
}
@@ -206,22 +211,27 @@ bool btrfs::resize( const Partition & partition_new, OperationDetail & operation
else
cmd = "btrfsctl -r " + size + " " + mount_point ;
exit_status = execute_command_timed( cmd, operationdetail, false ) ;
- //Resizing a btrfs file system to the same size results
- // in ioctl() returning -1 EINVAL (Invalid argument)
- // from the kernel btrfs code.
- // * Btrfs filesystem resize reports this as exit
- // status 30:
- // ERROR: Unable to resize '/MOUNTPOINT'
- // * Btrfsctl -r reports this as exit status 1:
- // ioctl:: Invalid argument
- // WARNING:
- // Ignoring these errors could mask real failures, but
- // not ignoring them will cause resizing to the same
- // size as part of check operation to fail.
- bool resize_succeeded = ( exit_status == 0
- || ( btrfs_found && exit_status == 30<<8 )
- || ( ! btrfs_found && exit_status == 1<<8 )
- ) ;
+ bool resize_succeeded = ( exit_status == 0 ) ;
+ if ( resize_to_same_size_fails )
+ {
+ //Linux before version 3.2 fails when resizing a
+ // btrfs file system to the same size with ioctl()
+ // returning -1 EINVAL (Invalid argument) from the
+ // kernel btrfs code.
+ // * Btrfs filesystem resize reports this as exit
+ // status 30:
+ // ERROR: Unable to resize '/MOUNTPOINT'
+ // * Btrfsctl -r reports this as exit status 1:
+ // ioctl:: Invalid argument
+ // WARNING:
+ // Ignoring these errors could mask real failures,
+ // but not ignoring them will cause resizing to the
+ // same size as part of check operation to fail.
+ resize_succeeded = ( exit_status == 0
+ || ( btrfs_found && exit_status == 30<<8 )
+ || ( ! btrfs_found && exit_status == 1<<8 )
+ ) ;
+ }
operationdetail .get_last_child() .set_status( resize_succeeded ? STATUS_SUCCES : STATUS_ERROR ) ;
success &= resize_succeeded ;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]