Changeset 7df022e5 in mainline


Ignore:
Timestamp:
2011-03-08T23:08:14Z (13 years ago)
Author:
Maurizio Lombardi <m.lombardi85@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
340b5690
Parents:
03fa85c
Message:

block_write_direct() cannot write more than 8 blocks

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/mkminix/mkminix.c

    r03fa85c r7df022e5  
    534534static int init_bitmaps(struct mfs_sb_info *sb)
    535535{
    536         uint32_t *ibmap_buf, *zbmap_buf;
    537         int ibmap_nblocks = 1 + (sb->n_inodes / 8) / sb->block_size;
    538         int zbmap_nblocks = 1 + (sb->n_zones / 8) / sb->block_size;
     536        uint8_t *ibmap_buf, *zbmap_buf;
     537        unsigned int ibmap_nblocks = sb->ibmap_blocks;
     538        unsigned int zbmap_nblocks = sb->zbmap_blocks;
    539539        unsigned int i;
    540540        int rc;
    541541
    542         ibmap_buf = (uint32_t *) malloc(ibmap_nblocks * sb->block_size);
    543         zbmap_buf = (uint32_t *) malloc(zbmap_nblocks * sb->block_size);
     542        printf("Initializing bitmaps...");
     543
     544        ibmap_buf = (uint8_t *) malloc(ibmap_nblocks * sb->block_size);
     545        zbmap_buf = (uint8_t *) malloc(zbmap_nblocks * sb->block_size);
    544546
    545547        if (!ibmap_buf || !zbmap_buf)
     
    550552
    551553        for (i = 2; i < sb->n_inodes; ++i)
    552                 mark_bmap(ibmap_buf, i, FREE);
     554                mark_bmap((uint32_t*) ibmap_buf, i, FREE);
    553555
    554556        for (i = sb->first_data_zone + 1; i < sb->n_zones; ++i)
    555                 mark_bmap(zbmap_buf, i, FREE);
     557                mark_bmap((uint32_t *) zbmap_buf, i, FREE);
    556558
    557559        ibmap_nblocks *= sb->block_size / MFS_BLOCKSIZE;
    558560        zbmap_nblocks *= sb->block_size / MFS_BLOCKSIZE;
    559561
    560         if ((rc = block_write_direct(sb->handle, 2, ibmap_nblocks, ibmap_buf)) != EOK)
    561                 return rc;
    562         if ((rc = block_write_direct(sb->handle, 2 + ibmap_nblocks, zbmap_nblocks, zbmap_buf)) != EOK)
    563                 return rc;
     562        for (i = 0; i < ibmap_nblocks; ++i) {
     563                if ((rc = block_write_direct(sb->handle, 2 + i,
     564                                1, (ibmap_buf + i * MFS_BLOCKSIZE))) != EOK)
     565                        return rc;
     566        }
     567
     568        for (i = 0; i < zbmap_nblocks; ++i) {
     569                if ((rc = block_write_direct(sb->handle, 2 + ibmap_nblocks + i,
     570                                1, (zbmap_buf + i * MFS_BLOCKSIZE))) != EOK)
     571                        return rc;
     572        }
     573
     574        printf("Done.\n");
    564575
    565576        return rc;
Note: See TracChangeset for help on using the changeset viewer.