Home | History | Annotate | Download | only in ext2fs

Lines Matching refs:fs

44 errcode_t ext2fs_create_journal_superblock(ext2_filsys fs,
54 if ((retval = ext2fs_get_mem(fs->blocksize, &jsb)))
57 memset (jsb, 0, fs->blocksize);
64 jsb->s_blocksize = htonl(fs->blocksize);
69 memcpy(jsb->s_uuid, fs->super->s_uuid, sizeof(fs->super->s_uuid));
74 if (fs->super->s_feature_incompat &
77 if (fs->blocksize == 1024)
92 static errcode_t write_journal_file(ext2_filsys fs, char *filename,
100 if ((retval = ext2fs_create_journal_superblock(fs, num_blocks, flags,
112 ret_size = write(fd, buf, fs->blocksize);
117 if (ret_size != (int) fs->blocksize)
119 memset(buf, 0, fs->blocksize);
125 ret_size = write(fd, buf, fs->blocksize);
130 if (ret_size != (int) fs->blocksize)
154 errcode_t ext2fs_zero_blocks2(ext2_filsys fs, blk64_t blk, int num,
161 /* If fs is null, clean up the static buffer and return */
162 if (!fs) {
171 buf = malloc(fs->blocksize * STRIDE_LENGTH);
174 memset(buf, 0, fs->blocksize * STRIDE_LENGTH);
188 retval = io_channel_write_blk64(fs->io, blk, count, buf);
201 errcode_t ext2fs_zero_blocks(ext2_filsys fs, blk_t blk, int num,
207 retval = ext2fs_zero_blocks2(fs, blk, num, &ret_blk2, ret_count);
227 static int mkjournal_proc(ext2_filsys fs,
243 (EXT2FS_B2C(fs, es->goal) == EXT2FS_B2C(fs, es->goal+1)))
246 es->goal &= ~EXT2FS_CLUSTER_MASK(fs);
247 retval = ext2fs_new_block2(fs, es->goal, 0, &new_blk);
252 ext2fs_block_alloc_stats2(fs, new_blk, +1);
260 retval = io_channel_write_blk64(fs->io, new_blk, 1, es->buf);
267 retval = ext2fs_zero_blocks2(fs,
281 memset(es->buf, 0, fs->blocksize);
299 static errcode_t write_journal_inode(ext2_filsys fs, ext2_ino_t journal_ino,
309 if ((retval = ext2fs_create_journal_superblock(fs, num_blocks, flags,
313 if ((retval = ext2fs_read_bitmaps(fs)))
316 if ((retval = ext2fs_read_inode(fs, journal_ino, &inode)))
331 if (fs->super->s_feature_incompat & EXT3_FEATURE_INCOMPAT_EXTENTS) {
333 if ((retval = ext2fs_write_inode(fs, journal_ino, &inode)))
342 group = ext2fs_group_of_blk2(fs, (ext2fs_blocks_count(fs->super) -
343 fs->super->s_first_data_block) / 2);
344 log_flex = 1 << fs->super->s_log_groups_per_flex;
345 if (fs->super->s_log_groups_per_flex && (group > log_flex)) {
347 while ((group < fs->group_desc_count) &&
348 ext2fs_bg_free_blocks_count(fs, group) == 0)
350 if (group == fs->group_desc_count)
355 end = ((group+1) < fs->group_desc_count) ? group+1 : group;
358 if (ext2fs_bg_free_blocks_count(fs, i) >
359 ext2fs_bg_free_blocks_count(fs, group))
362 es.goal = ext2fs_group_first_block2(fs, group);
363 retval = ext2fs_block_iterate3(fs, journal_ino, BLOCK_FLAG_APPEND,
370 retval = ext2fs_zero_blocks2(fs, es.blk_to_zero,
376 if ((retval = ext2fs_read_inode(fs, journal_ino, &inode)))
379 inode_size = (unsigned long long)fs->blocksize * num_blocks;
383 fs->super->s_feature_ro_compat |=
385 ext2fs_iblk_add_blocks(fs, &inode, es.newblocks);
386 inode.i_mtime = inode.i_ctime = fs->now ? fs->now : time(0);
390 if ((retval = ext2fs_write_new_inode(fs, journal_ino, &inode)))
394 memcpy(fs->super->s_jnl_blocks, inode.i_block, EXT2_N_BLOCKS*4);
395 fs->super->s_jnl_blocks[15] = inode.i_size_high;
396 fs->super->s_jnl_blocks[16] = inode.i_size;
397 fs->super->s_jnl_backup_type = EXT3_JNL_BACKUP_BLOCKS;
398 ext2fs_mark_super_dirty(fs);
430 errcode_t ext2fs_add_journal_device(ext2_filsys fs, ext2_filsys journal_dev)
459 if (ntohl(jsb->s_blocksize) != (unsigned long) fs->blocksize)
465 if (memcmp(fs->super->s_uuid,
471 fs->super->s_uuid, 16);
479 fs->super->s_journal_inum = 0;
480 fs->super->s_journal_dev = st.st_rdev;
481 memcpy(fs->super->s_journal_uuid, jsb->s_uuid,
482 sizeof(fs->super->s_journal_uuid));
483 fs->super->s_feature_compat |= EXT3_FEATURE_COMPAT_HAS_JOURNAL;
484 ext2fs_mark_super_dirty(fs);
493 errcode_t ext2fs_add_journal_inode(ext2_filsys fs, blk_t num_blocks, int flags)
504 else if ((retval = ext2fs_check_mount_point(fs->device_name,
544 if ((retval = write_journal_file(fs, jfile, num_blocks, flags)))
578 !(fs->flags & EXT2_FLAG_EXCLUSIVE)) {
583 if ((retval = write_journal_inode(fs, journal_ino,
588 fs->super->s_journal_inum = journal_ino;
589 fs->super->s_journal_dev = 0;
590 memset(fs->super->s_journal_uuid, 0,
591 sizeof(fs->super->s_journal_uuid));
592 fs->super->s_feature_compat |= EXT3_FEATURE_COMPAT_HAS_JOURNAL;
594 ext2fs_mark_super_dirty(fs);
607 ext2_filsys fs;
616 unix_io_manager, &fs);
622 retval = ext2fs_add_journal_inode(fs, 1024, 0);
628 retval = ext2fs_flush(fs);
632 ext2fs_close(fs);