-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add XFS metadata: blocks per file and block size #33
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #33 +/- ##
==========================================
+ Coverage 64.25% 64.50% +0.25%
==========================================
Files 4 4
Lines 414 417 +3
==========================================
+ Hits 266 269 +3
Misses 148 148
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
dissect/xfs/xfs.py
Outdated
@@ -294,6 +294,10 @@ def _has_large_extent_counts(self) -> bool: | |||
def size(self) -> int: | |||
return self.inode.di_size | |||
|
|||
@property | |||
def number_of_blocks(self) -> int: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
def number_of_blocks(self) -> int: | |
def nblocks(self) -> int: |
tests/test_xfs.py
Outdated
@@ -22,9 +23,11 @@ def test_xfs(xfs_bin): | |||
assert list(root.listdir().keys()) == [".", "..", "test_file", "test_dir", "test_link"] | |||
|
|||
test_file = xfs.get("test_file") | |||
assert test_file.number_of_blocks == 1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
assert test_file.number_of_blocks == 1 | |
assert test_file.nblocks == 1 |
tests/test_xfs.py
Outdated
assert test_file.open().read() == b"test content\n" | ||
|
||
test_link = xfs.get("test_link") | ||
assert test_link.number_of_blocks == 0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
assert test_link.number_of_blocks == 0 | |
assert test_link.nblocks == 0 |
tests/test_xfs.py
Outdated
@@ -34,18 +37,22 @@ def test_xfs_sparse(xfs_sparse_bin): | |||
|
|||
sparse_start = xfs.get("sparse_start") | |||
assert sparse_start.size == 0x258000 | |||
assert sparse_start.number_of_blocks == 200 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
assert sparse_start.number_of_blocks == 200 | |
assert sparse_start.nblocks == 200 |
tests/test_xfs.py
Outdated
assert sparse_start.dataruns() == [(None, 400), (1392, 200)] | ||
|
||
sparse_hole = xfs.get("sparse_hole") | ||
assert sparse_hole.size == 0x258000 | ||
assert sparse_hole.number_of_blocks == 400 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
assert sparse_hole.number_of_blocks == 400 | |
assert sparse_hole.nblocks == 400 |
tests/test_xfs.py
Outdated
assert sparse_hole.dataruns() == [(1792, 200), (None, 200), (2192, 200)] | ||
|
||
sparse_end = xfs.get("sparse_end") | ||
assert sparse_end.size == 0x190000 | ||
assert sparse_end.number_of_blocks == 200 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
assert sparse_end.number_of_blocks == 200 | |
assert sparse_end.nblocks == 200 |
tests/test_xfs.py
Outdated
assert sparse_end.dataruns() == [(2392, 200), (None, 200)] | ||
|
||
sparse_all = xfs.get("sparse_all") | ||
assert sparse_all.size == 0x500000 | ||
assert sparse_all.number_of_blocks == 0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
assert sparse_all.number_of_blocks == 0 | |
assert sparse_all.nblocks == 0 |
Expose blocks per file and the block size of the file system
Companion PR to fox-it/dissect.target#874
Closes #32