Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 6852 → Rev 6851

/kernel/trunk/fs/ext.inc
157,6 → 157,7
struct EXTFS PARTITION
Lock MUTEX
mountType dd ?
sectorsPerBlockLog dd ? ; shift for 512
bytesPerBlock dd ?
sectorsPerBlock dd ?
dwordsPerBlock dd ?
198,7 → 199,7
jnz .fail
cmp [ebx+SUPERBLOCK.sectorsPerBlockLog], 6 ; 64KB
ja .fail
cmp [ebx+SUPERBLOCK.inodeSize], 512
cmp [ebx+SUPERBLOCK.inodeSize], 1024
ja .fail
cmp [ebx+SUPERBLOCK.blocksPerGroup], 0
je .fail
230,6 → 231,7
rep movsd ; copy superblock
mov ecx, [ebx+SUPERBLOCK.sectorsPerBlockLog]
inc ecx
mov [ebp+EXTFS.sectorsPerBlockLog], ecx
mov eax, 1
shl eax, cl
mov [ebp+EXTFS.sectorsPerBlock], eax
816,10 → 818,11
jnz @f
movzx ecx, [ebp+EXTFS.superblock.inodeSize]
mov esi, edi
lea edi, [ebp+EXTFS.rootInodeBuffer]
mov edi, [ebp+EXTFS.rootInodeBuffer]
rep movsb
@@:
call getInodeLocation
jc .ret
mov ebx, [ebp+EXTFS.tempBlockBuffer]
mov ecx, eax
call fs_read32_sys
846,6 → 849,7
push edx edi esi ecx ebx
mov edi, ebx
call getInodeLocation
jc @f
mov ebx, [ebp+EXTFS.tempBlockBuffer]
call fs_read32_sys
test eax, eax
855,6 → 859,7
add esi, ebx
rep movsb
xor eax, eax
@@:
pop ebx ecx esi edi edx
ret
 
1419,9 → 1424,10
mov ebx, esi
call readInode
jc .error_inode_read
mov ecx, [ebp+EXTFS.sectorsPerBlockLog]
add ecx, 9
mov eax, [esi+INODE.fileSize]
xor edx, edx
div [ebp+EXTFS.bytesPerBlock]
shr eax, cl
xor ecx, ecx
.searchBlock:
push eax ; blocks total
2306,15 → 2312,16
call extfsInodeAlloc
jc .error
push ebx esi edi
xor al, al
lea edi, [ebp+EXTFS.inodeBuffer]
movzx ecx, [ebp+EXTFS.superblock.inodeSize]
xor eax, eax
rep stosb
lea edi, [ebp+EXTFS.inodeBuffer]
call fsGetTime
add eax, 978307200
lea ebx, [ebp+EXTFS.inodeBuffer]
mov [ebx+INODE.accessedTime], eax
mov [ebx+INODE.dataModified], eax
mov [edi+INODE.accessedTime], eax
mov [edi+INODE.dataModified], eax
mov ebx, edi
pop edi esi edx
; edx = allocated inode number, edi -> filename, esi = parent inode number
mov [ebx+INODE.accessMode], DIRECTORY or PERMISSIONS
2380,15 → 2387,16
call extfsInodeAlloc
jc .error
push ebx ebx esi edi
xor al, al
lea edi, [ebp+EXTFS.inodeBuffer]
movzx ecx, [ebp+EXTFS.superblock.inodeSize]
xor eax, eax
rep stosb
lea edi, [ebp+EXTFS.inodeBuffer]
call fsGetTime
add eax, 978307200
lea ebx, [ebp+EXTFS.inodeBuffer]
mov [ebx+INODE.accessedTime], eax
mov [ebx+INODE.dataModified], eax
mov [edi+INODE.accessedTime], eax
mov [edi+INODE.dataModified], eax
mov ebx, edi
pop edi esi edx
; edx = allocated inode number, edi -> filename, esi = parent inode number
mov [ebx+INODE.accessMode], FLAG_FILE or PERMISSIONS