Changes in / [903a897:1a1a735] in mainline


Ignore:
Location:
uspace
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/hdisk/func_gpt.c

    r903a897 r1a1a735  
    4444static int set_gpt_partition(tinput_t *, gpt_part_t *);
    4545
     46
    4647int construct_gpt_label(label_t *this)
    4748{
     
    4950        this->alignment = 1;
    5051       
    51         this->add_part      = add_gpt_part;
    52         this->delete_part   = delete_gpt_part;
    53         this->destroy_label = destroy_gpt_label;
    54         this->new_label     = new_gpt_label;
    55         this->print_parts   = print_gpt_parts;
    56         this->read_parts    = read_gpt_parts;
    57         this->write_parts   = write_gpt_parts;
    58         this->extra_funcs   = extra_gpt_funcs;
     52        this->add_part    = add_gpt_part;
     53        this->delete_part = delete_gpt_part;
     54        this->new_label   = new_gpt_label;
     55        this->print_parts = print_gpt_parts;
     56        this->read_parts  = read_gpt_parts;
     57        this->write_parts = write_gpt_parts;
     58        this->extra_funcs = extra_gpt_funcs;
    5959       
    6060        return this->new_label(this);
     
    110110        gpt_part_foreach(this->data.gpt, iter) {
    111111                i++;
    112                
     112                //FIXMEE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    113113                if (gpt_get_part_type(iter) == GPT_PTE_UNUSED)
    114114                        continue;
     
    122122                                gpt_get_end_lba(iter) - gpt_get_start_lba(iter), gpt_get_part_type(iter),
    123123                                gpt_get_part_name(iter));
    124                
    125124        }
    126125       
     
    193192        gpt_set_end_lba(p, ea);
    194193       
    195         //printf("Set type : ");
    196         //size_t idx = get_input_size_t(in);
    197         //gpt_set_part_type(p, idx);
    198        
    199         gpt_set_random_uuid(p->part_type);
    200         gpt_set_random_uuid(p->part_id);
    201194       
    202195        char *name;
     
    208201        }
    209202       
     203        printf("name: %s, len: %d\n", name, str_size(name));
    210204        gpt_set_part_name(p, name, str_size(name));
    211205       
  • uspace/app/hdisk/hdisk.c

    r903a897 r1a1a735  
    144144        rc = interact(dev_handle);
    145145       
     146        free_label();
     147       
    146148        return rc;
    147149}
  • uspace/lib/gpt/libgpt.c

    r903a897 r1a1a735  
    230230        int rc;
    231231        unsigned int i;
    232         uint32_t fillries = uint32_t_le2host(label->gpt->header->fillries);
     232        uint32_t fill = uint32_t_le2host(label->gpt->header->fillries);
    233233        uint32_t ent_size = uint32_t_le2host(label->gpt->header->entry_size);
    234234        uint64_t ent_lba = uint64_t_le2host(label->gpt->header->entry_lba);
    235235       
    236236        if (label->parts == NULL) {
    237                 label->parts = alloc_part_array(fillries);
     237                label->parts = alloc_part_array(fill);
    238238                if (label->parts == NULL) {
    239239                        return ENOMEM;
     
    263263         * will always read just sizeof(gpt_entry_t) bytes - hopefully they
    264264         * don't break backward compatibility) */
    265         for (i = 0; i < fillries; ++i) {
     265        for (i = 0; i < fill; ++i) {
    266266                //FIXME: this does bypass cache...
    267267                rc = block_read_bytes_direct(label->device, pos, sizeof(gpt_entry_t), label->parts->part_array + i);
     
    280280         */
    281281        uint32_t crc = compute_crc32((uint8_t *) label->parts->part_array,
    282                            fillries * sizeof(gpt_entry_t));
     282                           label->parts->fill * sizeof(gpt_entry_t));
    283283
    284284        if(uint32_t_le2host(label->gpt->header->pe_array_crc32) != crc)
     
    312312        size_t b_size;
    313313        uint32_t e_size = uint32_t_le2host(label->gpt->header->entry_size);
    314         size_t fillries = label->parts->fill > GPT_MIN_PART_NUM ? label->parts->fill : GPT_MIN_PART_NUM;
    315        
    316         label->gpt->header->fillries = host2uint32_t_le(fillries);
    317         label->gpt->header->pe_array_crc32 = host2uint32_t_le(compute_crc32(
     314        size_t fill = label->parts->fill > GPT_MIN_PART_NUM ? label->parts->fill : GPT_MIN_PART_NUM;
     315       
     316        label->gpt->header->pe_array_crc32 = compute_crc32(
    318317                                       (uint8_t *) label->parts->part_array,
    319                                        fillries * e_size));
     318                                       fill * e_size);
    320319       
    321320        /* comm_size of 4096 is ignored */
     
    340339        /* Write to main GPT partition array location */
    341340        rc = block_write_direct(dev_handle, uint64_t_le2host(label->gpt->header->entry_lba),
    342                  nearest_larger_int((uint64_t_le2host(label->gpt->header->entry_size) * fillries) / b_size),
    343                  label->parts->part_array);
     341                        nearest_larger_int((uint64_t_le2host(label->gpt->header->entry_size) * label->parts->fill) / b_size),
     342                        label->parts->part_array);
    344343        if (rc != EOK)
    345344                goto fail;
     
    386385{
    387386        gpt_part_t *p;
    388        
    389387       
    390388        /* Find the first empty entry */
     
    484482        memset(label->parts->part_array + idx, 0, sizeof(gpt_entry_t));
    485483       
    486         label->parts->fill = idx;
     484        label->parts->fill -= 1;
    487485       
    488486        /* FIXME! HOPEFULLY FIXED.
     
    635633}
    636634
    637 void gpt_set_random_uuid(uint8_t * uuid)
    638 {
    639         srandom((unsigned int) uuid);
    640        
    641         unsigned int i;
    642         for (i = 0; i < 16/sizeof(long int); ++i)
    643                 ((long int *)uuid)[i] = random();
    644        
    645 }
    646 
    647635// Internal functions follow //
    648636
     
    695683        }
    696684
    697         res->fill = 0;
    698         res->arr_size = num;
     685        res->fill = num;
     686        res->arr_size = size;
    699687
    700688        return res;
     
    703691static int extend_part_array(gpt_partitions_t * p)
    704692{
    705         size_t nsize = p->arr_size * 2;
     693        unsigned int nsize = p->arr_size * 2;
    706694        gpt_entry_t * tmp = malloc(nsize * sizeof(gpt_entry_t));
    707695        if(tmp == NULL) {
     
    709697                return -1;
    710698        }
    711        
    712         memcpy(tmp, p->part_array, p->fill * sizeof(gpt_entry_t));
     699
     700        memcpy(tmp, p->part_array, p->fill);
    713701        free(p->part_array);
    714702        p->part_array = tmp;
  • uspace/lib/gpt/libgpt.h

    r903a897 r1a1a735  
    167167extern void            gpt_set_flag     (gpt_part_t *, GPT_ATTR, bool);
    168168
    169 extern void            gpt_set_random_uuid(uint8_t *);
    170169
    171170
    172171#define gpt_part_foreach(label, iterator) \
    173172                for(gpt_part_t * iterator = (label)->parts->part_array; \
    174                     iterator < (label)->parts->part_array + (label)->parts->arr_size; ++iterator)
     173                    iterator < (label)->parts->part_array + (label)->parts->fill; ++iterator)
    175174
    176175extern void gpt_free_gpt(gpt_t *);
Note: See TracChangeset for help on using the changeset viewer.