From: openspace.wang@gmail.com (Ryan Wang)
To: kernelnewbies@lists.kernelnewbies.org
Subject: How to understand super.c/descriptor_loc for ext2/ext3/ext4?
Date: Fri, 8 Jun 2012 07:57:05 +0800 [thread overview]
Message-ID: <CAPxxNQnNCCeX1sGNSeKqHzHAdP1sMk7z0M3igNpH0t7NVSyceg@mail.gmail.com> (raw)
Hi,
I'm reading the source code for ext2/ext3/ext4, and cannot figure
out how descriptor_loc() runs:
1600static ext3_fsblk_t descriptor_loc(struct super_block *sb,
1601 ext3_fsblk_t logic_sb_block,
1602 int nr)
1603{
1604 struct ext3_sb_info *sbi = EXT3_SB(sb);
1605 unsigned long bg, first_meta_bg;
1606 int has_super = 0;
1607
1608 first_meta_bg = le32_to_cpu(sbi->s_es->s_first_meta_bg);
1) Who can setup the field ->s_first_meta_bg, mke2fs? And what does it mean?
What's a meta block group?
1609
1610 if (!EXT3_HAS_INCOMPAT_FEATURE(sb,
EXT3_FEATURE_INCOMPAT_META_BG) ||
1611 nr < first_meta_bg)
2) In which case, we can have "nr < first_meta_bg"?
And how does EXT3_FEATURE_INCOMPAT_META_BG affect the physical disk
layout?
1612 return (logic_sb_block + nr + 1);
1613 bg = sbi->s_desc_per_block * nr;
1614 if (ext3_bg_has_super(sb, bg))
1615 has_super = 1;
1616 return (has_super + ext3_group_first_block_no(sb, bg));
3) It always return the first block no of the specific bg, right?
Then its caller ext3_fill_super will read in the disk block.
It seems that ext3_fill_super just read many copies of one same block
(1st block), right?
I'm sure I'm wrong with it, but cannot find out the right way.
1617}
Any explanation are welcome.
thanks,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20120608/587b9a33/attachment-0001.html
next reply other threads:[~2012-06-07 23:57 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-07 23:57 Ryan Wang [this message]
-- strict thread matches above, loose matches on Subject: below --
2012-06-07 13:37 How to understand super.c/descriptor_loc for ext2/ext3/ext4? Ryan Wang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAPxxNQnNCCeX1sGNSeKqHzHAdP1sMk7z0M3igNpH0t7NVSyceg@mail.gmail.com \
--to=openspace.wang@gmail.com \
--cc=kernelnewbies@lists.kernelnewbies.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).