[PATCH blivet rhel7-branch] Add support for specifying arbitrary mkfs options.
Chris Lumens
clumens at redhat.com
Tue Jun 30 17:22:54 UTC 2015
While we have support for fsprofile, that is only supported by the
various ext* filesystems. We have no way to support passing options for
any of the other filesystems, including the default in RHEL.
Resolves: rhbz#1220898
---
blivet/formats/__init__.py | 19 +++++++++++++++----
blivet/formats/fs.py | 5 +++++
2 files changed, 20 insertions(+), 4 deletions(-)
diff --git a/blivet/formats/__init__.py b/blivet/formats/__init__.py
index 55fc626..01fdbb8 100644
--- a/blivet/formats/__init__.py
+++ b/blivet/formats/__init__.py
@@ -185,6 +185,7 @@ class DeviceFormat(ObjectID):
self.uuid = kwargs.get("uuid")
self.exists = kwargs.get("exists")
self.options = kwargs.get("options")
+ self._createOptions = kwargs.get("createOptions")
# don't worry about existence if this is a DeviceFormat instance
#if self.__class__ is DeviceFormat:
@@ -194,14 +195,16 @@ class DeviceFormat(ObjectID):
s = ("%(classname)s instance (%(id)s) object id %(object_id)d--\n"
" type = %(type)s name = %(name)s status = %(status)s\n"
" device = %(device)s uuid = %(uuid)s exists = %(exists)s\n"
- " options = %(options)s supported = %(supported)s"
+ " options = %(options)s\n"
+ " createOptions = %(createOptions)s supported = %(supported)s"
" formattable = %(format)s resizable = %(resize)s\n" %
{"classname": self.__class__.__name__, "id": "%#x" % id(self),
- "object_id": self.id,
+ "object_id": self.id, "createOptions": self.createOptions,
"type": self.type, "name": self.name, "status": self.status,
"device": self.device, "uuid": self.uuid, "exists": self.exists,
"options": self.options, "supported": self.supported,
- "format": self.formattable, "resize": self.resizable})
+ "format": self.formattable, "resize": self.resizable,
+ "createOptions": self.createOptions})
return s
@property
@@ -223,7 +226,7 @@ class DeviceFormat(ObjectID):
d = {"type": self.type, "name": self.name, "device": self.device,
"uuid": self.uuid, "exists": self.exists,
"options": self.options, "supported": self.supported,
- "resizable": self.resizable}
+ "resizable": self.resizable, "createOptions": self.createOptions}
return d
@classmethod
@@ -293,6 +296,14 @@ class DeviceFormat(ObjectID):
options = property(_getOptions, _setOptions)
+ def _setCreateOptions(self, options):
+ self._setupCreateOptions = options # pylint: disable=attribute-defined-outside-init
+
+ def _getCreateOptions(self):
+ return self._createOptions
+
+ createOptions = property(_getCreateOptions, _setCreateOptions)
+
def _setDevice(self, devspec):
if devspec and not devspec.startswith("/"):
raise ValueError("device must be a fully qualified path")
diff --git a/blivet/formats/fs.py b/blivet/formats/fs.py
index 6981a10..2784fbe 100644
--- a/blivet/formats/fs.py
+++ b/blivet/formats/fs.py
@@ -24,6 +24,7 @@
""" Filesystem classes. """
from decimal import Decimal
import os
+import shlex
import tempfile
from . import fslabeling
@@ -402,6 +403,9 @@ class FS(DeviceFormat):
else:
log.warning("Choosing not to apply label (%s) during creation of filesystem %s. Label format is unacceptable for this filesystem.", self.label, self.type)
+ if self.createOptions:
+ argv.extend(shlex.split(self.createOptions))
+
argv.append(self.device)
return argv
@@ -930,6 +934,7 @@ class FS(DeviceFormat):
else:
data.fsopts = ""
+ data.mkfsopts = self.createOptions or ""
data.fsprofile = self.fsprofile or ""
class Ext2FS(FS):
--
2.4.3
More information about the anaconda-patches
mailing list