How to read group descriptor?
ashish mahamuni
ashitpro at yahoo.co.in
Fri Feb 1 11:21:03 UTC 2008
Hi All,
I am trying to read group descriptor from disk.
I am able to read the superblock structure successfully.
But I am not getting successful to get the group descriptor. Here is my
code. Please check out what is missing.
#include<linux/ext3_fs.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<stdio.h>
#include<unistd.h>
#include<fcntl.h>
#include<stdlib.h>
#include<string.h>
#define block_size 4096
#define boot_block_size 1024
int main()
{
char *buff = (char *)malloc(block_size);
struct ext3_super_block * sblock = (struct ext3_super_block
*)malloc(sizeof(struct ext3_super_block));
struct ext3_group_desc * gdesc = (struct ext3_group_desc
*)malloc(sizeof(struct ext3_group_desc));
int fd = open("/dev/hda3",O_RDONLY);
lseek(fd,boot_block_size,SEEK_CUR); //skip the boot block
read(fd,buff,block_size); //read superblock,we read one block(4096
bytes)here
memcpy((void *)sblock,(void *)buff,sizeof(struct
ext3_super_block));//here I can fill sblock successfully..
//read the next block..assuming this will contain group dsc for this
block..i.e. first group descriptor for first block group
read(fd,buff,block_size); //read first block. It should contain
group description structure.
memcpy((void *)gdesc,(void *)buff,sizeof(struct ext3_group_desc));
//try to print some field inside structure..
printf("\nbg_inode_table:%u",gdesc->bg_inode_table); //Bang....It
gives me zero.
close(fd);
return 0;
}
More information about the Ext3-users
mailing list