Skip to content

Commit

Permalink
Merge pull request #1301 from AdamWill/space-estimate-compression
Browse files Browse the repository at this point in the history
free_space_estimate: adjust for compression on btrfs
  • Loading branch information
vojtechtrefny authored Oct 5, 2024
2 parents 14f04c2 + dabec2a commit 705a80e
Showing 1 changed file with 19 additions and 1 deletion.
20 changes: 19 additions & 1 deletion blivet/formats/fs.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,14 @@ def dict(self):
"mountable": self.mountable})
return d

@classmethod
def _compression_size_factor(cls):
""" Adjust free space estimate for transparent compression.
Classes for filesystems that implement transparent compression
can override this.
"""
return 1

@classmethod
def free_space_estimate(cls, device_size):
""" Get estimated free space when format will be done on device
Expand All @@ -207,7 +215,7 @@ def free_space_estimate(cls, device_size):
:return: estimated free size after format
:rtype: :class:`~.size.Size`
"""
return device_size * cls._metadata_size_factor
return device_size * cls._metadata_size_factor * cls._compression_size_factor()

@classmethod
def get_required_size(cls, free_space):
Expand Down Expand Up @@ -1108,6 +1116,16 @@ def _pre_process_subvolnames(subvols):
return False
return True

@classmethod
def _compression_size_factor(cls):
""" Adjust free space estimate for transparent compression.
We estimate 40% 'additional space' if it's enabled (this is
pretty conservative).
"""
if flags.btrfs_compression:
return 1.40
return 1


register_device_format(BTRFS)

Expand Down

0 comments on commit 705a80e

Please sign in to comment.