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, size, flags, &buf)))
111 ret_size = write(fd, buf, fs->blocksize);
116 if (ret_size != (int) fs->blocksize)
118 memset(buf, 0, fs->blocksize);
121 ret_size = write(fd, buf, fs->blocksize);
126 if (ret_size != (int) fs->blocksize)
148 errcode_t ext2fs_zero_blocks(ext2_filsys fs, blk_t blk, int num,
155 /* If fs is null, clean up the static buffer and return */
156 if (!fs) {
165 buf = malloc(fs->blocksize * STRIDE_LENGTH);
168 memset(buf, 0, fs->blocksize * STRIDE_LENGTH);
182 retval = io_channel_write_blk(fs->io, blk, count, buf);
208 static int mkjournal_proc(ext2_filsys fs,
223 retval = ext2fs_new_block(fs, es->goal, 0, &new_blk);
234 retval = io_channel_write_blk(fs->io, new_blk, 1, es->buf);
241 retval = ext2fs_zero_blocks(fs,
255 memset(es->buf, 0, fs->blocksize);
262 ext2fs_block_alloc_stats(fs, new_blk, +1);
274 static errcode_t write_journal_inode(ext2_filsys fs, ext2_ino_t journal_ino,
283 if ((retval = ext2fs_create_journal_superblock(fs, size, flags, &buf)))
286 if ((retval = ext2fs_read_bitmaps(fs)))
289 if ((retval = ext2fs_read_inode(fs, journal_ino, &inode)))
301 if (fs->super->s_feature_incompat & EXT3_FEATURE_INCOMPAT_EXTENTS) {
303 if ((retval = ext2fs_write_inode(fs, journal_ino, &inode)))
312 group = ext2fs_group_of_blk(fs, (fs->super->s_blocks_count -
313 fs->super->s_first_data_block) / 2);
314 log_flex = 1 << fs->super->s_log_groups_per_flex;
315 if (fs->super->s_log_groups_per_flex && (group > log_flex)) {
317 while ((group < fs->group_desc_count) &&
318 fs->group_desc[group].bg_free_blocks_count == 0)
320 if (group == fs->group_desc_count)
325 end = ((group+1) < fs->group_desc_count) ? group+1 : group;
328 if (fs->group_desc[i].bg_free_blocks_count >
329 fs->group_desc[group].bg_free_blocks_count)
332 es.goal = (fs->super->s_blocks_per_group * group) +
333 fs->super->s_first_data_block;
335 retval = ext2fs_block_iterate2(fs, journal_ino, BLOCK_FLAG_APPEND,
342 retval = ext2fs_zero_blocks(fs, es.blk_to_zero,
348 if ((retval = ext2fs_read_inode(fs, journal_ino, &inode)))
351 inode.i_size += fs->blocksize * size;
352 ext2fs_iblk_add_blocks(fs, &inode, es.newblocks);
353 inode.i_mtime = inode.i_ctime = fs->now ? fs->now : time(0);
357 if ((retval = ext2fs_write_new_inode(fs, journal_ino, &inode)))
361 memcpy(fs->super->s_jnl_blocks, inode.i_block, EXT2_N_BLOCKS*4);
362 fs->super->s_jnl_blocks[16] = inode.i_size;
363 fs->super->s_jnl_backup_type = EXT3_JNL_BACKUP_BLOCKS;
364 ext2fs_mark_super_dirty(fs);
394 errcode_t ext2fs_add_journal_device(ext2_filsys fs, ext2_filsys journal_dev)
422 if (ntohl(jsb->s_blocksize) != (unsigned long) fs->blocksize)
428 if (memcmp(fs->super->s_uuid,
434 fs->super->s_uuid, 16);
442 fs->super->s_journal_inum = 0;
443 fs->super->s_journal_dev = st.st_rdev;
444 memcpy(fs->super->s_journal_uuid, jsb->s_uuid,
445 sizeof(fs->super->s_journal_uuid));
446 fs->super->s_feature_compat |= EXT3_FEATURE_COMPAT_HAS_JOURNAL;
447 ext2fs_mark_super_dirty(fs);
456 errcode_t ext2fs_add_journal_inode(ext2_filsys fs, blk_t size, int flags)
465 if ((retval = ext2fs_check_mount_point(fs->device_name, &mount_flags,
493 if ((retval = write_journal_file(fs, jfile, size, flags)))
527 !(fs->flags & EXT2_FLAG_EXCLUSIVE)) {
532 if ((retval = write_journal_inode(fs, journal_ino,
537 fs->super->s_journal_inum = journal_ino;
538 fs->super->s_journal_dev = 0;
539 memset(fs->super->s_journal_uuid, 0,
540 sizeof(fs->super->s_journal_uuid));
541 fs->super->s_feature_compat |= EXT3_FEATURE_COMPAT_HAS_JOURNAL;
543 ext2fs_mark_super_dirty(fs);
556 ext2_filsys fs;
565 unix_io_manager, &fs);
571 retval = ext2fs_add_journal_inode(fs, 1024);
577 retval = ext2fs_flush(fs);
581 ext2fs_close(fs);