aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Kardashevskiy <aik@ozlabs.ru>2019-12-30 13:59:51 +1100
committerAlexey Kardashevskiy <aik@ozlabs.ru>2020-02-21 14:03:07 +1100
commit9b8e6ab2a41119f6e8d21bbc207c53834bce31ae (patch)
tree7062573024e509341fe2d127074029e0c2310d34
parentd79b254660e0f59b97e5a410e243f54ea33e13d2 (diff)
downloadSLOF-9b8e6ab2a41119f6e8d21bbc207c53834bce31ae.zip
SLOF-9b8e6ab2a41119f6e8d21bbc207c53834bce31ae.tar.gz
SLOF-9b8e6ab2a41119f6e8d21bbc207c53834bce31ae.tar.bz2
ext2: Read all 64bit of inode number
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
-rw-r--r--slof/fs/packages/ext2-files.fs11
1 files changed, 10 insertions, 1 deletions
diff --git a/slof/fs/packages/ext2-files.fs b/slof/fs/packages/ext2-files.fs
index 7245d93..fbfdeeb 100644
--- a/slof/fs/packages/ext2-files.fs
+++ b/slof/fs/packages/ext2-files.fs
@@ -90,10 +90,19 @@ INSTANCE VARIABLE #blocks-left
#blocks-left @ IF inode @ 60 + l@-le read-triple-indirect-blocks THEN
;
+: read-inode-table ( groupdesc -- table )
+ dup 8 + l@-le \ reads bg_inode_table_lo
+ desc-size @ 20 > IF
+ over 28 + l@-le \ reads bg_inode_table_hi
+ 20 lshift or
+ THEN
+ nip
+;
+
: read-inode ( inode# -- )
1- inodes/group @ u/mod
desc-size @ * group-descriptors @ +
- 8 + l@-le \ reads bg_inode_table_lo
+ read-inode-table
block-size @ * \ # in group, inode table
swap inode-size @ * + xlsplit seek drop inode @ inode-size @ read drop
;