def determine_fs_type(self):
        """Determines the FS type for this partition. This function is used internally to determine which mount system
        to use, based on the file system description. Return values include *ext*, *ufs*, *ntfs*, *lvm* and *luks*.

        Note: does not do anything if fstype is already set to something sensible.
        """

        fstype_fallback = None
        if isinstance(self.fstype, filesystems.FallbackFileSystemType):
            fstype_fallback = self.fstype.fallback
        elif isinstance(self.fstype, filesystems.FileSystemType):
            return self.fstype

        result = collections.Counter()

        for source, description in (('fsdescription', self.info.get('fsdescription')),
                                    ('guid', self.info.get('guid')),
                                    ('blikid', self._get_blkid_type),
                                    ('magic', self._get_magic_type)):
            # For efficiency reasons, not all functions are called instantly.
            if callable(description):
                description = description()

            logger.debug("Trying to determine fs type from {} '{}'".format(source, description))
            if not description:
                continue

            # Iterate over all results and update the certainty of all FS types
            for type in FILE_SYSTEM_TYPES.values():
                result.update(type.detect(source, description))

            # Now sort the results by their certainty
            logger.debug("Current certainty levels: {}".format(result))

            # If we have not found any candidates, we continue
            if not result:
                continue

            # If we have candidates of which we are not entirely certain, we just continue
            max_res = result.most_common(1)[0][1]
            if max_res < 50:
                logger.debug("Highest certainty item is lower than 50, continuing...")
            # If we have multiple candidates with the same score, we just continue
            elif len([True for type, certainty in result.items() if certainty == max_res]) > 1:
                logger.debug("Multiple items with highest certainty level, so continuing...")
            else:
                self.fstype = result.most_common(1)[0][0]
                return self.fstype

        # Now be more lax with the fallback:
        if result:
            max_res = result.most_common(1)[0][1]
            if max_res > 0:
                self.fstype = result.most_common(1)[0][0]
                return self.fstype
        if fstype_fallback:
            self.fstype = fstype_fallback
            return self.fstype
Determines the FS type for this partition. This function is used internally to determine which mount system
        to use, based on the file system description. Return values include *ext*, *ufs*, *ntfs*, *lvm* and *luks*.

        Note: does not do anything if fstype is already set to something sensible.