• Home
  • Raw
  • Download

Lines Matching +full:partition +full:-

2  * partition.c
5 * Partition handling routines for the OSTA-UDF(tm) filesystem.
13 * (C) 1998-2001 Ben Fennema
30 uint16_t partition, uint32_t offset) in udf_get_pblock() argument
34 if (partition >= sbi->s_partitions) { in udf_get_pblock()
35 udf_debug("block=%u, partition=%u, offset=%u: invalid partition\n", in udf_get_pblock()
36 block, partition, offset); in udf_get_pblock()
39 map = &sbi->s_partmaps[partition]; in udf_get_pblock()
40 if (map->s_partition_func) in udf_get_pblock()
41 return map->s_partition_func(sb, block, partition, offset); in udf_get_pblock()
43 return map->s_partition_root + block + offset; in udf_get_pblock()
47 uint16_t partition, uint32_t offset) in udf_get_pblock_virt15() argument
56 struct udf_inode_info *iinfo = UDF_I(sbi->s_vat_inode); in udf_get_pblock_virt15()
58 map = &sbi->s_partmaps[partition]; in udf_get_pblock_virt15()
59 vdata = &map->s_type_specific.s_virtual; in udf_get_pblock_virt15()
61 if (block > vdata->s_num_entries) { in udf_get_pblock_virt15()
63 block, vdata->s_num_entries); in udf_get_pblock_virt15()
67 if (iinfo->i_alloc_type == ICBTAG_FLAG_AD_IN_ICB) { in udf_get_pblock_virt15()
68 loc = le32_to_cpu(((__le32 *)(iinfo->i_data + in udf_get_pblock_virt15()
69 vdata->s_start_offset))[block]); in udf_get_pblock_virt15()
72 index = (sb->s_blocksize - vdata->s_start_offset) / sizeof(uint32_t); in udf_get_pblock_virt15()
74 block -= index; in udf_get_pblock_virt15()
75 newblock = 1 + (block / (sb->s_blocksize / sizeof(uint32_t))); in udf_get_pblock_virt15()
76 index = block % (sb->s_blocksize / sizeof(uint32_t)); in udf_get_pblock_virt15()
79 index = vdata->s_start_offset / sizeof(uint32_t) + block; in udf_get_pblock_virt15()
82 loc = udf_block_map(sbi->s_vat_inode, newblock); in udf_get_pblock_virt15()
87 sb, block, partition, loc, index); in udf_get_pblock_virt15()
91 loc = le32_to_cpu(((__le32 *)bh->b_data)[index]); in udf_get_pblock_virt15()
96 if (iinfo->i_location.partitionReferenceNum == partition) { in udf_get_pblock_virt15()
102 iinfo->i_location.partitionReferenceNum, in udf_get_pblock_virt15()
107 uint16_t partition, uint32_t offset) in udf_get_pblock_virt20() argument
109 return udf_get_pblock_virt15(sb, block, partition, offset); in udf_get_pblock_virt20()
113 uint16_t partition, uint32_t offset) in udf_get_pblock_spar15() argument
122 map = &sbi->s_partmaps[partition]; in udf_get_pblock_spar15()
123 sdata = &map->s_type_specific.s_sparing; in udf_get_pblock_spar15()
124 packet = (block + offset) & ~(sdata->s_packet_len - 1); in udf_get_pblock_spar15()
127 if (sdata->s_spar_map[i] != NULL) { in udf_get_pblock_spar15()
129 sdata->s_spar_map[i]->b_data; in udf_get_pblock_spar15()
135 for (i = 0; i < le16_to_cpu(st->reallocationTableLen); i++) { in udf_get_pblock_spar15()
136 struct sparingEntry *entry = &st->mapEntry[i]; in udf_get_pblock_spar15()
137 u32 origLoc = le32_to_cpu(entry->origLocation); in udf_get_pblock_spar15()
141 return le32_to_cpu(entry->mappedLocation) + in udf_get_pblock_spar15()
143 (sdata->s_packet_len - 1)); in udf_get_pblock_spar15()
149 return map->s_partition_root + block + offset; in udf_get_pblock_spar15()
164 mutex_lock(&sbi->s_alloc_mutex); in udf_relocate_blocks()
165 for (i = 0; i < sbi->s_partitions; i++) { in udf_relocate_blocks()
166 struct udf_part_map *map = &sbi->s_partmaps[i]; in udf_relocate_blocks()
167 if (old_block > map->s_partition_root && in udf_relocate_blocks()
168 old_block < map->s_partition_root + map->s_partition_len) { in udf_relocate_blocks()
169 sdata = &map->s_type_specific.s_sparing; in udf_relocate_blocks()
170 packet = (old_block - map->s_partition_root) & in udf_relocate_blocks()
171 ~(sdata->s_packet_len - 1); in udf_relocate_blocks()
174 if (sdata->s_spar_map[j] != NULL) { in udf_relocate_blocks()
176 sdata->s_spar_map[j]->b_data; in udf_relocate_blocks()
186 le16_to_cpu(st->reallocationTableLen); in udf_relocate_blocks()
188 struct sparingEntry *entry = &st->mapEntry[k]; in udf_relocate_blocks()
189 u32 origLoc = le32_to_cpu(entry->origLocation); in udf_relocate_blocks()
194 bh = sdata->s_spar_map[j]; in udf_relocate_blocks()
199 bh->b_data; in udf_relocate_blocks()
200 entry->origLocation = in udf_relocate_blocks()
210 entry->mappedLocation) + in udf_relocate_blocks()
211 ((old_block - in udf_relocate_blocks()
212 map->s_partition_root) & in udf_relocate_blocks()
213 (sdata->s_packet_len - 1)); in udf_relocate_blocks()
218 entry->mappedLocation) + in udf_relocate_blocks()
219 ((old_block - in udf_relocate_blocks()
220 map->s_partition_root) & in udf_relocate_blocks()
221 (sdata->s_packet_len - 1)); in udf_relocate_blocks()
229 struct sparingEntry *entry = &st->mapEntry[l]; in udf_relocate_blocks()
230 u32 origLoc = le32_to_cpu(entry->origLocation); in udf_relocate_blocks()
236 bh = sdata->s_spar_map[j]; in udf_relocate_blocks()
240 st = (struct sparingTable *)bh->b_data; in udf_relocate_blocks()
241 mapEntry = st->mapEntry[l]; in udf_relocate_blocks()
244 memmove(&st->mapEntry[k + 1], in udf_relocate_blocks()
245 &st->mapEntry[k], in udf_relocate_blocks()
246 (l - k) * in udf_relocate_blocks()
248 st->mapEntry[k] = mapEntry; in udf_relocate_blocks()
257 st->mapEntry[k].mappedLocation) + in udf_relocate_blocks()
258 ((old_block - map->s_partition_root) & in udf_relocate_blocks()
259 (sdata->s_packet_len - 1)); in udf_relocate_blocks()
269 if (i == sbi->s_partitions) { in udf_relocate_blocks()
276 mutex_unlock(&sbi->s_alloc_mutex); in udf_relocate_blocks()
281 uint16_t partition, uint32_t offset) in udf_try_read_meta() argument
283 struct super_block *sb = inode->i_sb; in udf_try_read_meta()
295 map = &UDF_SB(sb)->s_partmaps[partition]; in udf_try_read_meta()
296 /* map to sparable/physical partition desc */ in udf_try_read_meta()
298 map->s_type_specific.s_metadata.s_phys_partition_ref, in udf_try_read_meta()
307 uint16_t partition, uint32_t offset) in udf_get_pblock_meta25() argument
317 map = &sbi->s_partmaps[partition]; in udf_get_pblock_meta25()
318 mdata = &map->s_type_specific.s_metadata; in udf_get_pblock_meta25()
319 inode = mdata->s_metadata_fe ? : mdata->s_mirror_fe; in udf_get_pblock_meta25()
324 retblk = udf_try_read_meta(inode, block, partition, offset); in udf_get_pblock_meta25()
325 if (retblk == 0xFFFFFFFF && mdata->s_metadata_fe) { in udf_get_pblock_meta25()
327 if (!(mdata->s_flags & MF_MIRROR_FE_LOADED)) { in udf_get_pblock_meta25()
328 mdata->s_mirror_fe = udf_find_metadata_inode_efe(sb, in udf_get_pblock_meta25()
329 mdata->s_mirror_file_loc, in udf_get_pblock_meta25()
330 mdata->s_phys_partition_ref); in udf_get_pblock_meta25()
331 if (IS_ERR(mdata->s_mirror_fe)) in udf_get_pblock_meta25()
332 mdata->s_mirror_fe = NULL; in udf_get_pblock_meta25()
333 mdata->s_flags |= MF_MIRROR_FE_LOADED; in udf_get_pblock_meta25()
336 inode = mdata->s_mirror_fe; in udf_get_pblock_meta25()
339 retblk = udf_try_read_meta(inode, block, partition, offset); in udf_get_pblock_meta25()