Rev 9890 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 9890 | Rev 10007 | ||
---|---|---|---|
Line 3... | Line 3... | ||
3 | ;; Copyright (C) KolibriOS team 2013-2022. All rights reserved. ;; |
3 | ;; Copyright (C) KolibriOS team 2013-2022. All rights reserved. ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
4 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; ;; |
5 | ;; ;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 7... | Line 7... | ||
7 | 7 | ||
Line 8... | Line 8... | ||
8 | $Revision: 9890 $ |
8 | $Revision: 10007 $ |
Line 9... | Line 9... | ||
9 | 9 | ||
Line 178... | Line 178... | ||
178 | mov [edi+XFS.dir_data_magic], XFS_DIR2_DATA_MAGIC |
178 | mov [edi+XFS.dir_data_magic], XFS_DIR2_DATA_MAGIC |
179 | mov [edi+XFS.dir_leaf1_magic], XFS_DIR2_LEAF1_MAGIC |
179 | mov [edi+XFS.dir_leaf1_magic], XFS_DIR2_LEAF1_MAGIC |
180 | mov [edi+XFS.dir_leafn_magic], XFS_DIR2_LEAFN_MAGIC |
180 | mov [edi+XFS.dir_leafn_magic], XFS_DIR2_LEAFN_MAGIC |
181 | mov [edi+XFS.da_node_magic], XFS_DA_NODE_MAGIC |
181 | mov [edi+XFS.da_node_magic], XFS_DA_NODE_MAGIC |
182 | mov [edi+XFS.bmap_magic], XFS_BMAP_MAGIC |
182 | mov [edi+XFS.bmap_magic], XFS_BMAP_MAGIC |
- | 183 | mov [edi+XFS.dirx_leaf_ents_offset], xfs_dir2_leaf.ents |
|
- | 184 | mov [edi+XFS.dirx_leaf_hdr_count_offset], xfs_dir2_leaf_hdr.count |
|
183 | mov [edi+XFS.dir_block_size], sizeof.xfs_dir2_data_hdr |
185 | mov [edi+XFS.dir_block_size], sizeof.xfs_dir2_data_hdr |
184 | mov [edi+XFS.bmbt_block_size], sizeof.xfs_bmbt_block |
186 | mov [edi+XFS.bmbt_block_size], sizeof.xfs_bmbt_block |
185 | mov [edi+XFS.da_blkinfo_size], sizeof.xfs_da_blkinfo |
187 | mov [edi+XFS.da_blkinfo_size], sizeof.xfs_da_blkinfo |
186 | jmp .vcommon |
188 | jmp .vcommon |
187 | .v5: |
189 | .v5: |
Line 196... | Line 198... | ||
196 | mov [edi+XFS.dir_data_magic], XFS_DIR3_DATA_MAGIC |
198 | mov [edi+XFS.dir_data_magic], XFS_DIR3_DATA_MAGIC |
197 | mov [edi+XFS.dir_leaf1_magic], XFS_DIR3_LEAF1_MAGIC |
199 | mov [edi+XFS.dir_leaf1_magic], XFS_DIR3_LEAF1_MAGIC |
198 | mov [edi+XFS.dir_leafn_magic], XFS_DIR3_LEAFN_MAGIC |
200 | mov [edi+XFS.dir_leafn_magic], XFS_DIR3_LEAFN_MAGIC |
199 | mov [edi+XFS.da_node_magic], XFS_DA3_NODE_MAGIC |
201 | mov [edi+XFS.da_node_magic], XFS_DA3_NODE_MAGIC |
200 | mov [edi+XFS.bmap_magic], XFS_BMAP3_MAGIC |
202 | mov [edi+XFS.bmap_magic], XFS_BMAP3_MAGIC |
- | 203 | mov [edi+XFS.dirx_leaf_ents_offset], xfs_dir3_leaf.ents |
|
- | 204 | mov [edi+XFS.dirx_leaf_hdr_count_offset], xfs_dir3_leaf_hdr.count |
|
201 | mov [edi+XFS.dir_block_size], sizeof.xfs_dir3_data_hdr |
205 | mov [edi+XFS.dir_block_size], sizeof.xfs_dir3_data_hdr |
202 | mov [edi+XFS.bmbt_block_size], sizeof.xfs_bmbt3_block |
206 | mov [edi+XFS.bmbt_block_size], sizeof.xfs_bmbt3_block |
203 | mov [edi+XFS.da_blkinfo_size], sizeof.xfs_da3_blkinfo |
207 | mov [edi+XFS.da_blkinfo_size], sizeof.xfs_da3_blkinfo |
204 | test [edi+XFS.features_incompat], XFS_SB_FEAT_INCOMPAT_BIGTIME |
208 | test [edi+XFS.features_incompat], XFS_SB_FEAT_INCOMPAT_BIGTIME |
205 | jz @f ; no bigtime |
209 | jz @f ; no bigtime |
Line 1010... | Line 1014... | ||
1010 | proc xfs._.lookup_block uses esi, _name, _len |
1014 | proc xfs._.lookup_block uses esi, _name, _len |
1011 | add ebx, [ebp+XFS.inode_core_size] |
1015 | add ebx, [ebp+XFS.inode_core_size] |
1012 | mov eax, ebx |
1016 | mov eax, ebx |
1013 | mov ebx, [ebp+XFS.cur_dirblock] |
1017 | mov ebx, [ebp+XFS.cur_dirblock] |
1014 | stdcall xfs._.extent_unpack, eax |
1018 | stdcall xfs._.extent_unpack, eax |
1015 | stdcall xfs._.read_dirblock, [ebp+XFS.extent.br_startblock.lo], [ebp+XFS.extent.br_startblock.hi], ebx |
1019 | stdcall xfs._.read_dirblock, [ebp+XFS.extent.br_startblock.lo], \ |
- | 1020 | [ebp+XFS.extent.br_startblock.hi], ebx |
|
1016 | jnz .error |
1021 | jnz .error |
1017 | mov eax, [ebp+XFS.dir_block_magic] |
1022 | mov eax, [ebp+XFS.dir_block_magic] |
1018 | cmp [ebx+xfs_dir2_block.hdr.magic], eax |
1023 | cmp [ebx+xfs_dir2_block.hdr.magic], eax |
1019 | movi eax, ERROR_FS_FAIL |
1024 | movi eax, ERROR_FS_FAIL |
1020 | jnz .error |
1025 | jnz .error |
Line 1095... | Line 1100... | ||
1095 | mov eax, [ebp+XFS.dir2_leaf_offset_blocks.lo] |
1100 | mov eax, [ebp+XFS.dir2_leaf_offset_blocks.lo] |
1096 | mov [ebp+XFS.offset_begin.lo], ecx |
1101 | mov [ebp+XFS.offset_begin.lo], ecx |
1097 | mov eax, [ebp+XFS.dir2_leaf_offset_blocks.hi] |
1102 | mov eax, [ebp+XFS.dir2_leaf_offset_blocks.hi] |
1098 | mov [ebp+XFS.offset_begin.hi], ecx |
1103 | mov [ebp+XFS.offset_begin.hi], ecx |
1099 | stdcall xfs._.extent_list.seek, ecx |
1104 | stdcall xfs._.extent_list.seek, ecx |
1100 | stdcall xfs._.read_dirblock, [ebp+XFS.extent.br_startblock.lo], [ebp+XFS.extent.br_startblock.hi], [ebp+XFS.cur_dirblock] |
1105 | stdcall xfs._.read_dirblock, [ebp+XFS.extent.br_startblock.lo], \ |
- | 1106 | [ebp+XFS.extent.br_startblock.hi], [ebp+XFS.cur_dirblock] |
|
1101 | jnz .error |
1107 | jnz .error |
1102 | mov ebx, [ebp+XFS.cur_dirblock] |
1108 | mov ebx, [ebp+XFS.cur_dirblock] |
1103 | movzx eax, [ebp+XFS.dir_leaf1_magic] |
1109 | movzx eax, [ebp+XFS.dir_leaf1_magic] |
1104 | cmp [ebx+xfs_dir2_leaf.hdr.info.magic], ax |
1110 | cmp [ebx+xfs_dir2_leaf.hdr.info.magic], ax |
1105 | movi eax, ERROR_FS_FAIL |
1111 | movi eax, ERROR_FS_FAIL |
Line 1226... | Line 1232... | ||
1226 | sub ecx, [ebp+XFS.inode_core_size] |
1232 | sub ecx, [ebp+XFS.inode_core_size] |
1227 | @@: |
1233 | @@: |
1228 | add ebx, [ebp+XFS.inode_core_size] |
1234 | add ebx, [ebp+XFS.inode_core_size] |
1229 | stdcall xfs._.btree_read_block, ebx, ecx, eax, edx, [ebp+XFS.cur_dirblock] |
1235 | stdcall xfs._.btree_read_block, ebx, ecx, eax, edx, [ebp+XFS.cur_dirblock] |
1230 | mov ebx, [ebp+XFS.cur_dirblock] |
1236 | mov ebx, [ebp+XFS.cur_dirblock] |
- | 1237 | movzx eax, [ebp+XFS.da_node_magic] |
|
1231 | cmp [ebx+xfs_da_intnode.hdr.info.magic], XFS_DA_NODE_MAGIC |
1238 | cmp [ebx+xfs_da_blkinfo.magic], ax |
1232 | jz .next_level |
1239 | jz .next_level |
- | 1240 | movzx eax, [ebp+XFS.dir_leafn_magic] |
|
1233 | cmp [ebx+xfs_dir2_leaf.hdr.info.magic], XFS_DIR2_LEAFN_MAGIC |
1241 | cmp [ebx+xfs_da_blkinfo.magic], ax |
1234 | jz .leafn |
1242 | jz .leafn |
- | 1243 | movzx eax, [ebp+XFS.dir_leaf1_magic] |
|
1235 | cmp [ebx+xfs_dir2_leaf.hdr.info.magic], XFS_DIR2_LEAF1_MAGIC |
1244 | cmp [ebx+xfs_da_blkinfo.magic], ax |
1236 | jnz .error |
1245 | jnz .error |
1237 | mov eax, [.hash] |
1246 | mov eax, [.hash] |
1238 | movzx ecx, [ebx+xfs_dir2_leaf.hdr.count] |
1247 | mov ecx, [ebp+XFS.dirx_leaf_hdr_count_offset] |
- | 1248 | movzx ecx, word[ebx+ecx] |
|
1239 | xchg cl, ch |
1249 | xchg cl, ch |
1240 | add ebx, xfs_dir2_leaf.ents |
1250 | add ebx, [ebp+XFS.dirx_leaf_ents_offset] |
1241 | stdcall xfs._.get_addr_by_hash, ebx, ecx |
1251 | stdcall xfs._.get_addr_by_hash, ebx, ecx |
1242 | jnz .error |
1252 | jnz .error |
1243 | mov ebx, [ebp+XFS.cur_dirblock] |
1253 | mov ebx, [ebp+XFS.cur_dirblock] |
1244 | jmp .got_addr |
1254 | jmp .got_addr |
1245 | .leafn: |
1255 | .leafn: |
1246 | movzx ecx, [ebx+xfs_dir2_leaf.hdr.count] |
1256 | mov ecx, [ebp+XFS.dirx_leaf_hdr_count_offset] |
- | 1257 | movzx ecx, word[ebx+ecx] |
|
1247 | xchg cl, ch |
1258 | xchg cl, ch |
1248 | add ebx, xfs_dir2_leaf.ents |
1259 | add ebx, [ebp+XFS.dirx_leaf_ents_offset] |
1249 | mov eax, [.hash] |
1260 | mov eax, [.hash] |
1250 | stdcall xfs._.get_addr_by_hash, ebx, ecx |
1261 | stdcall xfs._.get_addr_by_hash, ebx, ecx |
1251 | jnz .error |
1262 | jnz .error |
1252 | mov ebx, [ebp+XFS.cur_block] |
1263 | mov ebx, [ebp+XFS.cur_block] |
1253 | .got_addr: |
1264 | .got_addr: |
Line 2026... | Line 2037... | ||
2026 | mov eax, [_block_lo] |
2037 | mov eax, [_block_lo] |
2027 | mov [ebp+XFS.offset_begin.lo], eax |
2038 | mov [ebp+XFS.offset_begin.lo], eax |
2028 | mov eax, [_block_hi] |
2039 | mov eax, [_block_hi] |
2029 | mov [ebp+XFS.offset_begin.hi], eax |
2040 | mov [ebp+XFS.offset_begin.hi], eax |
2030 | stdcall xfs._.extent_list.seek, ecx |
2041 | stdcall xfs._.extent_list.seek, ecx |
2031 | stdcall xfs._.read_dirblock, [ebp+XFS.extent.br_startblock.lo], [ebp+XFS.extent.br_startblock.hi], [_buf] |
2042 | stdcall xfs._.read_dirblock, [ebp+XFS.extent.br_startblock.lo], \ |
- | 2043 | [ebp+XFS.extent.br_startblock.hi], [_buf] |
|
2032 | .error: |
2044 | .error: |
2033 | .quit: |
2045 | .quit: |
2034 | ret |
2046 | ret |
2035 | endp |
2047 | endp |