2010-12-05 108 views
2

我正在嘗試編輯一些inode數據。但是,當我讀取任何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

回答

0

BLOCK_SIZE是否正確?我會驗證偏移量計算是否與使用od顯示的內容相對應。

+0

我使用BLOCK_SIZE爲: ((EXT2_MIN_BLOCK_SIZE)<<(super_block.s_log_block_size)) 使用LDE和OD我讀了十六進制的inode表塊 - 既顯示了inode的無效數據。 inode表本身的開始處是否有任何元數據/標題? 感謝您的回覆:) – 2010-12-07 06:02:17