Re: fs/ext2/balloc.c question

Michael Nelson (mikenel@iapetus.com)
Sun, 12 Dec 1999 01:15:27 -0500 (EST)


Note how there are 2 underlines after load... there is both a
load_block_bitmap and a load__block_bitmap function in balloc.c

-mike

On Sat, 11 Dec 1999 afei@jhu.edu wrote:

>
> I do not quite understand how this function works. Check out line:232. It
> looks to me like an infinite lookp.
>
> Fei
>
> 205 static inline int load_block_bitmap (struct super_block * sb,
> 206 unsigned int block_group)
> 207 {
> 208 int slot;
> 209
> 210 /*
> 211 * Do the lookup for the slot. First of all, check if we're
> asking
> 212 * for the same slot as last time, and did we succeed that
> last time?
> 213 */
> 214 if (sb->u.ext2_sb.s_loaded_block_bitmaps > 0 &&
> 215 sb->u.ext2_sb.s_block_bitmap_number[0] == block_group &&
> 216 sb->u.ext2_sb.s_block_bitmap[block_group]) {
> 217 return 0;
> 218 }
> 219 /*
> 220 * Or can we do a fast lookup based on a loaded group on a
> filesystem
> 221 * small enough to be mapped directly into the superblock?
> 222 */
> 223 else if (sb->u.ext2_sb.s_groups_count <= EXT2_MAX_GROUP_LOADED
> &&
> 224 sb->u.ext2_sb.s_block_bitmap_number[block_group] ==
> block_group &&
> 225 sb->u.ext2_sb.s_block_bitmap[block_group]) {
> 226 slot = block_group;
> 227 }
> 228 /*
> 229 * If not, then do a full lookup for this block group.
> 230 */
> 231 else {
> 232 slot = load__block_bitmap (sb, block_group);
> 233 }
> 234
> 235 /*
> 236 * <0 means we just got an error
> 237 */
> 238 if (slot < 0)
> 239 return slot;
> 240
> 241 /*
> 242 * If it's a valid slot, we may still have cached a previous
> IO error,
> 243 * in which case the bh in the superblock cache will be zero.
> 244 */
> 245 if (!sb->u.ext2_sb.s_block_bitmap[slot])
> 246 return -EIO;
> 247
> 248 /*
> 249 * Must have been read in OK to get this far.
> 250 */
> 251 return slot;
> 252 }
>
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.rutgers.edu
> Please read the FAQ at http://www.tux.org/lkml/
>

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/