summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Propellor/Property/Lvm.hs16
-rw-r--r--src/Propellor/Property/Partition.hs14
2 files changed, 16 insertions, 14 deletions
diff --git a/src/Propellor/Property/Lvm.hs b/src/Propellor/Property/Lvm.hs
index e1f3b934..c5d215bc 100644
--- a/src/Propellor/Property/Lvm.hs
+++ b/src/Propellor/Property/Lvm.hs
@@ -142,27 +142,15 @@ lvState lv = do
then return Nothing
else do
s <- readLvSize
- fs <- readFs
+ fs <- maybe Nothing (Partition.parseFs . takeWhile (/= '\n')) <$> readFs
return $ do
size <- s
- return $ LvState size $ parseFs $
- takeWhile (/= '\n') <$> fs
+ return $ LvState size fs
where
readLvSize = catchDefaultIO Nothing $ readish
<$> readProcess "lvs" [ "-o", "size", "--noheadings",
"--nosuffix", "--units", "b", vglv lv ]
readFs = Mount.blkidTag "TYPE" (path lv)
- parseFs (Just "ext2") = Just Partition.EXT2
- parseFs (Just "ext3") = Just Partition.EXT3
- parseFs (Just "ext4") = Just Partition.EXT4
- parseFs (Just "btrfs") = Just Partition.BTRFS
- parseFs (Just "reiserfs") = Just Partition.REISERFS
- parseFs (Just "xfs") = Just Partition.XFS
- parseFs (Just "fat") = Just Partition.FAT
- parseFs (Just "vfat") = Just Partition.VFAT
- parseFs (Just "ntfs") = Just Partition.NTFS
- parseFs (Just "swap") = Just Partition.LinuxSwap
- parseFs _ = Nothing
-- Read extent size (or Nothing on error).
vgExtentSize :: VolumeGroup -> IO (Maybe Integer)
diff --git a/src/Propellor/Property/Partition.hs b/src/Propellor/Property/Partition.hs
index 679675b7..27ae89ff 100644
--- a/src/Propellor/Property/Partition.hs
+++ b/src/Propellor/Property/Partition.hs
@@ -15,6 +15,20 @@ import Data.Char
data Fs = EXT2 | EXT3 | EXT4 | BTRFS | REISERFS | XFS | FAT | VFAT | NTFS | LinuxSwap
deriving (Show, Eq)
+-- | Parse commonly used names of filesystems.
+parseFs :: String -> Maybe Fs
+parseFs "ext2" = Just EXT2
+parseFs "ext3" = Just EXT3
+parseFs "ext4" = Just EXT4
+parseFs "btrfs" = Just BTRFS
+parseFs "reiserfs" = Just REISERFS
+parseFs "xfs" = Just XFS
+parseFs "fat" = Just FAT
+parseFs "vfat" = Just VFAT
+parseFs "ntfs" = Just NTFS
+parseFs "swap" = Just LinuxSwap
+parseFs _ = Nothing
+
data Eep = YesReallyFormatPartition
-- | Formats a partition.