Home | History | Annotate | Download | only in ext2fs

Lines Matching defs:fs

46 errcode_t ext2fs_create_journal_superblock(ext2_filsys fs,
56 if ((retval = ext2fs_get_mem(fs->blocksize, &jsb)))
59 memset (jsb, 0, fs->blocksize);
66 jsb->s_blocksize = htonl(fs->blocksize);
71 memcpy(jsb->s_uuid, fs->super->s_uuid, sizeof(fs->super->s_uuid));
76 if (ext2fs_has_feature_journal_dev(fs->super)) {
78 jsb->s_first = htonl(ext2fs_journal_sb_start(fs->blocksize) + 1);
90 static errcode_t write_journal_file(ext2_filsys fs, char *filename,
98 if ((retval = ext2fs_create_journal_superblock(fs, num_blocks, flags,
110 ret_size = write(fd, buf, fs->blocksize);
115 if (ret_size != (int) fs->blocksize)
117 memset(buf, 0, fs->blocksize);
123 ret_size = write(fd, buf, fs->blocksize);
128 if (ret_size != (int) fs->blocksize)
151 #define MAX_STRIDE_LENGTH (4194304 / (int) fs->blocksize)
152 errcode_t ext2fs_zero_blocks2(ext2_filsys fs, blk64_t blk, int num,
160 /* If fs is null, clean up the static buffer and return */
161 if (!fs) {
175 retval = io_channel_zeroout(fs->io, blk, num);
186 p = realloc(buf, fs->blocksize * new_stride);
191 memset(buf, 0, fs->blocksize * stride_length);
205 retval = io_channel_write_blk64(fs->io, blk, count, buf);
218 errcode_t ext2fs_zero_blocks(ext2_filsys fs, blk_t blk, int num,
224 retval = ext2fs_zero_blocks2(fs, blk, num, &ret_blk2, ret_count);
235 static blk64_t get_midpoint_journal_block(ext2_filsys fs)
239 group = ext2fs_group_of_blk2(fs, (ext2fs_blocks_count(fs->super) -
240 fs->super->s_first_data_block) / 2);
241 log_flex = 1 << fs->super->s_log_groups_per_flex;
242 if (fs->super->s_log_groups_per_flex && (group > log_flex)) {
244 while ((group < fs->group_desc_count) &&
245 ext2fs_bg_free_blocks_count(fs, group) == 0)
247 if (group == fs->group_desc_count)
252 end = ((group+1) < fs->group_desc_count) ? group+1 : group;
255 if (ext2fs_bg_free_blocks_count(fs, i) >
256 ext2fs_bg_free_blocks_count(fs, group))
258 return ext2fs_group_first_block2(fs, group);
264 static errcode_t write_journal_inode(ext2_filsys fs, ext2_ino_t journal_ino,
274 if ((retval = ext2fs_create_journal_superblock(fs, num_blocks, flags,
278 if ((retval = ext2fs_read_bitmaps(fs)))
281 if ((retval = ext2fs_read_inode(fs, journal_ino, &inode)))
290 goal = get_midpoint_journal_block(fs);
292 if (ext2fs_has_feature_extents(fs->super))
298 inode_size = (unsigned long long)fs->blocksize * num_blocks;
299 inode.i_mtime = inode.i_ctime = fs->now ? fs->now : time(0);
302 retval = ext2fs_inode_size_set(fs, &inode, inode_size);
306 retval = ext2fs_fallocate(fs, falloc_flags, journal_ino,
311 if ((retval = ext2fs_write_new_inode(fs, journal_ino, &inode)))
314 retval = ext2fs_bmap2(fs, journal_ino, &inode, NULL, 0, 0, NULL, &zblk);
318 retval = io_channel_write_blk64(fs->io, zblk, 1, buf);
322 memcpy(fs->super->s_jnl_blocks, inode.i_block, EXT2_N_BLOCKS*4);
323 fs->super->s_jnl_blocks[15] = inode.i_size_high;
324 fs->super->s_jnl_blocks[16] = inode.i_size;
325 fs->super->s_jnl_backup_type = EXT3_JNL_BACKUP_BLOCKS;
326 ext2fs_mark_super_dirty(fs);
371 errcode_t ext2fs_add_journal_device(ext2_filsys fs, ext2_filsys journal_dev)
399 if (ntohl(jsb->s_blocksize) != (unsigned long) fs->blocksize)
405 if (memcmp(fs->super->s_uuid,
411 fs->super->s_uuid, 16);
420 fs->super->s_journal_inum = 0;
421 fs->super->s_journal_dev = st.st_rdev;
422 memcpy(fs->super->s_journal_uuid, jsb->s_uuid,
423 sizeof(fs->super->s_journal_uuid));
424 memset(fs->super->s_jnl_blocks, 0, sizeof(fs->super->s_jnl_blocks));
425 ext2fs_set_feature_journal(fs->super);
426 ext2fs_mark_super_dirty(fs);
435 errcode_t ext2fs_add_journal_inode2(ext2_filsys fs, blk_t num_blocks,
447 else if ((retval = ext2fs_check_mount_point(fs->device_name,
487 if ((retval = write_journal_file(fs, jfile, num_blocks, flags)))
519 memset(fs->super->s_jnl_blocks, 0,
520 sizeof(fs->super->s_jnl_blocks));
523 !(fs->flags & EXT2_FLAG_EXCLUSIVE)) {
528 if ((retval = write_journal_inode(fs, journal_ino,
533 fs->super->s_journal_inum = journal_ino;
534 fs->super->s_journal_dev = 0;
535 memset(fs->super->s_journal_uuid, 0,
536 sizeof(fs->super->s_journal_uuid));
537 ext2fs_set_feature_journal(fs->super);
539 ext2fs_mark_super_dirty(fs);
547 errcode_t ext2fs_add_journal_inode(ext2_filsys fs, blk_t num_blocks, int flags)
549 return ext2fs_add_journal_inode2(fs, num_blocks, ~0ULL, flags);
558 ext2_filsys fs;
567 unix_io_manager, &fs);
573 retval = ext2fs_add_journal_inode(fs, JFS_MIN_JOURNAL_BLOCKS, 0);
579 retval = ext2fs_flush(fs);
583 ext2fs_close_free(&fs);