Lines Matching refs:fs
47 errcode_t ext2fs_create_journal_superblock2(ext2_filsys fs, in ext2fs_create_journal_superblock2() argument
57 if ((retval = ext2fs_get_mem(fs->blocksize, &jsb))) in ext2fs_create_journal_superblock2()
60 memset (jsb, 0, fs->blocksize); in ext2fs_create_journal_superblock2()
67 jsb->s_blocksize = htonl(fs->blocksize); in ext2fs_create_journal_superblock2()
73 memcpy(jsb->s_uuid, fs->super->s_uuid, sizeof(fs->super->s_uuid)); in ext2fs_create_journal_superblock2()
78 if (ext2fs_has_feature_journal_dev(fs->super)) { in ext2fs_create_journal_superblock2()
80 jsb->s_first = htonl(ext2fs_journal_sb_start(fs->blocksize) + 1); in ext2fs_create_journal_superblock2()
87 errcode_t ext2fs_create_journal_superblock(ext2_filsys fs, __u32 num_blocks, in ext2fs_create_journal_superblock() argument
95 return ext2fs_create_journal_superblock2(fs, &jparams, flags, ret_sb); in ext2fs_create_journal_superblock()
103 static errcode_t write_journal_file(ext2_filsys fs, char *filename, in write_journal_file() argument
112 if ((retval = ext2fs_create_journal_superblock2(fs, jparams, flags, in write_journal_file()
124 ret_size = write(fd, buf, fs->blocksize); in write_journal_file()
129 if (ret_size != (int) fs->blocksize) in write_journal_file()
131 memset(buf, 0, fs->blocksize); in write_journal_file()
137 ret_size = write(fd, buf, fs->blocksize); in write_journal_file()
142 if (ret_size != (int) fs->blocksize) in write_journal_file()
165 #define MAX_STRIDE_LENGTH (4194304 / (int) fs->blocksize)
166 errcode_t ext2fs_zero_blocks2(ext2_filsys fs, blk64_t blk, int num, in ext2fs_zero_blocks2() argument
175 if (!fs) { in ext2fs_zero_blocks2()
189 retval = io_channel_zeroout(fs->io, blk, num); in ext2fs_zero_blocks2()
200 p = realloc(buf, fs->blocksize * new_stride); in ext2fs_zero_blocks2()
205 memset(buf, 0, fs->blocksize * stride_length); in ext2fs_zero_blocks2()
219 retval = io_channel_write_blk64(fs->io, blk, count, buf); in ext2fs_zero_blocks2()
232 errcode_t ext2fs_zero_blocks(ext2_filsys fs, blk_t blk, int num, in ext2fs_zero_blocks() argument
238 retval = ext2fs_zero_blocks2(fs, blk, num, &ret_blk2, ret_count); in ext2fs_zero_blocks()
249 static blk64_t get_midpoint_journal_block(ext2_filsys fs) in get_midpoint_journal_block() argument
253 group = ext2fs_group_of_blk2(fs, (ext2fs_blocks_count(fs->super) - in get_midpoint_journal_block()
254 fs->super->s_first_data_block) / 2); in get_midpoint_journal_block()
255 log_flex = 1 << fs->super->s_log_groups_per_flex; in get_midpoint_journal_block()
256 if (fs->super->s_log_groups_per_flex && (group > log_flex)) { in get_midpoint_journal_block()
258 while ((group < fs->group_desc_count) && in get_midpoint_journal_block()
259 ext2fs_bg_free_blocks_count(fs, group) == 0) in get_midpoint_journal_block()
261 if (group == fs->group_desc_count) in get_midpoint_journal_block()
266 end = ((group+1) < fs->group_desc_count) ? group+1 : group; in get_midpoint_journal_block()
269 if (ext2fs_bg_free_blocks_count(fs, i) > in get_midpoint_journal_block()
270 ext2fs_bg_free_blocks_count(fs, group)) in get_midpoint_journal_block()
272 return ext2fs_group_first_block2(fs, group); in get_midpoint_journal_block()
278 static errcode_t write_journal_inode(ext2_filsys fs, ext2_ino_t journal_ino, in write_journal_inode() argument
289 if ((retval = ext2fs_create_journal_superblock2(fs, jparams, flags, in write_journal_inode()
293 if ((retval = ext2fs_read_bitmaps(fs))) in write_journal_inode()
296 if ((retval = ext2fs_read_inode(fs, journal_ino, &inode))) in write_journal_inode()
305 goal = get_midpoint_journal_block(fs); in write_journal_inode()
307 if (ext2fs_has_feature_extents(fs->super)) in write_journal_inode()
313 inode_size = (unsigned long long)fs->blocksize * in write_journal_inode()
315 inode.i_mtime = inode.i_ctime = fs->now ? fs->now : time(0); in write_journal_inode()
318 retval = ext2fs_inode_size_set(fs, &inode, inode_size); in write_journal_inode()
322 retval = ext2fs_fallocate(fs, falloc_flags, journal_ino, in write_journal_inode()
328 if ((retval = ext2fs_write_new_inode(fs, journal_ino, &inode))) in write_journal_inode()
331 retval = ext2fs_bmap2(fs, journal_ino, &inode, NULL, 0, 0, NULL, &zblk); in write_journal_inode()
335 retval = io_channel_write_blk64(fs->io, zblk, 1, buf); in write_journal_inode()
339 memcpy(fs->super->s_jnl_blocks, inode.i_block, EXT2_N_BLOCKS*4); in write_journal_inode()
340 fs->super->s_jnl_blocks[15] = inode.i_size_high; in write_journal_inode()
341 fs->super->s_jnl_blocks[16] = inode.i_size; in write_journal_inode()
342 fs->super->s_jnl_backup_type = EXT3_JNL_BACKUP_BLOCKS; in write_journal_inode()
343 ext2fs_mark_super_dirty(fs); in write_journal_inode()
379 ext2_filsys fs) in ext2fs_get_journal_params() argument
385 if (ext2fs_has_feature_journal_dev(fs->super)) { in ext2fs_get_journal_params()
386 total_blks = ext2fs_blocks_count(fs->super); in ext2fs_get_journal_params()
390 if (!ext2fs_has_feature_fast_commit(fs->super)) { in ext2fs_get_journal_params()
395 params->num_journal_blocks = ext2fs_blocks_count(fs->super) * in ext2fs_get_journal_params()
404 ret = ext2fs_default_journal_size(ext2fs_blocks_count(fs->super)); in ext2fs_get_journal_params()
409 if (ext2fs_has_feature_fast_commit(fs->super)) in ext2fs_get_journal_params()
425 errcode_t ext2fs_add_journal_device(ext2_filsys fs, ext2_filsys journal_dev) in ext2fs_add_journal_device() argument
453 if (ntohl(jsb->s_blocksize) != (unsigned long) fs->blocksize) in ext2fs_add_journal_device()
461 if (memcmp(fs->super->s_uuid, in ext2fs_add_journal_device()
467 fs->super->s_uuid, 16); in ext2fs_add_journal_device()
476 fs->super->s_journal_inum = 0; in ext2fs_add_journal_device()
477 fs->super->s_journal_dev = st.st_rdev; in ext2fs_add_journal_device()
478 memcpy(fs->super->s_journal_uuid, jsb->s_uuid, in ext2fs_add_journal_device()
479 sizeof(fs->super->s_journal_uuid)); in ext2fs_add_journal_device()
480 memset(fs->super->s_jnl_blocks, 0, sizeof(fs->super->s_jnl_blocks)); in ext2fs_add_journal_device()
481 ext2fs_set_feature_journal(fs->super); in ext2fs_add_journal_device()
482 ext2fs_mark_super_dirty(fs); in ext2fs_add_journal_device()
491 errcode_t ext2fs_add_journal_inode3(ext2_filsys fs, struct ext2fs_journal_params *jparams, in ext2fs_add_journal_inode3() argument
503 else if ((retval = ext2fs_check_mount_point(fs->device_name, in ext2fs_add_journal_inode3()
543 if ((retval = write_journal_file(fs, jfile, jparams, flags))) in ext2fs_add_journal_inode3()
575 memset(fs->super->s_jnl_blocks, 0, in ext2fs_add_journal_inode3()
576 sizeof(fs->super->s_jnl_blocks)); in ext2fs_add_journal_inode3()
579 !(fs->flags & EXT2_FLAG_EXCLUSIVE)) { in ext2fs_add_journal_inode3()
584 if ((retval = write_journal_inode(fs, journal_ino, in ext2fs_add_journal_inode3()
589 fs->super->s_journal_inum = journal_ino; in ext2fs_add_journal_inode3()
590 fs->super->s_journal_dev = 0; in ext2fs_add_journal_inode3()
591 memset(fs->super->s_journal_uuid, 0, in ext2fs_add_journal_inode3()
592 sizeof(fs->super->s_journal_uuid)); in ext2fs_add_journal_inode3()
593 ext2fs_set_feature_journal(fs->super); in ext2fs_add_journal_inode3()
595 ext2fs_mark_super_dirty(fs); in ext2fs_add_journal_inode3()
603 errcode_t ext2fs_add_journal_inode2(ext2_filsys fs, blk_t num_blocks, in ext2fs_add_journal_inode2() argument
611 return ext2fs_add_journal_inode3(fs, &jparams, goal, flags); in ext2fs_add_journal_inode2()
614 errcode_t ext2fs_add_journal_inode(ext2_filsys fs, blk_t num_blocks, int flags) in ext2fs_add_journal_inode() argument
616 return ext2fs_add_journal_inode2(fs, num_blocks, ~0ULL, flags); in ext2fs_add_journal_inode()
625 ext2_filsys fs; in main() local
634 unix_io_manager, &fs); in main()
640 retval = ext2fs_add_journal_inode(fs, JBD2_MIN_JOURNAL_BLOCKS, 0); in main()
646 retval = ext2fs_flush(fs); in main()
650 ext2fs_close_free(&fs); in main()