MCPcopy Create free account
hub / github.com/bobranten/Ext4Fsd / Ext2GetInodeLba

Function Ext2GetInodeLba

Ext4Fsd/ext3/generic.c:414–447  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

412}
413
414BOOLEAN
415Ext2GetInodeLba (
416 IN PEXT2_VCB Vcb,
417 IN ULONG inode,
418 OUT PLONGLONG offset
419)
420{
421 PEXT2_GROUP_DESC gd;
422 struct buffer_head *bh = NULL;
423 ext4_fsblk_t loc;
424 int group;
425
426 if (inode < 1 || inode > INODES_COUNT) {
427 DEBUG(DL_ERR, ( "Ext2GetInodeLba: Inode value %xh is invalid.\n",inode));
428 *offset = 0;
429 return FALSE;
430 }
431
432 group = (inode - 1) / INODES_PER_GROUP ;
433 gd = ext4_get_group_desc(&Vcb->sb, group, &bh);
434 if (!bh) {
435 *offset = 0;
436 DbgBreak();
437 return FALSE;
438 }
439 loc = (LONGLONG)ext4_inode_table(&Vcb->sb, gd);
440 loc = loc << BLOCK_BITS;
441 loc = loc + ((inode - 1) % INODES_PER_GROUP) * Vcb->InodeSize;
442
443 *offset = loc;
444 __brelse(bh);
445
446 return TRUE;
447}
448
449void Ext2DecodeInode(struct inode *dst, struct ext4_inode *src)
450{

Callers 5

Ext2LoadInodeFunction · 0.85
Ext2ClearInodeFunction · 0.85
Ext2SaveInodeFunction · 0.85
Ext2LoadInodeXattrFunction · 0.85
Ext2SaveInodeXattrFunction · 0.85

Calls 3

ext4_get_group_descFunction · 0.85
ext4_inode_tableFunction · 0.85
__brelseFunction · 0.85

Tested by

no test coverage detected