读取inode返回无效数据

时间:2010-12-05 20:04:59

标签: c inode ext2

我正在尝试编辑一些inode数据。但是,当我读取任何inode时,我只会得到零或无效数据。 以下是我正在做的主要步骤:

//reading, say inode number 15 - it belongs to group 0, and it's a valid inode  
int inode_no=15
//buffer to hold inode structure  
struct ext2_inode inode_buffer_test1;
//points to the start of group descriptor structure. It is correct, I have validated the results with dumpe2fs.  
struct ext2_group_desc *grpdesc;  
//file descriptor of a device file holding ext2 FS, opened in O_RDONLY mode  
int fd; 

...

lseek64(fd,(long long)grpdesc[0].bg_inode_table*BLOCK_SIZE + sizeof(struct ext2_inode)*(inode_no-1),SEEK_SET);  
read(fd,&inode_buffer_test1,sizeof(struct ext2_inode));  
printf("file size=%d, blocks=%d\n",inode_buffer_test1.i_size,inode_buffer_test1.i_blocks);  

我得到的只是零或有时无效的其他inode数据。我已经使用“ls -i filename”命令获得了不同的inode编号进行测试,并使用“stat filename”验证了数据。但是,组描述符是正确的,inode表的位置也是正确的(使用dumpe2fs验证)。

我还尝试使用“lde”工具(lde -i 15 / dev / sdb1)获取inode信息。它还提供无效数据。请告诉我这里缺少的东西。

提前致谢, Maliha

1 个答案:

答案 0 :(得分:0)

BLOCK_SIZE是否正确?我将验证偏移计算是否与使用od显示的内容相对应。