git.annexia.org
/
libguestfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
guestfs.h: Add missing extern keyword before event functions.
[libguestfs.git]
/
resize
/
resize.ml
diff --git
a/resize/resize.ml
b/resize/resize.ml
index
8e7057c
..
d4455eb
100644
(file)
--- 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
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 ntfs_available = ref true
+let btrfs_available = ref true
(* Add in and out disks to the handle and launch. *)
let connect_both_disks () =
(* 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"|];
(* Update features available in the daemon. *)
ntfs_available := feature_available g [|"ntfsprogs"; "ntfs3g"|];
+ btrfs_available := feature_available g [|"btrfs"|];
g
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.
*)
(* 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"
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
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
| ContentPV _ -> true
| ContentFS (("ext2"|"ext3"|"ext4"), _) -> true
| ContentFS (("ntfs"), _) when !ntfs_available -> true
+ | ContentFS (("btrfs"), _) when !btrfs_available -> true
| ContentFS (_, _) -> false
else
fun _ -> false
| 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
| 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
| 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
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. *)
in
(* Expand partition content as required. *)