diff --git a/src/add-ons/kernel/file_systems/ext2/Volume.cpp b/src/add-ons/kernel/file_systems/ext2/Volume.cpp index 04c706e0af..1911dbb183 100644 --- a/src/add-ons/kernel/file_systems/ext2/Volume.cpp +++ b/src/add-ons/kernel/file_systems/ext2/Volume.cpp @@ -278,6 +278,7 @@ Volume::Mount(const char* deviceName, uint32 flags) fBlockSize = 1UL << fSuperBlock.BlockShift(); fFirstDataBlock = fSuperBlock.FirstDataBlock(); + fNumInodes = fSuperBlock.NumInodes(); fNumGroups = (fSuperBlock.NumBlocks() - fFirstDataBlock - 1) / fSuperBlock.BlocksPerGroup() + 1; fGroupsPerBlock = fBlockSize / sizeof(ext2_block_group); diff --git a/src/add-ons/kernel/file_systems/ext2/Volume.h b/src/add-ons/kernel/file_systems/ext2/Volume.h index 59b745841a..cea51c9260 100644 --- a/src/add-ons/kernel/file_systems/ext2/Volume.h +++ b/src/add-ons/kernel/file_systems/ext2/Volume.h @@ -38,6 +38,8 @@ public: fs_volume* FSVolume() const { return fFSVolume; } const char* Name() const; + uint32 NumInodes() const + { return fNumInodes; } off_t NumBlocks() const { return fSuperBlock.NumBlocks(); } off_t FreeBlocks() const @@ -74,6 +76,7 @@ private: uint32 fBlockSize; uint32 fBlockShift; uint32 fFirstDataBlock; + uint32 fNumInodes; uint32 fNumGroups; uint32 fGroupsPerBlock; ext2_block_group** fGroupBlocks; diff --git a/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp b/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp index 69c7ed3e10..ad2bb08c37 100644 --- a/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/ext2/kernel_interface.cpp @@ -167,7 +167,7 @@ ext2_get_vnode(fs_volume* _volume, ino_t id, fs_vnode* _node, int* _type, { Volume* volume = (Volume*)_volume->private_volume; - if (id < 2 || id > volume->NumBlocks()) { + if (id < 2 || id > volume->NumInodes()) { dprintf("ext2: inode at %Ld requested!\n", id); return B_ERROR; }