Changeset fde8a27 in mainline for uspace/srv/fs/minixfs/mfs_read.c
- Timestamp:
- 2011-03-28T19:17:31Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 1f1cc9d
- Parents:
- ef76d72
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/fs/minixfs/mfs_read.c
ref76d72 rfde8a27 72 72 static int read_map_ondisk(uint32_t *b, const struct mfs_node *mnode, int rblock) 73 73 { 74 block_t *bi1, *bi2;75 74 int r, nr_direct; 76 75 int ptrs_per_block; 76 uint32_t *bi1 = NULL; 77 uint32_t *bi2 = NULL; 77 78 78 79 assert(mnode); … … 110 111 } 111 112 112 r = read_ind_block(bi2, mnode->instance, ino_i->i_izone[0]); 113 bi1 = (uint32_t *) malloc(sbi->block_size); 114 r = read_ind_block(bi1, mnode->instance, ino_i->i_izone[0], 115 fs_version); 113 116 114 if (r != EOK) 115 goto out; 117 if (fs_version == MFS_VERSION_V1) 118 *b = ((uint16_t *) bi1)[rblock]; 119 else 120 *b = bi1[rblock]; 116 121 117 *b = fs_version == MFS_VERSION_V1 ? 118 ((uint16_t *) bi1->data)[rblock] : 119 ((uint32_t *) bi1->data)[rblock]; 120 goto out_block; 122 goto out; 121 123 } 122 124 … … 130 132 goto out; 131 133 } 132 r = read_ind_block(bi1, mnode->instance, ino_i->i_izone[1]); 134 135 bi1 = (uint32_t *) malloc(sbi->block_size); 136 bi2 = (uint32_t *) malloc(sbi->block_size); 137 138 r = read_ind_block(bi1, mnode->instance, ino_i->i_izone[1], 139 fs_version); 133 140 134 141 if (r != EOK) … … 144 151 if (fs_version == MFS_VERSION_V1) { 145 152 r = read_ind_block(bi2, mnode->instance, 146 ((uint16_t *) bi1 ->data)[di_block]);153 ((uint16_t *) bi1)[di_block], fs_version); 147 154 148 155 if (r != EOK) 149 goto out _block;156 goto out; 150 157 151 *b = ((uint16_t *) bi2 ->data)[rblock % ptrs_per_block];158 *b = ((uint16_t *) bi2)[rblock % ptrs_per_block]; 152 159 } else { 153 160 r = read_ind_block(bi2, mnode->instance, 154 ((uint32_t *) bi1 ->data)[di_block]);161 ((uint32_t *) bi1)[di_block], fs_version); 155 162 156 163 if (r != EOK) 157 goto out _block;164 goto out; 158 165 159 *b = ((uint32_t *) bi2->data)[rblock % ptrs_per_block];166 *b = bi2[rblock % ptrs_per_block]; 160 167 } 161 168 r = EOK; 162 block_put(bi2);163 169 164 out_block:165 block_put(bi1);166 170 out: 171 if (bi1) 172 free(bi1); 173 if (bi2) 174 free(bi2); 167 175 return r; 168 176 }
Note:
See TracChangeset
for help on using the changeset viewer.