diff options
| author | Nicolas Schodet <nico@ni.fr.eu.org> | 2017-09-01 23:32:36 +0200 |
|---|---|---|
| committer | Nicolas Schodet <nico@ni.fr.eu.org> | 2017-09-01 23:33:24 +0200 |
| commit | 2ecd58717ff1ab145b3ec6abea0513b283990734 (patch) | |
| tree | 940c34610ff756cdfb80f7def5f9e6c41a5ead5a | |
| parent | 1b5c0b6c95283f73f13da36e578e96721d61da38 (diff) | |
Lvm: split size parsing and rounding
| -rw-r--r-- | src/Propellor/Property/Lvm.hs | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/Propellor/Property/Lvm.hs b/src/Propellor/Property/Lvm.hs index e48b206a..360595c7 100644 --- a/src/Propellor/Property/Lvm.hs +++ b/src/Propellor/Property/Lvm.hs @@ -55,13 +55,14 @@ lvFormatted YesReallyFormatLogicalVolume lv sz fs = $ "can not get extent size, does volume group " ++ vgname ++ " exists?" Just extentSize -> do - case parseSize extentSize of + case parseSize of Nothing -> errorMessage $ "can not parse volume group size" Just size -> do state <- liftIO $ lvState lv + let rsize = roundSize extentSize size ensureProperty w - $ setupprop size state + $ setupprop rsize state cleanup :: Property UnixLike cleanup = property' ("removed logical volume " ++ (vglv lv)) $ \w -> do @@ -70,11 +71,14 @@ lvFormatted YesReallyFormatLogicalVolume lv sz fs = then removedprop else doNothing - -- Parse size and round to next extent size multiple. - parseSize :: Integer -> Maybe Integer - parseSize extentSize = do - s <- readSize dataUnits sz - return $ (s + extentSize - 1) `div` extentSize * extentSize + -- Parse size. + parseSize :: Maybe Integer + parseSize = readSize dataUnits sz + + -- Round size to next extent size multiple. + roundSize :: Integer -> Integer -> Integer + roundSize extentSize s = + (s + extentSize - 1) `div` extentSize * extentSize -- Dispatch to the right props. setupprop :: Integer -> (Maybe LvState) -> Property DebianLike |
