From 32ba44edfa5cd4424154396b877cd5ad75e8c999 Mon Sep 17 00:00:00 2001
From: Vratislav Podzimek <vpodzime@redhat.com>
Date: Tue, 22 Nov 2016 08:52:34 +0100
Subject: [PATCH 2/2] Do not run FS check as part of updating (re)size info
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

If the FS tools tell us the minimum size of the file system we are supposed to
(see rhbz#1170803) consider that an evidence of the file system being in a good
enough shape to be resized.

Resolves: rhbz#1170803
---
 blivet/formats/fs.py | 44 ++++++++++++++++++--------------------------
 1 file changed, 18 insertions(+), 26 deletions(-)

diff --git a/blivet/formats/fs.py b/blivet/formats/fs.py
index 203926e..100bfce 100644
--- a/blivet/formats/fs.py
+++ b/blivet/formats/fs.py
@@ -296,8 +296,6 @@ class FS(DeviceFormat):
         """ Update this filesystem's current and minimum size (for resize). """
 
         #   This method ensures:
-        #   * If there are fsck errors, self._resizable is False.
-        #       Note that if there is no fsck program, no errors are possible.
         #   * If it is not possible to obtain the current size of the
         #       filesystem by interrogating the filesystem, self._resizable
         #       is False (and self._size is 0).
@@ -317,32 +315,26 @@ class FS(DeviceFormat):
         self._min_instance_size = Size(0)
         self._resizable = self.__class__._resizable
 
-        # We can't allow resize if the filesystem has errors.
+        # try to gather current size info
+        self._size = Size(0)
         try:
-            self.do_check()
-        except FSError:
+            if self._info.available:
+                self._current_info = self._info.do_task()
+        except FSError as e:
+            log.info("Failed to obtain info for device %s: %s", self.device, e)
+        try:
+            self._size = self._size_info.do_task()
+        except (FSError, NotImplementedError) as e:
+            log.warning("Failed to obtain current size for device %s: %s", self.device, e)
+        else:
+            self._min_instance_size = self._size
+
+        # We absolutely need a current size to enable resize. To shrink the
+        # filesystem we need a real minimum size provided by the resize
+        # tool. Failing that, we can default to the current size,
+        # effectively disabling shrink.
+        if self._size == Size(0):
             self._resizable = False
-            raise
-        finally:
-            # try to gather current size info anyway
-            self._size = Size(0)
-            try:
-                if self._info.available:
-                    self._current_info = self._info.do_task()
-            except FSError as e:
-                log.info("Failed to obtain info for device %s: %s", self.device, e)
-            try:
-                self._size = self._size_info.do_task()
-                self._min_instance_size = self._size
-            except (FSError, NotImplementedError) as e:
-                log.warning("Failed to obtain current size for device %s: %s", self.device, e)
-
-            # We absolutely need a current size to enable resize. To shrink the
-            # filesystem we need a real minimum size provided by the resize
-            # tool. Failing that, we can default to the current size,
-            # effectively disabling shrink.
-            if self._size == Size(0):
-                self._resizable = False
 
         try:
             result = self._minsize.do_task()
-- 
2.7.5

