• Home
  • Raw
  • Download

Lines Matching refs:fs

35 blk64_t ext2fs_descriptor_block_loc2(ext2_filsys fs, blk64_t group_block,  in ext2fs_descriptor_block_loc2()  argument
46 if (i == 0 && fs->blocksize == 1024 && EXT2FS_CLUSTER_RATIO(fs) > 1) in ext2fs_descriptor_block_loc2()
49 if (!ext2fs_has_feature_meta_bg(fs->super) || in ext2fs_descriptor_block_loc2()
50 (i < fs->super->s_first_meta_bg)) in ext2fs_descriptor_block_loc2()
53 bg = EXT2_DESC_PER_BLOCK(fs->super) * i; in ext2fs_descriptor_block_loc2()
54 if (ext2fs_bg_has_super(fs, bg)) in ext2fs_descriptor_block_loc2()
56 ret_blk = ext2fs_group_first_block2(fs, bg); in ext2fs_descriptor_block_loc2()
65 if (group_block != fs->super->s_first_data_block && in ext2fs_descriptor_block_loc2()
66 ((ret_blk + has_super + fs->super->s_blocks_per_group) < in ext2fs_descriptor_block_loc2()
67 ext2fs_blocks_count(fs->super))) { in ext2fs_descriptor_block_loc2()
68 ret_blk += fs->super->s_blocks_per_group; in ext2fs_descriptor_block_loc2()
75 if (ext2fs_bg_has_super(fs, bg + 1)) in ext2fs_descriptor_block_loc2()
83 blk_t ext2fs_descriptor_block_loc(ext2_filsys fs, blk_t group_block, dgrp_t i) in ext2fs_descriptor_block_loc() argument
85 return ext2fs_descriptor_block_loc2(fs, group_block, i); in ext2fs_descriptor_block_loc()
121 ext2_filsys fs; in ext2fs_open2() local
141 retval = ext2fs_get_mem(sizeof(struct struct_ext2_filsys), &fs); in ext2fs_open2()
145 memset(fs, 0, sizeof(struct struct_ext2_filsys)); in ext2fs_open2()
146 fs->magic = EXT2_ET_MAGIC_EXT2FS_FILSYS; in ext2fs_open2()
147 fs->flags = flags; in ext2fs_open2()
149 fs->flags |= EXT2_FLAG_MASTER_SB_ONLY; in ext2fs_open2()
150 fs->umask = 022; in ext2fs_open2()
154 fs->now = strtoul(time_env, NULL, 0); in ext2fs_open2()
156 retval = ext2fs_get_mem(strlen(name)+1, &fs->device_name); in ext2fs_open2()
159 strcpy(fs->device_name, name); in ext2fs_open2()
160 cp = strchr(fs->device_name, '?'); in ext2fs_open2()
175 retval = manager->open(fs->device_name, io_flags, &fs->io); in ext2fs_open2()
179 (retval = io_channel_set_options(fs->io, io_options))) in ext2fs_open2()
181 fs->image_io = fs->io; in ext2fs_open2()
182 fs->io->app_data = fs; in ext2fs_open2()
183 retval = io_channel_alloc_buf(fs->io, -SUPERBLOCK_SIZE, &fs->super); in ext2fs_open2()
188 &fs->image_header); in ext2fs_open2()
191 retval = io_channel_read_blk(fs->io, 0, in ext2fs_open2()
193 fs->image_header); in ext2fs_open2()
196 if (ext2fs_le32_to_cpu(fs->image_header->magic_number) != EXT2_ET_MAGIC_E2IMAGE) in ext2fs_open2()
199 block_size = ext2fs_le32_to_cpu(fs->image_header->fs_blocksize); in ext2fs_open2()
216 io_channel_set_blksize(fs->io, block_size); in ext2fs_open2()
218 fs->orig_super = 0; in ext2fs_open2()
220 io_channel_set_blksize(fs->io, SUPERBLOCK_OFFSET); in ext2fs_open2()
223 retval = ext2fs_get_mem(SUPERBLOCK_SIZE, &fs->orig_super); in ext2fs_open2()
228 retval = io_channel_read_blk(fs->io, superblock, -SUPERBLOCK_SIZE, in ext2fs_open2()
229 fs->super); in ext2fs_open2()
232 if (fs->orig_super) in ext2fs_open2()
233 memcpy(fs->orig_super, fs->super, SUPERBLOCK_SIZE); in ext2fs_open2()
235 if (!(fs->flags & EXT2_FLAG_IGNORE_CSUM_ERRORS)) { in ext2fs_open2()
237 if (!ext2fs_verify_csum_type(fs, fs->super)) in ext2fs_open2()
239 if (!ext2fs_superblock_csum_verify(fs, fs->super)) { in ext2fs_open2()
247 fs->flags |= EXT2_FLAG_SWAP_BYTES; in ext2fs_open2()
248 ext2fs_swap_super(fs->super); in ext2fs_open2()
250 if (fs->flags & EXT2_FLAG_SWAP_BYTES) { in ext2fs_open2()
256 if (fs->super->s_magic != EXT2_SUPER_MAGIC) in ext2fs_open2()
261 if (fs->super->s_rev_level > EXT2_LIB_CURRENT_REV) { in ext2fs_open2()
270 features = fs->super->s_feature_incompat; in ext2fs_open2()
280 features = fs->super->s_feature_ro_compat; in ext2fs_open2()
292 ext2fs_has_feature_journal_dev(fs->super)) { in ext2fs_open2()
298 if (fs->super->s_log_block_size > in ext2fs_open2()
308 if (ext2fs_has_feature_bigalloc(fs->super) && in ext2fs_open2()
314 if (!ext2fs_has_feature_bigalloc(fs->super) && in ext2fs_open2()
315 (fs->super->s_log_block_size != fs->super->s_log_cluster_size)) { in ext2fs_open2()
319 fs->fragsize = fs->blocksize = EXT2_BLOCK_SIZE(fs->super); in ext2fs_open2()
320 inode_size = EXT2_INODE_SIZE(fs->super); in ext2fs_open2()
322 (inode_size > fs->blocksize) || in ext2fs_open2()
329 if (ext2fs_has_feature_64bit(fs->super)) { in ext2fs_open2()
330 if (fs->super->s_desc_size < EXT2_MIN_DESC_SIZE_64BIT) { in ext2fs_open2()
336 fs->cluster_ratio_bits = fs->super->s_log_cluster_size - in ext2fs_open2()
337 fs->super->s_log_block_size; in ext2fs_open2()
338 if (EXT2_BLOCKS_PER_GROUP(fs->super) != in ext2fs_open2()
339 EXT2_CLUSTERS_PER_GROUP(fs->super) << fs->cluster_ratio_bits) { in ext2fs_open2()
343 fs->inode_blocks_per_group = ((EXT2_INODES_PER_GROUP(fs->super) * in ext2fs_open2()
344 EXT2_INODE_SIZE(fs->super) + in ext2fs_open2()
345 EXT2_BLOCK_SIZE(fs->super) - 1) / in ext2fs_open2()
346 EXT2_BLOCK_SIZE(fs->super)); in ext2fs_open2()
348 if (block_size != fs->blocksize) { in ext2fs_open2()
356 io_channel_set_blksize(fs->io, fs->blocksize); in ext2fs_open2()
362 if (ext2fs_has_feature_journal_dev(fs->super)) { in ext2fs_open2()
363 fs->group_desc_count = 0; in ext2fs_open2()
364 *ret_fs = fs; in ext2fs_open2()
368 if (EXT2_INODES_PER_GROUP(fs->super) == 0) { in ext2fs_open2()
373 ext2fs_init_csum_seed(fs); in ext2fs_open2()
378 blocks_per_group = EXT2_BLOCKS_PER_GROUP(fs->super); in ext2fs_open2()
380 blocks_per_group > EXT2_MAX_BLOCKS_PER_GROUP(fs->super) || in ext2fs_open2()
381 fs->inode_blocks_per_group > EXT2_MAX_INODES_PER_GROUP(fs->super) || in ext2fs_open2()
382 EXT2_DESC_PER_BLOCK(fs->super) == 0 || in ext2fs_open2()
383 fs->super->s_first_data_block >= ext2fs_blocks_count(fs->super)) { in ext2fs_open2()
387 groups_cnt = ext2fs_div64_ceil(ext2fs_blocks_count(fs->super) - in ext2fs_open2()
388 fs->super->s_first_data_block, in ext2fs_open2()
394 fs->group_desc_count = groups_cnt; in ext2fs_open2()
396 (__u64)fs->group_desc_count * EXT2_INODES_PER_GROUP(fs->super) != in ext2fs_open2()
397 fs->super->s_inodes_count) { in ext2fs_open2()
401 fs->desc_blocks = ext2fs_div_ceil(fs->group_desc_count, in ext2fs_open2()
402 EXT2_DESC_PER_BLOCK(fs->super)); in ext2fs_open2()
405 retval = ext2fs_get_array(fs->desc_blocks, fs->blocksize, in ext2fs_open2()
406 &fs->group_desc); in ext2fs_open2()
410 group_block = fs->super->s_first_data_block; in ext2fs_open2()
422 if (group_block == 0 && fs->blocksize == 1024) in ext2fs_open2()
424 dest = (char *) fs->group_desc; in ext2fs_open2()
426 groups_per_block = EXT2_DESC_PER_BLOCK(fs->super); in ext2fs_open2()
428 if (ext2fs_has_feature_meta_bg(fs->super) && in ext2fs_open2()
430 first_meta_bg = fs->super->s_first_meta_bg; in ext2fs_open2()
431 if (first_meta_bg > fs->desc_blocks) in ext2fs_open2()
432 first_meta_bg = fs->desc_blocks; in ext2fs_open2()
434 first_meta_bg = fs->desc_blocks; in ext2fs_open2()
436 retval = io_channel_read_blk(fs->io, group_block + in ext2fs_open2()
444 gdp = ext2fs_group_desc(fs, fs->group_desc, j); in ext2fs_open2()
446 ext2fs_swap_group_desc2(fs, gdp); in ext2fs_open2()
449 dest += fs->blocksize*first_meta_bg; in ext2fs_open2()
452 for (i = first_meta_bg ; i < fs->desc_blocks; i++) { in ext2fs_open2()
453 blk = ext2fs_descriptor_block_loc2(fs, group_block, i); in ext2fs_open2()
454 io_channel_cache_readahead(fs->io, blk, 1); in ext2fs_open2()
457 for (i=first_meta_bg ; i < fs->desc_blocks; i++) { in ext2fs_open2()
458 blk = ext2fs_descriptor_block_loc2(fs, group_block, i); in ext2fs_open2()
459 retval = io_channel_read_blk64(fs->io, blk, 1, dest); in ext2fs_open2()
464 gdp = ext2fs_group_desc(fs, fs->group_desc, in ext2fs_open2()
467 ext2fs_swap_group_desc2(fs, gdp); in ext2fs_open2()
470 dest += fs->blocksize; in ext2fs_open2()
473 fs->stride = fs->super->s_raid_stride; in ext2fs_open2()
479 if (superblock > 1 && ext2fs_has_group_desc_csum(fs)) { in ext2fs_open2()
482 for (group = 0; group < fs->group_desc_count; group++) { in ext2fs_open2()
483 ext2fs_bg_flags_clear(fs, group, EXT2_BG_BLOCK_UNINIT); in ext2fs_open2()
484 ext2fs_bg_flags_clear(fs, group, EXT2_BG_INODE_UNINIT); in ext2fs_open2()
485 ext2fs_bg_itable_unused_set(fs, group, 0); in ext2fs_open2()
488 ext2fs_group_desc_csum_set(fs, group); in ext2fs_open2()
490 if (fs->flags & EXT2_FLAG_RW) in ext2fs_open2()
491 ext2fs_mark_super_dirty(fs); in ext2fs_open2()
494 if (ext2fs_has_feature_mmp(fs->super) && in ext2fs_open2()
497 retval = ext2fs_mmp_start(fs); in ext2fs_open2()
499 fs->flags |= EXT2_FLAG_SKIP_MMP; /* just do cleanup */ in ext2fs_open2()
500 ext2fs_mmp_stop(fs); in ext2fs_open2()
505 if (fs->flags & EXT2_FLAG_SHARE_DUP) { in ext2fs_open2()
506 fs->block_sha_map = ext2fs_hashmap_create(ext2fs_djb2_hash, in ext2fs_open2()
508 if (!fs->block_sha_map) { in ext2fs_open2()
512 ext2fs_set_feature_shared_blocks(fs->super); in ext2fs_open2()
515 if (ext2fs_has_feature_casefold(fs->super)) in ext2fs_open2()
516 fs->encoding = ext2fs_load_nls_table(fs->super->s_encoding); in ext2fs_open2()
518 fs->flags &= ~EXT2_FLAG_NOFREE_ON_ERROR; in ext2fs_open2()
519 *ret_fs = fs; in ext2fs_open2()
524 ext2fs_free(fs); in ext2fs_open2()
525 fs = NULL; in ext2fs_open2()
527 *ret_fs = fs; in ext2fs_open2()
536 errcode_t ext2fs_get_data_io(ext2_filsys fs, io_channel *old_io) in ext2fs_get_data_io() argument
538 if ((fs->flags & EXT2_FLAG_IMAGE_FILE) == 0) in ext2fs_get_data_io()
541 *old_io = (fs->image_io == fs->io) ? 0 : fs->io; in ext2fs_get_data_io()
546 errcode_t ext2fs_set_data_io(ext2_filsys fs, io_channel new_io) in ext2fs_set_data_io() argument
548 if ((fs->flags & EXT2_FLAG_IMAGE_FILE) == 0) in ext2fs_set_data_io()
550 fs->io = new_io ? new_io : fs->image_io; in ext2fs_set_data_io()
554 errcode_t ext2fs_rewrite_to_io(ext2_filsys fs, io_channel new_io) in ext2fs_rewrite_to_io() argument
558 if ((fs->flags & EXT2_FLAG_IMAGE_FILE) == 0) in ext2fs_rewrite_to_io()
560 err = io_channel_set_blksize(new_io, fs->blocksize); in ext2fs_rewrite_to_io()
563 if ((new_io == fs->image_io) || (new_io == fs->io)) in ext2fs_rewrite_to_io()
565 if ((fs->image_io != fs->io) && in ext2fs_rewrite_to_io()
566 fs->image_io) in ext2fs_rewrite_to_io()
567 io_channel_close(fs->image_io); in ext2fs_rewrite_to_io()
568 if (fs->io) in ext2fs_rewrite_to_io()
569 io_channel_close(fs->io); in ext2fs_rewrite_to_io()
570 fs->io = fs->image_io = new_io; in ext2fs_rewrite_to_io()
571 fs->flags |= EXT2_FLAG_DIRTY | EXT2_FLAG_RW | in ext2fs_rewrite_to_io()
573 fs->flags &= ~EXT2_FLAG_IMAGE_FILE; in ext2fs_rewrite_to_io()