diff options
author | Richard W.M. Jones <rjones@redhat.com> | 2011-07-14 11:39:11 +0100 |
---|---|---|
committer | Richard W.M. Jones <rjones@redhat.com> | 2011-07-14 13:03:49 +0100 |
commit | f2d816573ffba9c5a2022ac5b3b6514eaf02d0f7 (patch) | |
tree | ec49977e35d238a1a4baf7e35c0da54a2b3e33d4 /resize/resize.ml | |
parent | a001a0d710ec61d8bc11841f44ac0d1f296040ea (diff) | |
download | libguestfs-f2d816573ffba9c5a2022ac5b3b6514eaf02d0f7.tar.gz libguestfs-f2d816573ffba9c5a2022ac5b3b6514eaf02d0f7.tar.xz libguestfs-f2d816573ffba9c5a2022ac5b3b6514eaf02d0f7.zip |
resize: Add btrfs support to virt-resize (RHBZ#721275).
Diffstat (limited to 'resize/resize.ml')
-rw-r--r-- | resize/resize.ml | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/resize/resize.ml b/resize/resize.ml index 8e7057c6..d4455eb2 100644 --- a/resize/resize.ml +++ b/resize/resize.ml @@ -144,8 +144,9 @@ read the man page virt-resize(1). lv_expands, ntfsresize_force, output_format, quiet, resizes, resizes_force, shrink -(* Default to true, since NTFS support is usually available. *) +(* Default to true, since NTFS and btrfs support are usually available. *) let ntfs_available = ref true +let btrfs_available = ref true (* Add in and out disks to the handle and launch. *) let connect_both_disks () = @@ -163,6 +164,7 @@ let connect_both_disks () = (* Update features available in the daemon. *) ntfs_available := feature_available g [|"ntfsprogs"; "ntfs3g"|]; + btrfs_available := feature_available g [|"btrfs"|]; g @@ -373,12 +375,14 @@ let lvs = (* These functions tell us if we know how to expand the content of * a particular partition or LV, and what method to use. *) -type expand_content_method = PVResize | Resize2fs | NTFSResize +type expand_content_method = + | PVResize | Resize2fs | NTFSResize | BtrfsFilesystemResize let string_of_expand_content_method = function | PVResize -> "pvresize" | Resize2fs -> "resize2fs" | NTFSResize -> "ntfsresize" + | BtrfsFilesystemResize -> "btrfs-filesystem-resize" let can_expand_content = if expand_content then @@ -387,6 +391,7 @@ let can_expand_content = | ContentPV _ -> true | ContentFS (("ext2"|"ext3"|"ext4"), _) -> true | ContentFS (("ntfs"), _) when !ntfs_available -> true + | ContentFS (("btrfs"), _) when !btrfs_available -> true | ContentFS (_, _) -> false else fun _ -> false @@ -398,6 +403,7 @@ let expand_content_method = | ContentPV _ -> PVResize | ContentFS (("ext2"|"ext3"|"ext4"), _) -> Resize2fs | ContentFS (("ntfs"), _) when !ntfs_available -> NTFSResize + | ContentFS (("btrfs"), _) when !btrfs_available -> BtrfsFilesystemResize | ContentFS (_, _) -> assert false else fun _ -> assert false @@ -920,6 +926,14 @@ let () = g#e2fsck_f target; g#resize2fs target | NTFSResize -> g#ntfsresize_opts ~force:ntfsresize_force target + | BtrfsFilesystemResize -> + (* Complicated ... Btrfs forces us to mount the filesystem + * in order to resize it. + *) + assert (Array.length (g#mounts ()) = 0); + g#mount_options "" target "/"; + g#btrfs_filesystem_resize "/"; + g#umount "/" in (* Expand partition content as required. *) |