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,
Can you provide the complete sources, so that it becomes easier to
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
>
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