int flags;
};
-static int process_block(ext2_filsys fs, blk_t *block_nr,
- e2_blkcnt_t blockcnt, blk_t ref_block,
+static int process_block(ext2_filsys fs, blk64_t *block_nr,
+ e2_blkcnt_t blockcnt, blk64_t ref_block,
int ref_offset, void *priv_data)
{
struct process_block_struct *pb;
errcode_t retval;
int ret;
- blk_t block, orig;
+ blk64_t block, orig;
pb = (struct process_block_struct *) priv_data;
block = orig = *block_nr;
ext2fs_mark_block_bitmap2(pb->alloc_map, block);
ret = BLOCK_CHANGED;
if (pb->flags & EXT2_BMOVE_DEBUG)
- printf("ino=%ld, blockcnt=%lld, %u->%u\n", pb->ino,
- blockcnt, orig, block);
+ printf("ino=%u, blockcnt=%lld, %llu->%llu\n",
+ (unsigned) pb->ino, blockcnt,
+ (unsigned long long) orig,
+ (unsigned long long) block);
}
if (pb->add_dir) {
- retval = ext2fs_add_dir_block(fs->dblist, pb->ino,
- block, (int) blockcnt);
+ retval = ext2fs_add_dir_block2(fs->dblist, pb->ino,
+ block, blockcnt);
if (retval) {
pb->error = retval;
ret |= BLOCK_ABORT;
pb.add_dir = (LINUX_S_ISDIR(inode.i_mode) &&
flags & EXT2_BMOVE_GET_DBLIST);
- retval = ext2fs_block_iterate2(fs, ino, 0, block_buf,
- process_block, &pb);
+ retval = ext2fs_block_iterate3(fs, ino, 0, block_buf,
+ process_block, &pb);
if (retval)
return retval;
if (pb.error)
ext2fs_block_bitmap bmap;
errcode_t retval;
dgrp_t i;
- blk_t first_block = fs->super->s_first_data_block;
- blk_t last_block = ext2fs_blocks_count(fs->super)-1;
+ blk64_t first_block = fs->super->s_first_data_block;
+ blk64_t last_block = ext2fs_blocks_count(fs->super)-1;
blk64_t blk, b;
int j;
};
static int expand_dir_proc(ext2_filsys fs,
- blk_t *blocknr,
+ blk64_t *blocknr,
e2_blkcnt_t blockcnt,
- blk_t ref_block EXT2FS_ATTR((unused)),
+ blk64_t ref_block EXT2FS_ATTR((unused)),
int ref_offset EXT2FS_ATTR((unused)),
void *priv_data)
{
struct expand_dir_struct *es = (struct expand_dir_struct *) priv_data;
- blk_t new_blk;
- static blk_t last_blk = 0;
+ blk64_t new_blk;
+ static blk64_t last_blk = 0;
char *block;
errcode_t retval;
last_blk = *blocknr;
return 0;
}
- retval = ext2fs_new_block(fs, last_blk, 0, &new_blk);
+ retval = ext2fs_new_block2(fs, last_blk, 0, &new_blk);
if (retval) {
es->err = retval;
return BLOCK_ABORT;
es.err = 0;
es.newblocks = 0;
- retval = ext2fs_block_iterate2(fs, dir, BLOCK_FLAG_APPEND,
+ retval = ext2fs_block_iterate3(fs, dir, BLOCK_FLAG_APPEND,
0, expand_dir_proc, &es);
if (es.err)
int inode_blocks_per_group;
ext2fs_inode_bitmap inode_map;
ext2fs_block_bitmap block_map;
+ /* XXX FIXME-64: not 64-bit safe, but not used? */
errcode_t (*get_blocks)(ext2_filsys fs, ext2_ino_t ino, blk_t *blocks);
errcode_t (*check_directory)(ext2_filsys fs, ext2_ino_t ino);
errcode_t (*write_bitmaps)(ext2_filsys fs);
struct ext3_extent_idx *ix = 0;
struct ext3_extent *ex;
errcode_t retval;
- blk_t blk;
+ blk64_t blk;
blk64_t end_blk;
int orig_op, op;
static errcode_t extent_node_split(ext2_extent_handle_t handle)
{
errcode_t retval = 0;
- blk_t new_node_pblk;
+ blk64_t new_node_pblk;
blk64_t new_node_start;
blk64_t orig_lblk;
blk64_t goal_blk = 0;
goal_blk = (group * handle->fs->super->s_blocks_per_group) +
handle->fs->super->s_first_data_block;
}
- retval = ext2fs_alloc_block(handle->fs, (blk_t) goal_blk, block_buf,
+ retval = ext2fs_alloc_block2(handle->fs, goal_blk, block_buf,
&new_node_pblk);
if (retval)
goto done;
{
unsigned int group, left, c, d;
char *buf, *cp;
- blk_t blk;
+ blk64_t blk;
ssize_t actual;
errcode_t retval;
{
unsigned int group, c, left;
char *buf;
- blk_t blk;
+ blk64_t blk;
ssize_t actual;
errcode_t retval;
struct ext2_inode parent_inode, inode;
ext2_ino_t ino = inum;
ext2_ino_t scratch_ino;
- blk_t blk;
+ blk64_t blk;
char *block = 0;
EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
/*
* Allocate a data block for the directory
*/
- retval = ext2fs_new_block(fs, 0, 0, &blk);
+ retval = ext2fs_new_block2(fs, 0, 0, &blk);
if (retval)
goto cleanup;
inode.i_mode = LINUX_S_IFDIR | (0777 & ~fs->umask);
inode.i_uid = inode.i_gid = 0;
ext2fs_iblk_set(fs, &inode, 1);
+ /* FIXME-64 */
inode.i_block[0] = blk;
inode.i_links_count = 2;
inode.i_size = fs->blocksize;
struct mkjournal_struct {
int num_blocks;
int newblocks;
- blk_t goal;
- blk_t blk_to_zero;
+ blk64_t goal;
+ blk64_t blk_to_zero;
int zero_count;
char *buf;
errcode_t err;
};
static int mkjournal_proc(ext2_filsys fs,
- blk_t *blocknr,
- e2_blkcnt_t blockcnt,
- blk_t ref_block EXT2FS_ATTR((unused)),
- int ref_offset EXT2FS_ATTR((unused)),
- void *priv_data)
+ blk64_t *blocknr,
+ e2_blkcnt_t blockcnt,
+ blk64_t ref_block EXT2FS_ATTR((unused)),
+ int ref_offset EXT2FS_ATTR((unused)),
+ void *priv_data)
{
struct mkjournal_struct *es = (struct mkjournal_struct *) priv_data;
- blk_t new_blk;
+ blk64_t new_blk;
errcode_t retval;
if (*blocknr) {
es->goal = *blocknr;
return 0;
}
- retval = ext2fs_new_block(fs, es->goal, 0, &new_blk);
+ retval = ext2fs_new_block2(fs, es->goal, 0, &new_blk);
if (retval) {
es->err = retval;
return BLOCK_ABORT;
(es->zero_count < 1024))
es->zero_count++;
else {
- retval = ext2fs_zero_blocks(fs,
- es->blk_to_zero,
- es->zero_count,
- 0, 0);
+ retval = ext2fs_zero_blocks2(fs,
+ es->blk_to_zero,
+ es->zero_count,
+ 0, 0);
es->zero_count = 0;
}
}
* This function creates a journal using direct I/O routines.
*/
static errcode_t write_journal_inode(ext2_filsys fs, ext2_ino_t journal_ino,
- blk_t size, int flags)
+ blk64_t size, int flags)
{
char *buf;
dgrp_t group, start, end, i, log_flex;
es.goal = (fs->super->s_blocks_per_group * group) +
fs->super->s_first_data_block;
- retval = ext2fs_block_iterate2(fs, journal_ino, BLOCK_FLAG_APPEND,
+ retval = ext2fs_block_iterate3(fs, journal_ino, BLOCK_FLAG_APPEND,
0, mkjournal_proc, &es);
if (es.err) {
retval = es.err;
goto errout;
}
if (es.zero_count) {
- retval = ext2fs_zero_blocks(fs, es.blk_to_zero,
+ retval = ext2fs_zero_blocks2(fs, es.blk_to_zero,
es.zero_count, 0, 0);
if (retval)
goto errout;
if (link_count++ > 5) {
return EXT2_ET_SYMLINK_LOOP;
}
+ /* FIXME-64: Actually, this is FIXME EXTENTS */
if (ext2fs_inode_data_blocks(fs,&ei)) {
retval = ext2fs_get_mem(fs->blocksize, &buffer);
if (retval)
unsigned long i, first_meta_bg;
__u32 features;
int groups_per_block, blocks_per_group, io_flags;
- blk_t group_block, blk;
+ blk64_t group_block, blk;
char *dest, *cp;
#ifdef WORDS_BIGENDIAN
struct ext2_group_desc *gdp;
dest += fs->blocksize*first_meta_bg;
}
for (i=first_meta_bg ; i < fs->desc_blocks; i++) {
- blk = ext2fs_descriptor_block_loc(fs, group_block, i);
+ blk = ext2fs_descriptor_block_loc2(fs, group_block, i);
retval = io_channel_read_blk64(fs->io, blk, 1, dest);
if (retval)
goto cleanup;
return 0;
if ((*block_nr < fs->super->s_first_data_block) ||
- (*block_nr >= fs->super->s_blocks_count))
+ (*block_nr >= ext2fs_blocks_count(fs->super)))
return 0; /* Ignore illegal blocks */
rb->err = ext2fs_badblocks_list_add(rb->bb_list, *block_nr);
continue;
if (fs &&
((blockno < fs->super->s_first_data_block) ||
- (blockno >= fs->super->s_blocks_count))) {
+ (blockno >= ext2fs_blocks_count(fs->super)))) {
if (invalid)
(invalid)(fs, blockno, buf, priv_data);
continue;
struct ext2_inode inode;
__u32 *dindir_buf, *gdt_buf;
unsigned long long apb, inode_size;
+ /* FIXME-64 - can't deal with extents */
blk_t dindir_blk, rsv_off, gdt_off, gdt_blk;
int dindir_dirty = 0, inode_dirty = 0;