예제 #1
0
파일: drvfs.c 프로젝트: jian-tian/myproc
void test_file(device_t * devp)
{
    printfk("\n\rFile test begin:\n\r");
    test_rfs(devp);
    test_dir(devp);
    chk_rfsbitmap(devp);
    test_allocblk(devp);
    test_fsys(devp);
    printfk("File test end.\n\r");
    //hal_sysdie("test rfs run");
    return;
}
예제 #2
0
파일: rfs.c 프로젝트: AndrewSmart/testdisk
int recover_rfs(disk_t *disk_car, const struct reiserfs_super_block *sb,partition_t *partition,const int verbose, const int dump_ind)
{
  const struct reiser4_master_sb *sb4=(const struct reiser4_master_sb *)sb;
  if(test_rfs(disk_car, sb, partition, verbose)==0)
  {
    if(verbose>0 || dump_ind!=0)
    {
      log_info("\nrecover_rfs\n");
      log_info("block_count=%u\n",(unsigned int)le32(sb->s_block_count));
      log_info("block_size=%u\n",le16(sb->s_blocksize));
      if(dump_ind!=0)
      {
	dump_log(sb,DEFAULT_SECTOR_SIZE);
      }
    }
    partition->part_size = (uint64_t)le32(sb->s_block_count) * le16(sb->s_blocksize);
    partition->part_type_i386 = P_LINUX;
    partition->part_type_mac= PMAC_LINUX;
    partition->part_type_sun= PSUN_LINUX;
    partition->part_type_gpt=GPT_ENT_TYPE_LINUX_DATA;
    guid_cpy(&partition->part_uuid, (const efi_guid_t *)&sb->s_uuid);
    set_rfs_info(sb, partition);
    return 0;
  }
  if(test_rfs4(disk_car, sb4, partition, verbose)==0)
  {
    const struct format40_super *fmt40_super=(const struct format40_super *)((const char*)sb4+le16(sb4->blocksize));
    if(verbose>0 || dump_ind!=0)
    {
      log_info("\nrecover_rfs\n");
      log_info("block_count=%lu\n",(unsigned long int)le64(fmt40_super->sb_block_count));
      log_info("block_size=%u\n",le16(sb4->blocksize));
      if(dump_ind!=0)
      {
	dump_log(sb,DEFAULT_SECTOR_SIZE);
      }
    }
    partition->part_size = (uint64_t)le64(fmt40_super->sb_block_count) * le16(sb4->blocksize);
    partition->part_type_i386 = P_LINUX;
    partition->part_type_mac= PMAC_LINUX;
    partition->part_type_sun= PSUN_LINUX;
    partition->part_type_gpt=GPT_ENT_TYPE_LINUX_DATA;
    guid_cpy(&partition->part_uuid, (const efi_guid_t *)&sb4->uuid);
    set_rfs4_info(sb4, partition);
    return 0;
  }
  return 1;
}
예제 #3
0
파일: rfs.c 프로젝트: AndrewSmart/testdisk
int check_rfs(disk_t *disk_car,partition_t *partition,const int verbose)
{
  unsigned char *buffer=(unsigned char*)MALLOC(REISERFS_SUPER_BLOCK_SIZE);
  if(disk_car->pread(disk_car, buffer, REISERFS_SUPER_BLOCK_SIZE, partition->part_offset + 128 * 512) != REISERFS_SUPER_BLOCK_SIZE) /* 64k offset */
  {
    free(buffer);
    return 1;
  }
  if(test_rfs(disk_car, (struct reiserfs_super_block*)buffer, partition, verbose)==0)
  {
    set_rfs_info((struct reiserfs_super_block*)buffer, partition);
    free(buffer);
    return 0;
  }
  if(test_rfs4(disk_car, (struct reiser4_master_sb*)buffer, partition, verbose)==0)
  {
    set_rfs4_info((const struct reiser4_master_sb*)buffer, partition);
    free(buffer);
    return 0;
  }
  free(buffer);
  return 1;
}