SUPERBLOCK
((int)SUPERBLOCK + sizeof(struct ext2_super_block)))
((struct ext2_inode *)((int)GROUP_DESC + EXT2_BLOCK_SIZE(SUPERBLOCK)))
((int)((int)DATABLOCK1 + EXT2_BLOCK_SIZE(SUPERBLOCK)))
#define EXT2_INODE_SIZE(s) (SUPERBLOCK->s_inode_size)
(char *) SUPERBLOCK)
|| SUPERBLOCK->s_magic != EXT2_SUPER_MAGIC)
return devread (fsblock * (EXT2_BLOCK_SIZE (SUPERBLOCK) / DEV_BSIZE), 0,
EXT2_BLOCK_SIZE (SUPERBLOCK), (char *) buffer);
if (logical_block < EXT2_ADDR_PER_BLOCK (SUPERBLOCK))
logical_block -= EXT2_ADDR_PER_BLOCK (SUPERBLOCK);
if (logical_block < (1 << (EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK) * 2)))
[logical_block >> EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK)]))
[logical_block & (EXT2_ADDR_PER_BLOCK (SUPERBLOCK) - 1)];
logical_block -= (1 << (EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK) * 2));
[logical_block >> (EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK)
[(logical_block >> EXT2_ADDR_PER_BLOCK_BITS (SUPERBLOCK))
& (EXT2_ADDR_PER_BLOCK (SUPERBLOCK) - 1)],
[logical_block & (EXT2_ADDR_PER_BLOCK (SUPERBLOCK) - 1)];
logical_block = filepos >> EXT2_BLOCK_SIZE_BITS (SUPERBLOCK);
offset = filepos & (EXT2_BLOCK_SIZE (SUPERBLOCK) - 1);
size = EXT2_BLOCK_SIZE (SUPERBLOCK);
devread (map * (EXT2_BLOCK_SIZE (SUPERBLOCK) / DEV_BSIZE),
ea_blocks = INODE->i_file_acl ? EXT2_BLOCK_SIZE (SUPERBLOCK) / DEV_BSIZE : 0;
group_id = (current_ino - 1) / (SUPERBLOCK->s_inodes_per_group);
group_desc = group_id >> log2 (EXT2_DESC_PER_BLOCK (SUPERBLOCK));
desc = group_id & (EXT2_DESC_PER_BLOCK (SUPERBLOCK) - 1);
printf ("ipg=%d, dpb=%d\n", SUPERBLOCK->s_inodes_per_group,
EXT2_DESC_PER_BLOCK (SUPERBLOCK));
(WHICH_SUPER + group_desc + SUPERBLOCK->s_first_data_block),
(((current_ino - 1) % (SUPERBLOCK->s_inodes_per_group))
>> log2 (EXT2_INODES_PER_BLOCK (SUPERBLOCK)));
((current_ino - 1) & (EXT2_INODES_PER_BLOCK (SUPERBLOCK) - 1)) *
EXT2_INODE_SIZE (SUPERBLOCK));
EXT2_INODES_PER_BLOCK (SUPERBLOCK), EXT2_INODE_SIZE (SUPERBLOCK));
blk = loc >> EXT2_BLOCK_SIZE_BITS (SUPERBLOCK);
off = loc & (EXT2_BLOCK_SIZE (SUPERBLOCK) - 1);
if ((bnum = fsbtodb (SUPERBLOCK, INODE->i_ib[0])) != mapblock
if (MAPBUF_LEN < SUPERBLOCK->fs_bsize)
offset = ((file_block - NDADDR) % NINDIR (SUPERBLOCK));
if (offset + MAPBUF_LEN > SUPERBLOCK->fs_bsize)
offset = (SUPERBLOCK->fs_bsize - MAPBUF_LEN) / sizeof (int);
bsize = SUPERBLOCK->fs_bsize;
return (((int *) MAPBUF)[((file_block - NDADDR) % NINDIR (SUPERBLOCK))
off = blkoff (SUPERBLOCK, filepos);
logno = lblkno (SUPERBLOCK, filepos);
size = blksize (SUPERBLOCK, INODE, logno);
devread (fsbtodb (SUPERBLOCK, map), off, size, buf);
if (!devread (fsbtodb (SUPERBLOCK, itod (SUPERBLOCK, ino)),
ino % (SUPERBLOCK->fs_inopb) * sizeof (struct dinode),
fsmax = (NDADDR + NINDIR (SUPERBLOCK)) * SUPERBLOCK->fs_bsize;
if (!(off = blkoff (SUPERBLOCK, loc)))
block = lblkno (SUPERBLOCK, loc);
|| !devread (fsbtodb (SUPERBLOCK, map), 0,
blksize (SUPERBLOCK, INODE, block),
|| !devread (SBLOCK, 0, SBSIZE, (char *) SUPERBLOCK)
|| SUPERBLOCK->fs_magic != FS_MAGIC)
((struct minix_inode *)((int) SUPERBLOCK + BLOCK_SIZE))
(char *) SUPERBLOCK))
switch (SUPERBLOCK->s_magic)
ino_blk = (2 + SUPERBLOCK->s_imap_blocks + SUPERBLOCK->s_zmap_blocks
#define INODE_VERSION(inode) (SUPERBLOCK->s_version)
off = blkoff(SUPERBLOCK, filepos);
lblk = lblkno(SUPERBLOCK, filepos);
size = SUPERBLOCK->fs_bsize;
ok = devread(fsbtodb(SUPERBLOCK, dblk), off, size, buf);
dblk = fsbtodb(SUPERBLOCK, itod(SUPERBLOCK, inode));
off = itoo(SUPERBLOCK, inode) * sizeof (struct icommon);
bound = UFS_NINDIR(SUPERBLOCK);
bound *= UFS_NINDIR(SUPERBLOCK);
blkno = fsbtodb(SUPERBLOCK, nb);
if (!devread(blkno, 0, SUPERBLOCK->fs_bsize,
bound /= UFS_NINDIR(SUPERBLOCK);
index = (bn / bound) % UFS_NINDIR(SUPERBLOCK);
blkno = fsbtodb(SUPERBLOCK, nb);
if (!devread(blkno, 0, SUPERBLOCK->fs_bsize,
bound /= UFS_NINDIR(SUPERBLOCK);
index = (bn / bound) % UFS_NINDIR(SUPERBLOCK);
off = blkoff(SUPERBLOCK, loc);
lbn = lblkno(SUPERBLOCK, loc);
dblk = fsbtodb(SUPERBLOCK, dbn);
if (!devread(dblk, 0, SUPERBLOCK->fs_bsize,
!devread(UFS_SBLOCK, 0, UFS_SBSIZE, (char *)SUPERBLOCK) ||
SUPERBLOCK->fs_magic != UFS_MAGIC)
(SUPERBLOCK->fs_old_flags & FS_FLAGS_UPDATED) == 0)*/)
if ((bnum = fsbtodb (SUPERBLOCK, INODE_UFS2->di_ib[0])) != mapblock
if (MAPBUF_LEN < SUPERBLOCK->fs_bsize)
offset = ((file_block - NDADDR) % NINDIR (SUPERBLOCK));
if (offset + MAPBUF_LEN > SUPERBLOCK->fs_bsize)
offset = (SUPERBLOCK->fs_bsize - MAPBUF_LEN) / sizeof (int);
bsize = SUPERBLOCK->fs_bsize;
return (((grub_int64_t *) MAPBUF)[((file_block - NDADDR) % NINDIR (SUPERBLOCK))
off = blkoff (SUPERBLOCK, filepos);
logno = lblkno (SUPERBLOCK, filepos);
size = blksize (SUPERBLOCK, INODE_UFS2, logno);
devread (fsbtodb (SUPERBLOCK, map), off, size, buf);
if (!devread (fsbtodb (SUPERBLOCK, ino_to_fsba (SUPERBLOCK, ino)),
ino % (SUPERBLOCK->fs_inopb) * sizeof (struct ufs2_dinode),
fsmax = (NDADDR + NINDIR (SUPERBLOCK)) * SUPERBLOCK->fs_bsize;
if (!(off = blkoff (SUPERBLOCK, loc)))
block = lblkno (SUPERBLOCK, loc);
|| !devread (fsbtodb (SUPERBLOCK, map), 0,
blksize (SUPERBLOCK, INODE_UFS2, block),
|| ! devread (0, sblock_try[i], SBLOCKSIZE, (char *) SUPERBLOCK)))
if (SUPERBLOCK->fs_magic == FS_UFS2_MAGIC /* &&
(SUPERBLOCK->fs_sblockloc == sblockloc ||