From 9849e04550f0b5a5c96972bfbe0933c5d57ebbc6 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Thu, 6 Nov 2014 09:47:21 +0000 Subject: [PATCH] v2v: Ignore small filesystems when checking for sufficient free space. (cherry picked from commit 918dd3705d3d34f28eb3cf30cd79d16358d525e3) --- v2v/v2v.ml | 48 +++++++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/v2v/v2v.ml b/v2v/v2v.ml index 48fb8c6..8639482 100644 --- a/v2v/v2v.ml +++ b/v2v/v2v.ml @@ -542,27 +542,33 @@ and inspect_source g root_choice = *) and check_free_space mpstats = List.iter ( - fun { mp_path = mp; mp_statvfs = { G.bfree = bfree; bsize = bsize } } -> - (* bfree = free blocks for root user *) - let free_bytes = bfree *^ bsize in - let needed_bytes = - match mp with - | "/" -> - (* We may install some packages, and they would usually go - * on the root filesystem. - *) - 20_000_000L - | "/boot" -> - (* We usually regenerate the initramfs, which has a typical size - * of 20-30MB. Hence: - *) - 50_000_000L - | _ -> - (* For everything else, just make sure there is some free space. *) - 10_000_000L in - if free_bytes < needed_bytes then - error (f_"not enough free space for conversion on filesystem '%s'. %Ld bytes free < %Ld bytes needed") - mp free_bytes needed_bytes + fun { mp_path = mp; + mp_statvfs = { G.bfree = bfree; blocks = blocks; bsize = bsize } } -> + (* Ignore small filesystems. *) + let total_size = blocks *^ bsize in + if total_size > 100_000_000L then ( + (* bfree = free blocks for root user *) + let free_bytes = bfree *^ bsize in + let needed_bytes = + match mp with + | "/" -> + (* We may install some packages, and they would usually go + * on the root filesystem. + *) + 20_000_000L + | "/boot" -> + (* We usually regenerate the initramfs, which has a + * typical size of 20-30MB. Hence: + *) + 50_000_000L + | _ -> + (* For everything else, just make sure there is some free space. *) + 10_000_000L in + + if free_bytes < needed_bytes then + error (f_"not enough free space for conversion on filesystem '%s'. %Ld bytes free < %Ld bytes needed") + mp free_bytes needed_bytes + ) ) mpstats (* Perform the fstrim. The trimming bit is easy. Dealing with the -- 1.8.3.1