Changeset a900fb1 in mainline


Ignore:
Timestamp:
2011-04-17T18:37:36Z (14 years ago)
Author:
Maurizio Lombardi <m.lombardi85@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
9e2d6dc
Parents:
6fcc03a
Message:

Fix some bugs in mfs_alloc_bit() function

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/fs/minixfs/mfs_balloc.c

    r6fcc03a ra900fb1  
    142142
    143143                /*Free bit found in this block, compute the real index*/
    144                 *idx = (freebit + bits_per_block * i);
     144                *idx = freebit + bits_per_block * i;
     145                *idx += (bid == BMAP_INODE);
     146                mfsdebug("alloc index %d %d\n", (int) *idx, i);
    145147                if (*idx > limit) {
    146148                        /*Index is beyond the limit, it is invalid*/
     
    180182        const size_t chunk_bits = sizeof(bitchunk_t) * 8;
    181183
    182         for (i = start_bit; i < bsize / sizeof(uint32_t); ++i) {
     184        for (i = start_bit / sizeof(uint32_t);
     185                                i < bsize / sizeof(uint32_t); ++i) {
    183186                if (!(~b[i])) {
    184187                        /*No free bit in this chunk*/
     
    189192
    190193                for (j = 0; j < chunk_bits; ++j) {
    191                         if (chunk & (1 << j)) {
     194                        if (!(chunk & (1 << j))) {
     195                                mfsdebug("i = %d j = %d\n", i, j);
    192196                                r = i * chunk_bits + j;
    193197                                chunk |= 1 << j;
Note: See TracChangeset for help on using the changeset viewer.