in testfs-- in fill super

I was learning writing basic filesystem step by step-- till now what i wrote
just mounts .
Now
can someone help me to clarify the difference between

1)blocksize we give when we do 'dd if=/dev/zero of=nnn bs=4096 count=10
ans: in my view -- just to define size of file 4096 *10

2)block size we give wen we do  ./mkmyfs nnn 4096
ans while writing -- filesystem information -- to file -- this block size is
used

3)block size we have as
#define MYFS_DEFAULT_BS  which we set as sb->s_blocksize-- in fill_super
function -- before doing sb_bread of disk super block
  while mounting -- while reading filesystem info from the file-- this
blocksize is used

4)in testfs  ---  sb_min_blocksize() was used  --- before sb_bread in fill
super --
wherein minimum of the two
'MYFS_DEFAULT_BS'   and    bdev_hardsect_size(sb->s_bdev)
is set as sb->s_blocksize
what is bdev_hardsect_size ??
what's d logic behind using minimum of these two Please CMIIW

On Wed, Sep 2, 2009 at 4:11 PM, SandeepKsinha <sandeepksi...@gmail.com>wrote:

> NIdhi,
>
>
> On Wed, Sep 2, 2009 at 2:45 PM, nidhi mittal
> hada<nidhimitta...@gmail.com> wrote:
> >
> > Hi All
> > "I am writing for learning purpose a basic filesystem that just mounts
> > loads super block and root inode from disk."
> >
> > Now i am facing a problem
> > when i do
> >
> > mount -t myfs2 utils/nnn /mnt -o loop ----- it stucks here ....
> >
> > then doing
> > ps -ax | grep -i mount    shows the    mount script is in  RL state
> > where R - is in run queue
> > L -- pages locked in memory
> >
> >
> > and i found by using printks that
> > when i read disk inode block through sb_bread(sb,MYFS_INODE_BLOCK)
> > then it happens....and sb_bread doesnt return back .
> >
> > point to be noted is in my code snippet
> > just before reading inode block i read super block -- it works perfectly
> but
> > --
> > as i read inode block it stucks ...
> >
> > /*****************************
> >
> >        if(!(bh=(struct buffer_head *)sb_bread(sb,MYFS_SUPER_
> > BLOCK)))
> >         {
> >            printk(KERN_ALERT"Cannot read superblock of MYFS \n");
> >            goto free;
> >         }
> >
> >
> >       printk(KERN_ALERT"i m going to read disk inode in block number
> > %d",MYFS_INODE_BLOCK);
> >     /* IT Prints this message and stucks somewhere inside sb_bread*/
> >         if(!(bi=(struct buffer_head *)sb_bread(sb,MYFS_INODE_BLOCK)))
> >         {
> >           printk(KERN_ALERT"Cannot read inode clock  of MYFS \n");
> >           goto free;
> >         }
> >
> >
> >
> > ****************************/
> > i have tested through many ways -- in userspace it shows that inode was
> > written perfectly ...
> > what can be this thing?
> > i checked all parameters of sb -- bdev,blocksize,blocknumber okay before
> > sb_bread
> >
>
> Can you provide the complete sources, so that it becomes easier to
> understand the problem?
> Also, I would suggest your to list out the problems in points.
>
> >
> > any help will be obliging !!
> >
>
>
>
> --
> Regards,
> Sandeep.
>
>
>
>
>
>
> “To learn is to change. Education is a process that changes the learner.”
>



-- 
Thanks & Regards
Nidhi Mittal Hada

Reply via email to