Lines Matching refs:ap
66 struct alts_mempart *ap = &alts_part; /* pointer to incore */
100 ap->ap_flag |= ALTS_ADDPART;
103 ent_sort(ap->ap_gbadp, ap->ap_gbadcnt);
104 ent_compress(ap->ap_gbadp, ap->ap_gbadcnt);
118 if (ap->ap_tblp == NULL) {
120 ap->ap_tbl_secsiz = byte_to_secsiz(ALTS_PARTTBL_SIZE, NBPSCTR);
121 ap->ap_tblp = (struct alts_parttbl *)malloc(ap->ap_tbl_secsiz);
122 if (ap->ap_tblp == NULL) {
132 if ((ap->ap_memmapp = (uchar_t *)malloc(part->p_size)) == NULL) {
137 ap->ap_tblp->alts_map_len = (part->p_size + 8 - 1) / 8;
138 ap->ap_map_secsiz = byte_to_secsiz(ap->ap_tblp->alts_map_len,
140 ap->ap_map_sectot = ap->ap_map_secsiz / NBPSCTR;
141 if ((ap->ap_mapp = (uchar_t *)malloc(ap->ap_map_secsiz)) == NULL) {
147 (void) memset(ap->ap_memmapp, 0, part->p_size);
148 (void) memset(ap->ap_mapp, 0, ap->ap_map_secsiz);
149 ap->part = *part; /* struct copy */
156 if (ap->ap_flag & ALTS_ADDPART)
179 blkaddr_t altsp_srtsec = ap->part.p_start;
180 blkaddr_t altsp_endsec = ap->part.p_start + ap->part.p_size - 1;
184 for (cnt = 0; cnt < ap->ap_gbadcnt; cnt++) {
185 badsec = (ap->ap_gbadp)[cnt].bad_start;
189 if ((ap->ap_memmapp)[badsec - altsp_srtsec] != ALTS_BAD) {
191 ap->ap_tbl_secsiz / NBPSCTR - 1))) {
196 if ((badsec >= altsp_srtsec+ap->ap_tblp->alts_map_base) &&
197 (badsec <= (altsp_srtsec + ap->ap_tblp->alts_map_base +
198 ap->ap_map_sectot - 1))) {
203 if ((badsec >= altsp_srtsec+ap->ap_tblp->alts_ent_base) &&
204 (badsec <= (altsp_srtsec + ap->ap_tblp->alts_ent_base +
205 ap->ap_ent_secsiz / NBPSCTR - 1))) {
210 (ap->ap_memmapp)[badsec - altsp_srtsec] = ALTS_BAD;
211 (ap->ap_gbadp)[cnt].bad_start = (uint32_t)ALTS_ENT_EMPTY;
214 (ap->ap_gbadp)[cnt].bad_start = (uint32_t)ALTS_ENT_EMPTY;
220 status = ent_bsearch(ap->ap_entp, ap->ap_tblp->alts_ent_used,
221 &((ap->ap_gbadp)[cnt]));
227 (ap->ap_gbadp)[cnt].bad_start = (uint32_t)ALTS_ENT_EMPTY;
241 blkaddr_t altsp_srtsec = ap->part.p_start;
242 blkaddr_t altsp_endsec = ap->part.p_start + ap->part.p_size - 1;
245 ap->ap_entp = NULL;
246 ap->ap_ent_secsiz = 0;
247 ap->ap_tblp->alts_sanity = ALTS_SANITY;
248 ap->ap_tblp->alts_version = ALTS_VERSION1;
249 ap->ap_tblp->alts_map_len = (ap->part.p_size + 8 - 1) / 8;
250 ap->ap_tblp->alts_ent_used = 0;
251 ap->ap_tblp->alts_ent_base = 0;
252 ap->ap_tblp->alts_ent_end = 0;
253 ap->ap_tblp->alts_resv_base = ap->part.p_size - 1;
255 ap->ap_tblp->alts_pad[cnt] = 0;
257 for (cnt = 0; cnt < ap->ap_gbadcnt; cnt++) {
258 badsec = (ap->ap_gbadp)[cnt].bad_start;
265 (ap->ap_memmapp)[badsec - altsp_srtsec] = ALTS_BAD;
266 (ap->ap_gbadp)[cnt].bad_start = (uint32_t)ALTS_ENT_EMPTY;
271 ap->ap_tblp->alts_map_base =
272 altsmap_alloc(ap->ap_tbl_secsiz / NBPSCTR,
273 ap->part.p_size, ap->ap_map_sectot, ALTS_MAP_UP);
274 if (ap->ap_tblp->alts_map_base == NULL) {
296 ap->ap_tbl_secsiz / UBSIZE, (char *)ap->ap_tblp,
302 if (ap->ap_tblp->alts_sanity != ALTS_SANITY)
307 (ap->ap_tblp->alts_map_base) + altsec_offset,
308 ap->ap_map_secsiz / UBSIZE, (char *)ap->ap_mapp, 0, NULL);
317 if (ap->ap_tblp->alts_ent_used == 0) {
318 ap->ap_entp = NULL;
319 ap->ap_ent_secsiz = 0;
321 ap->ap_ent_secsiz = byte_to_secsiz(
322 (ap->ap_tblp->alts_ent_used*ALTS_ENT_SIZE), NBPSCTR);
323 if ((ap->ap_entp =
324 (struct alts_ent *)malloc(ap->ap_ent_secsiz)) == NULL) {
331 (ap->ap_tblp->alts_ent_base) + altsec_offset,
332 ap->ap_ent_secsiz / UBSIZE, (char *)ap->ap_entp,
352 if (ap->ap_tblp == NULL)
355 ap->ap_tbl_secsiz / UBSIZE, (char *)ap->ap_tblp, 0, NULL);
358 status, ap->ap_tbl_secsiz / 512);
363 if (ata_rdwr(DIR_WRITE, cur_file, (ap->ap_tblp->alts_map_base) +
364 altsec_offset, ap->ap_map_secsiz / UBSIZE,
365 (char *)ap->ap_mapp, 0, NULL) == FAILURE) {
370 if (ap->ap_tblp->alts_ent_used != 0) {
372 (ap->ap_tblp->alts_ent_base)+ altsec_offset,
373 ap->ap_ent_secsiz / UBSIZE,
374 (char *)ap->ap_entp, 0, NULL) == FAILURE) {
400 ap->ap_gbadp = NULL;
401 ap->ap_gbadcnt = 0;
403 ap->ap_gbadp = malloc(cnt*ALTS_ENT_SIZE);
404 if (ap->ap_gbadp == NULL) {
409 (void) memset(ap->ap_gbadp, 0, cnt*ALTS_ENT_SIZE);
411 for (growbadp = ap->ap_gbadp, cnt = 0, blc_p = badsl_chain;
431 ap->ap_gbadcnt = cnt;
467 if (ap->ap_gbadcnt == 0)
470 ent_used = ap->ap_tblp->alts_ent_used + ap->ap_gbadcnt;
471 ap->ap_ent_secsiz = byte_to_secsiz(ent_used*ALTS_ENT_SIZE, NBPSCTR);
472 entp = malloc(ap->ap_ent_secsiz);
475 ap->ap_ent_secsiz);
479 ent_used = ent_merge(entp, ap->ap_entp, ap->ap_tblp->alts_ent_used,
480 ap->ap_gbadp, ap->ap_gbadcnt);
481 if (ap->ap_entp)
482 free(ap->ap_entp);
483 if (ap->ap_gbadp)
484 free(ap->ap_gbadp);
485 ap->ap_entp = entp;
486 ap->ap_ent_secsiz = byte_to_secsiz(ent_used*ALTS_ENT_SIZE, NBPSCTR);
487 ap->ap_tblp->alts_ent_used = ent_used;
488 ap->ap_gbadp = NULL;
489 ap->ap_gbadcnt = 0;
495 ap->ap_tblp->alts_ent_base =
496 altsmap_alloc((blkaddr_t)ap->ap_tblp->alts_map_base +
497 ap->ap_map_sectot, (blkaddr_t)ap->part.p_size,
498 ap->ap_ent_secsiz / NBPSCTR, ALTS_MAP_UP);
499 if (ap->ap_tblp->alts_ent_base == NULL) {
504 ap->ap_tblp->alts_ent_end = ap->ap_tblp->alts_ent_base +
505 (ap->ap_ent_secsiz / NBPSCTR) - 1;
521 for (i = 0; i < ap->ap_tblp->alts_ent_used; i++) {
522 if ((ap->ap_entp)[i].bad_start == (uint32_t)ALTS_ENT_EMPTY)
524 if ((ap->ap_entp)[i].good_start != 0)
526 cluster = (ap->ap_entp)[i].bad_end-(ap->ap_entp)[i].bad_start +1;
528 altsmap_alloc(ap->part.p_size-1, ap->ap_tblp->alts_map_base +
529 ap->ap_map_sectot - 1, cluster, ALTS_MAP_DOWN);
533 (ap->ap_entp)[i].bad_start);
537 (ap->ap_entp)[i].good_start = alts_ind +ap->part.p_start;
539 (ap->ap_memmapp)[alts_ind+j] = ALTS_BAD;
554 for (i = 0; i < ap->part.p_size; i++) {
555 (ap->ap_memmapp)[i] = altsmap_getbit(i);
571 for (i = 0, bytesz = 7; i < ap->part.p_size; i++) {
572 mask |= ((ap->ap_memmapp)[i] << bytesz--);
574 (ap->ap_mapp)[maplen++] = mask;
584 (ap->ap_mapp)[maplen] = mask;
602 if ((ap->ap_mapp)[slot] & mask)
624 if ((ap->ap_memmapp)[i] == ALTS_BAD) {
793 int cnt = ap->ap_tblp->alts_ent_used;
799 numsec = (ap->ap_entp)[i].bad_end - (ap->ap_entp)[i].bad_start;
800 if ((badsec >= (ap->ap_entp)[i].good_start) &&
801 (badsec <= ((ap->ap_entp)[i].good_start + numsec))) {
807 * (ap->ap_entp)[i].good_start = 0;
810 * intv[0] = badsec - (ap->ap_entp)[i].good_start;
812 * intv[2] = (ap->ap_entp)[i].good_start + numsec - badsec;