Re: [PATCH 2/2] Set partedPartition system to the correct FS when creating an FS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2009-10-08 at 12:19 +0200, Hans de Goede wrote:
> The playing around with partedPartition flags only allows us to determine
> the partition table entry for certain usuages which are deemed special
> by parted. For normal FS usuage, parted will default to the type for the FS
> it has detected (for pre-existing partitions) or to Linux (83) for new
> partitions.

Parted works so hard to make things easy by having some things like swap
be a simple flag and then goes and fouls up by trying to become
partandfsed.

I hate this, but it is the obvious solution given parted's
eccentricities. Ack, with some sadness.

Dave

> 
> This means that for example reformatting a vfat partition as ext3, or a new
> partition as vfat will lead to incorrect partition type entries in the
> partition table. This patch fixes this.
> 
> This patch is intended for both master and F-12.
> ---
>  storage/deviceaction.py     |    3 +++
>  storage/formats/__init__.py |    1 +
>  storage/formats/fs.py       |   18 ++++++++++++++++++
>  3 files changed, 22 insertions(+), 0 deletions(-)
> 
> diff --git a/storage/deviceaction.py b/storage/deviceaction.py
> index 15f46b7..9337c8f 100644
> --- a/storage/deviceaction.py
> +++ b/storage/deviceaction.py
> @@ -274,6 +274,9 @@ class ActionCreateFormat(DeviceAction):
>              if self.format.partedFlag is not None:
>                  self.device.setFlag(self.format.partedFlag)
>  
> +            if self.format.partedSystem is not None:
> +                self.device.partedPartition.system = self.format.partedSystem
> +
>              self.device.disk.format.commitToDisk()
>  
>          self.device.format.create(intf=intf,
> diff --git a/storage/formats/__init__.py b/storage/formats/__init__.py
> index 9868257..ea60ccb 100644
> --- a/storage/formats/__init__.py
> +++ b/storage/formats/__init__.py
> @@ -139,6 +139,7 @@ class DeviceFormat(object):
>      _name = "Unknown"
>      _udevTypes = []
>      partedFlag = None
> +    partedSystem = None
>      _formattable = False                # can be formatted
>      _supported = False                  # is supported
>      _linuxNative = False                # for clearpart
> diff --git a/storage/formats/fs.py b/storage/formats/fs.py
> index 2f3e0ea..7255a9e 100644
> --- a/storage/formats/fs.py
> +++ b/storage/formats/fs.py
> @@ -36,6 +36,7 @@ from ..errors import *
>  from . import DeviceFormat, register_device_format
>  import iutil
>  from flags import flags
> +from parted import fileSystemType
>  
>  # is this nasty?
>  log_method_call = iutil.log_method_call
> @@ -830,6 +831,7 @@ class Ext2FS(FS):
>      _infofs = "dumpe2fs"
>      _defaultInfoOptions = ["-h"]
>      _existingSizeFields = ["Block count:", "Block size:"]
> +    partedSystem = fileSystemType["ext2"]
>  
>      def doMigrate(self, intf=None):
>          FS.doMigrate(self, intf=intf)
> @@ -900,6 +902,7 @@ class Ext3FS(Ext2FS):
>      _migrationTarget = "ext4"
>      _modules = ["ext3"]
>      _defaultMigrateOptions = ["-O", "extents"]
> +    partedSystem = fileSystemType["ext3"]
>  
>      def _isMigratable(self):
>          """ Can filesystems of this type be migrated? """
> @@ -917,6 +920,7 @@ class Ext4FS(Ext3FS):
>      _defaultFormatOptions = ["-t", "ext4"]
>      _migratable = False
>      _modules = ["ext4"]
> +    partedSystem = fileSystemType["ext4"]
>  
>  register_device_format(Ext4FS)
>  
> @@ -933,6 +937,8 @@ class FATFS(FS):
>      _maxSize = 1024 * 1024
>      _packages = [ "dosfstools" ]
>      _defaultMountOptions = ["umask=0077", "shortname=winnt"]
> +    # FIXME this should be fat32 in some cases
> +    partedSystem = fileSystemType["fat16"]
>  
>  register_device_format(FATFS)
>  
> @@ -972,6 +978,9 @@ class BTRFS(FS):
>      _check = True
>      _packages = ["btrfs-progs"]
>      _maxSize = 16 * 1024 * 1024
> +    # FIXME parted needs to be thaught about btrfs so that we can set the
> +    # partition table type correctly for btrfs partitions
> +    # partedSystem = fileSystemType["btrfs"]
>  
>      def _getFormatOptions(self, options=None):
>          argv = []
> @@ -1012,6 +1021,9 @@ class GFS2(FS):
>      _dump = True
>      _check = True
>      _packages = ["gfs2-utils"]
> +    # FIXME parted needs to be thaught about btrfs so that we can set the
> +    # partition table type correctly for btrfs partitions
> +    # partedSystem = fileSystemType["gfs2"]
>  
>      @property
>      def supported(self):
> @@ -1043,6 +1055,7 @@ class JFS(FS):
>      _infofs = "jfs_tune"
>      _defaultInfoOptions = ["-l"]
>      _existingSizeFields = ["Aggregate block size:", "Aggregate size:"]
> +    partedSystem = fileSystemType["jfs"]
>  
>      @property
>      def supported(self):
> @@ -1076,6 +1089,7 @@ class ReiserFS(FS):
>      _infofs = "debugreiserfs"
>      _defaultInfoOptions = []
>      _existingSizeFields = ["Count of blocks on the device:", "Blocksize:"]
> +    partedSystem = fileSystemType["reiserfs"]
>  
>      @property
>      def supported(self):
> @@ -1114,6 +1128,7 @@ class XFS(FS):
>      _defaultInfoOptions = ["-c", "\"sb 0\"", "-c", "\"p dblocks\"",
>                             "-c", "\"p blocksize\""]
>      _existingSizeFields = ["dblocks =", "blocksize ="]
> +    partedSystem = fileSystemType["xfs"]
>  
>  register_device_format(XFS)
>  
> @@ -1123,6 +1138,7 @@ class HFS(FS):
>      _mkfs = "hformat"
>      _modules = ["hfs"]
>      _formattable = True
> +    partedSystem = fileSystemType["hfs"]
>  
>  register_device_format(HFS)
>  
> @@ -1152,6 +1168,7 @@ class HFSPlus(FS):
>      _type = "hfs+"
>      _modules = ["hfsplus"]
>      _udevTypes = ["hfsplus"]
> +    partedSystem = fileSystemType["hfs+"]
>  
>  register_device_format(HFSPlus)
>  
> @@ -1170,6 +1187,7 @@ class NTFS(FS):
>      _infofs = "ntfsinfo"
>      _defaultInfoOptions = ["-m"]
>      _existingSizeFields = ["Cluster Size:", "Volume Size in Clusters:"]
> +    partedSystem = fileSystemType["ntfs"]
>  
>      @property
>      def minSize(self):

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list

[Index of Archives]     [Kickstart]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]
  Powered by Linux