Lines Matching defs:fs

35 int ext2fs_bg_has_super(ext2_filsys fs, dgrp_t group)
37 if (!(fs->super->s_feature_ro_compat &
51 * @fs: ext2 fs pointer
63 errcode_t ext2fs_super_and_bgd_loc2(ext2_filsys fs,
76 group_block = ext2fs_group_first_block2(fs, group);
77 if (group_block == 0 && fs->blocksize == 1024)
80 if (fs->super->s_feature_incompat & EXT2_FEATURE_INCOMPAT_META_BG)
81 old_desc_blocks = fs->super->s_first_meta_bg;
84 fs->desc_blocks + fs->super->s_reserved_gdt_blocks;
86 has_super = ext2fs_bg_has_super(fs, group);
92 meta_bg_size = EXT2_DESC_PER_BLOCK(fs->super);
95 if (!(fs->super->s_feature_incompat & EXT2_FEATURE_INCOMPAT_META_BG) ||
96 (meta_bg < fs->super->s_first_meta_bg)) {
137 int ext2fs_super_and_bgd_loc(ext2_filsys fs,
151 ext2fs_super_and_bgd_loc2(fs, group, &ret_super_blk2,
156 numblocks = ext2fs_group_blocks_count(fs, group);
165 meta_bg_size = EXT2_DESC_PER_BLOCK(fs->super);
169 numblocks -= 2 + fs->inode_blocks_per_group + ret_used_blks;
184 static errcode_t write_primary_superblock(ext2_filsys fs,
191 if (!fs->io->manager->write_byte || !fs->orig_super) {
193 io_channel_set_blksize(fs->io, SUPERBLOCK_OFFSET);
194 retval = io_channel_write_blk64(fs->io, 1, -SUPERBLOCK_SIZE,
196 io_channel_set_blksize(fs->io, fs->blocksize);
200 old_super = (__u16 *) fs->orig_super;
215 retval = io_channel_write_byte(fs->io,
223 memcpy(fs->orig_super, super, SUPERBLOCK_SIZE);
231 void ext2fs_update_dynamic_rev(ext2_filsys fs)
233 struct ext2_super_block *sb = fs->super;
245 static errcode_t write_backup_super(ext2_filsys fs, dgrp_t group,
256 fs->super->s_block_group_nr = sgrp;
259 return io_channel_write_blk64(fs->io, group_block, -SUPERBLOCK_SIZE,
263 errcode_t ext2fs_flush(ext2_filsys fs)
265 return ext2fs_flush2(fs, 0);
268 errcode_t ext2fs_flush2(ext2_filsys fs, int flags)
284 EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
286 fs_state = fs->super->s_state;
287 feature_incompat = fs->super->s_feature_incompat;
289 fs->super->s_wtime = fs->now ? fs->now : time(NULL);
290 fs->super->s_block_group_nr = 0;
296 retval = ext2fs_get_array(fs->desc_blocks, fs->blocksize,
300 memcpy(group_shadow, fs->group_desc, (size_t) fs->blocksize *
301 fs->desc_blocks);
304 for (j = 0; j < fs->group_desc_count; j++) {
305 gdp = ext2fs_group_desc(fs, group_shadow, j);
306 ext2fs_swap_group_desc2(fs, gdp);
309 super_shadow = fs->super;
310 group_shadow = ext2fs_group_desc(fs, fs->group_desc, 0);
318 fs->super->s_state &= ~EXT2_VALID_FS;
319 fs->super->s_feature_incompat &= ~EXT3_FEATURE_INCOMPAT_RECOVER;
321 *super_shadow = *fs->super;
329 if (fs->super->s_feature_incompat &
338 if (fs->super->s_feature_incompat & EXT2_FEATURE_INCOMPAT_META_BG)
339 old_desc_blocks = fs->super->s_first_meta_bg;
341 old_desc_blocks = fs->desc_blocks;
343 ext2fs_numeric_progress_init(fs, &progress, NULL,
344 fs->group_desc_count);
347 for (i = 0; i < fs->group_desc_count; i++) {
350 ext2fs_numeric_progress_update(fs, &progress, i);
351 ext2fs_super_and_bgd_loc2(fs, i, &super_blk, &old_desc_blk,
354 if (!(fs->flags & EXT2_FLAG_MASTER_SB_ONLY) &&i && super_blk) {
355 retval = write_backup_super(fs, i, super_blk,
360 if (fs->flags & EXT2_FLAG_SUPER_ONLY)
363 (!(fs->flags & EXT2_FLAG_MASTER_SB_ONLY) || (i == 0))) {
364 retval = io_channel_write_blk64(fs->io,
370 int meta_bg = i / EXT2_DESC_PER_BLOCK(fs->super);
372 retval = io_channel_write_blk64(fs->io, new_desc_blk,
373 1, group_ptr + (meta_bg*fs->blocksize));
379 ext2fs_numeric_progress_close(fs, &progress, NULL);
387 if (fs->write_bitmaps) {
388 retval = fs->write_bitmaps(fs);
402 fs->super->s_block_group_nr = 0;
403 fs->super->s_state = fs_state;
404 fs->super->s_feature_incompat = feature_incompat;
406 *super_shadow = *fs->super;
411 retval = io_channel_flush(fs->io);
412 retval = write_primary_superblock(fs, super_shadow);
416 fs->flags &= ~EXT2_FLAG_DIRTY;
419 retval = io_channel_flush(fs->io);
421 fs->super->s_state = fs_state;
431 errcode_t ext2fs_close(ext2_filsys fs)
433 return ext2fs_close2(fs, 0);
436 errcode_t ext2fs_close2(ext2_filsys fs, int flags)
442 EXT2_CHECK_MAGIC(fs, EXT2_ET_MAGIC_EXT2FS_FILSYS);
444 if (fs->write_bitmaps) {
445 retval = fs->write_bitmaps(fs);
449 if (fs->super->s_kbytes_written &&
450 fs->io->manager->get_stats)
451 fs->io->manager->get_stats(fs->io, &stats);
452 if (stats && stats->bytes_written && (fs->flags & EXT2_FLAG_RW)) {
453 fs->super->s_kbytes_written += stats->bytes_written >> 10;
454 meta_blks = fs->desc_blocks + 1;
455 if (!(fs->flags & EXT2_FLAG_SUPER_ONLY))
456 fs->super->s_kbytes_written += meta_blks /
457 (fs->blocksize / 1024);
458 if ((fs->flags & EXT2_FLAG_DIRTY) == 0)
459 fs->flags |= EXT2_FLAG_SUPER_ONLY | EXT2_FLAG_DIRTY;
461 if (fs->flags & EXT2_FLAG_DIRTY) {
462 retval = ext2fs_flush2(fs, flags);
467 retval = ext2fs_mmp_stop(fs);
471 ext2fs_free(fs);