Lines Matching defs:vol

20 static int _validate_cs_(nspace *vol, uint32 cluster, uint32 sector)
24 if ((vol->fat_bits != 32) && IS_FIXED_ROOT(cluster)) { // fat12 or fat16 root
25 if (sector >= vol->root_sectors)
30 if (sector >= vol->sectors_per_cluster) return -1;
40 ASSERT(_validate_cs_(csi->vol, csi->cluster, csi->sector) == 0);
41 if (_validate_cs_(csi->vol, csi->cluster, csi->sector) != 0)
45 return csi->vol->root_start + csi->sector;
47 return csi->vol->data_start +
48 (off_t)(csi->cluster - 2)* csi->vol->sectors_per_cluster +
52 int init_csi(nspace *vol, uint32 cluster, uint32 sector, struct csi *csi)
55 if ((ret = _validate_cs_(vol,cluster,sector)) != 0)
58 csi->vol = vol; csi->cluster = cluster; csi->sector = sector;
76 if (csi->sector < csi->vol->root_sectors)
80 if (csi->sector < csi->vol->sectors_per_cluster)
82 csi->cluster = get_nth_fat_entry(csi->vol, csi->cluster, csi->sector / csi->vol->sectors_per_cluster);
89 if (vIS_DATA_CLUSTER(csi->vol,csi->cluster)) {
90 csi->sector %= csi->vol->sectors_per_cluster;
102 if (_validate_cs_(csi->vol, csi->cluster, csi->sector) != 0)
105 return get_block(csi->vol->fd, _csi_to_block_(csi), csi->vol->bytes_per_sector);
112 if (_validate_cs_(csi->vol, csi->cluster, csi->sector) != 0)
115 err = release_block(csi->vol->fd, _csi_to_block_(csi));
124 ASSERT(_validate_cs_(csi->vol, csi->cluster, csi->sector) == 0);
125 if (_validate_cs_(csi->vol, csi->cluster, csi->sector) != 0)
128 err = mark_blocks_dirty(csi->vol->fd, _csi_to_block_(csi), 1);
141 ASSERT(len >= csi->vol->bytes_per_sector);
143 if (_validate_cs_(csi->vol, csi->cluster, csi->sector) != 0)
152 if (len < (sectors + 1) * csi->vol->bytes_per_sector)
159 err = cached_read(csi->vol->fd, block, buffer, sectors, csi->vol->bytes_per_sector);
165 return sectors * csi->vol->bytes_per_sector;
175 ASSERT(len >= csi->vol->bytes_per_sector);
177 ASSERT(_validate_cs_(csi->vol, csi->cluster, csi->sector) == 0);
178 if (_validate_cs_(csi->vol, csi->cluster, csi->sector) != 0)
187 if (len < (sectors + 1) * csi->vol->bytes_per_sector)
194 err = cached_write(csi->vol->fd, block, buffer, sectors, csi->vol->bytes_per_sector);
203 return sectors * csi->vol->bytes_per_sector;
208 ASSERT(_validate_cs_(csi->vol, csi->cluster, csi->sector) == 0);
209 if (_validate_cs_(csi->vol, csi->cluster, csi->sector) != 0)
212 return cached_write(csi->vol->fd, _csi_to_block_(csi), buffer, 1, csi->vol->bytes_per_sector);
224 uint8 *diri_init(nspace *vol, uint32 cluster, uint32 index, struct diri *diri)
229 if (cluster >= vol->total_clusters + 2)
232 if (init_csi(vol,cluster,0,&(diri->csi)) != 0)
237 if (index >= vol->bytes_per_sector / 0x20) {
238 if (iter_csi(&(diri->csi), diri->current_index / (vol->bytes_per_sector / 0x20)) != 0)
248 return diri->current_block + (diri->current_index % (diri->csi.vol->bytes_per_sector / 0x20))*0x20;
270 return diri->current_block + (diri->current_index % (diri->csi.vol->bytes_per_sector / 0x20))*0x20;
280 if ((++diri->current_index % (diri->csi.vol->bytes_per_sector / 0x20)) == 0) {
289 return diri->current_block + (diri->current_index % (diri->csi.vol->bytes_per_sector / 0x20))*0x20;
296 if (diri->current_index > (diri->csi.vol->bytes_per_sector / 0x20 - 1)) {
299 if (init_csi(diri->csi.vol, diri->starting_cluster, 0, &(diri->csi)) != 0)