Re: basic filesystem -- block size confusion

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi nidhi mittal hada,
 
a) 'dd if=/dev/zero of=nnn bs=4096 count=10'
b) 'dd if=/dev/zero of=nnn bs=4096 *10'
 
in a) bs=4096 force ibs=4096 and obs=4096
in b) bs=4096*10 force ibs=4096*10 and obs=4096*10
 
ibs means read bs bytes at a time
obs means write bs bytes at a time
that means the two ways read and write differet bytes at a time.
 
   

2009/9/11 nidhi mittal hada <nidhimittal19@xxxxxxxxx>

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 <sandeepksinha@xxxxxxxxx> wrote:
NIdhi,


On Wed, Sep 2, 2009 at 2:45 PM, nidhi mittal
hada<nidhimittal19@xxxxxxxxx> 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



--
Thanks & Regards
Nidhi Mittal Hada


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux