Lines Matching refs:ap

68 struct	alts_mempart *ap = &alts_part;	/* pointer to incore alts tables */
106 ap->ap_flag |= ALTS_ADDPART;
109 ent_sort(ap->ap_gbadp, ap->ap_gbadcnt);
110 ent_compress(ap->ap_gbadp, ap->ap_gbadcnt);
123 if (ap->ap_tblp == NULL) {
125 ap->ap_tbl_secsiz = byte_to_secsiz(ALTS_PARTTBL_SIZE, NBPSCTR);
126 ap->ap_tblp = (struct alts_parttbl *)malloc(ap->ap_tbl_secsiz);
127 if (ap->ap_tblp == NULL) {
137 if ((ap->ap_memmapp = (uchar_t *)malloc(part->p_size)) == NULL) {
142 ap->ap_tblp->alts_map_len = (part->p_size + 8 - 1) / 8;
143 ap->ap_map_secsiz = byte_to_secsiz(ap->ap_tblp->alts_map_len,
145 ap->ap_map_sectot = ap->ap_map_secsiz / NBPSCTR;
146 if ((ap->ap_mapp = (uchar_t *)malloc(ap->ap_map_secsiz)) == NULL) {
152 (void) memset(ap->ap_memmapp, 0, part->p_size);
153 (void) memset(ap->ap_mapp, 0, ap->ap_map_secsiz);
154 ap->part = *part; /* struct copy */
161 if (ap->ap_flag & ALTS_ADDPART) {
182 blkaddr_t altsp_srtsec = ap->part.p_start;
183 blkaddr_t altsp_endsec = ap->part.p_start + ap->part.p_size - 1;
187 for (cnt = 0; cnt < ap->ap_gbadcnt; cnt++) {
188 badsec = (ap->ap_gbadp)[cnt].bad_start;
192 if ((ap->ap_memmapp)[badsec - altsp_srtsec] != ALTS_BAD) {
194 ap->ap_tbl_secsiz / NBPSCTR - 1))) {
199 if ((badsec >= altsp_srtsec+ap->ap_tblp->alts_map_base) &&
200 (badsec <= (altsp_srtsec + ap->ap_tblp->alts_map_base +
201 ap->ap_map_sectot - 1))) {
206 if ((badsec >= altsp_srtsec+ap->ap_tblp->alts_ent_base) &&
207 (badsec <= (altsp_srtsec + ap->ap_tblp->alts_ent_base +
208 ap->ap_ent_secsiz / NBPSCTR - 1))) {
213 (ap->ap_memmapp)[badsec - altsp_srtsec] = ALTS_BAD;
214 (ap->ap_gbadp)[cnt].bad_start = (uint32_t)ALTS_ENT_EMPTY;
217 (ap->ap_gbadp)[cnt].bad_start = (uint32_t)ALTS_ENT_EMPTY;
223 status = ent_bsearch(ap->ap_entp, ap->ap_tblp->alts_ent_used,
224 &((ap->ap_gbadp)[cnt]));
230 (ap->ap_gbadp)[cnt].bad_start = (uint32_t)ALTS_ENT_EMPTY;
244 blkaddr_t altsp_srtsec = ap->part.p_start;
245 blkaddr_t altsp_endsec = ap->part.p_start + ap->part.p_size - 1;
248 ap->ap_entp = NULL;
249 ap->ap_ent_secsiz = 0;
250 ap->ap_tblp->alts_sanity = ALTS_SANITY;
251 ap->ap_tblp->alts_version = ALTS_VERSION1;
252 ap->ap_tblp->alts_map_len = (ap->part.p_size + 8 - 1) / 8;
253 ap->ap_tblp->alts_ent_used = 0;
254 ap->ap_tblp->alts_ent_base = 0;
255 ap->ap_tblp->alts_ent_end = 0;
256 ap->ap_tblp->alts_resv_base = ap->part.p_size - 1;
258 ap->ap_tblp->alts_pad[cnt] = 0;
260 for (cnt = 0; cnt < ap->ap_gbadcnt; cnt++) {
261 badsec = (ap->ap_gbadp)[cnt].bad_start;
268 (ap->ap_memmapp)[badsec - altsp_srtsec] = ALTS_BAD;
269 (ap->ap_gbadp)[cnt].bad_start = (uint32_t)ALTS_ENT_EMPTY;
274 ap->ap_tblp->alts_map_base =
275 altsmap_alloc(ap->ap_tbl_secsiz / NBPSCTR,
276 ap->part.p_size, ap->ap_map_sectot, ALTS_MAP_UP);
277 if (ap->ap_tblp->alts_map_base == NULL) {
293 if (absdsk_io(alts_fd, 0, (char *)ap->ap_tblp,
294 ap->ap_tbl_secsiz, CMD_READ) == FAILURE) {
300 if (ap->ap_tblp->alts_sanity != ALTS_SANITY) {
308 if (absdsk_io(alts_fd, ap->ap_tblp->alts_map_base,
309 (char *)ap->ap_mapp, ap->ap_map_secsiz, CMD_READ) == FAILURE) {
319 if (ap->ap_tblp->alts_ent_used == 0) {
320 ap->ap_entp = NULL;
321 ap->ap_ent_secsiz = 0;
323 ap->ap_ent_secsiz = byte_to_secsiz(
324 (ap->ap_tblp->alts_ent_used*ALTS_ENT_SIZE),NBPSCTR);
325 if ((ap->ap_entp =
326 (struct alts_ent *)malloc(ap->ap_ent_secsiz)) == NULL) {
334 if (absdsk_io(alts_fd, ap->ap_tblp->alts_ent_base,
335 (char *)ap->ap_entp, ap->ap_ent_secsiz,
353 if (ap->ap_tblp == NULL)
355 if (absdsk_io(alts_fd, 0, (char *)ap->ap_tblp,
356 ap->ap_tbl_secsiz, CMD_WRITE) == FAILURE) {
361 if (absdsk_io(alts_fd, ap->ap_tblp->alts_map_base,
362 (char *)ap->ap_mapp, ap->ap_map_secsiz, CMD_WRITE) == FAILURE) {
367 if (ap->ap_tblp->alts_ent_used != 0) {
368 if (absdsk_io(alts_fd, ap->ap_tblp->alts_ent_base,
369 (char *)ap->ap_entp, ap->ap_ent_secsiz,
394 ap->ap_gbadp = NULL;
395 ap->ap_gbadcnt = 0;
397 ap->ap_gbadp = (struct alts_ent *)malloc(cnt*ALTS_ENT_SIZE);
398 (void) memset(ap->ap_gbadp,0,cnt*ALTS_ENT_SIZE);
400 for (growbadp = ap->ap_gbadp, cnt=0, blc_p=badsl_chain;
422 ap->ap_gbadcnt = cnt;
459 if (ap->ap_gbadcnt == 0)
462 ent_used = ap->ap_tblp->alts_ent_used + ap->ap_gbadcnt;
463 ap->ap_ent_secsiz = byte_to_secsiz(ent_used*ALTS_ENT_SIZE,NBPSCTR);
464 entp=(struct alts_ent *) malloc (ap->ap_ent_secsiz);
465 ent_used = ent_merge(entp, ap->ap_entp, ap->ap_tblp->alts_ent_used,
466 ap->ap_gbadp, ap->ap_gbadcnt);
467 if (ap->ap_entp)
468 free(ap->ap_entp);
469 if (ap->ap_gbadp)
470 free(ap->ap_gbadp);
471 ap->ap_entp = entp;
472 ap->ap_ent_secsiz = byte_to_secsiz(ent_used*ALTS_ENT_SIZE, NBPSCTR);
473 ap->ap_tblp->alts_ent_used = ent_used;
474 ap->ap_gbadp = NULL;
475 ap->ap_gbadcnt = 0;
481 ap->ap_tblp->alts_ent_base =
482 altsmap_alloc(ap->ap_tblp->alts_map_base + ap->ap_map_sectot,
483 ap->part.p_size,
484 ap->ap_ent_secsiz / NBPSCTR, ALTS_MAP_UP);
485 if (ap->ap_tblp->alts_ent_base == NULL) {
490 ap->ap_tblp->alts_ent_end = ap->ap_tblp->alts_ent_base +
491 (ap->ap_ent_secsiz / NBPSCTR) - 1;
506 for (i = 0; i < ap->ap_tblp->alts_ent_used; i++) {
507 if ((ap->ap_entp)[i].bad_start == (uint32_t)ALTS_ENT_EMPTY)
509 if ((ap->ap_entp)[i].good_start != 0)
511 cluster = (ap->ap_entp)[i].bad_end-(ap->ap_entp)[i].bad_start +1;
513 altsmap_alloc(ap->part.p_size-1, ap->ap_tblp->alts_map_base +
514 ap->ap_map_sectot - 1, cluster, ALTS_MAP_DOWN);
518 " sector %u.\n", (ap->ap_entp)[i].bad_start);
522 (ap->ap_entp)[i].good_start = alts_ind + ap->part.p_start;
524 (ap->ap_memmapp)[alts_ind+j] = ALTS_BAD;
539 for (i = 0; i < ap->part.p_size; i++) {
540 (ap->ap_memmapp)[i] = altsmap_getbit(i);
556 for (i = 0, bytesz = 7; i < ap->part.p_size; i++) {
557 mask |= ((ap->ap_memmapp)[i] << bytesz--);
559 (ap->ap_mapp)[maplen++] = mask;
569 (ap->ap_mapp)[maplen] = mask;
586 if ((ap->ap_mapp)[slot] & mask)
604 if ((ap->ap_memmapp)[i] == ALTS_BAD) {
768 int cnt = ap->ap_tblp->alts_ent_used;
774 numsec = (ap->ap_entp)[i].bad_end - (ap->ap_entp)[i].bad_start;
775 if ((badsec >= (ap->ap_entp)[i].good_start) &&
776 (badsec <= ((ap->ap_entp)[i].good_start + numsec))) {
782 * (ap->ap_entp)[i].good_start = 0;
785 * intv[0] = badsec - (ap->ap_entp)[i].good_start;
787 * intv[2] = (ap->ap_entp)[i].good_start + numsec - badsec;
802 ap->ap_tblp = NULL;
803 ap->ap_flag &= ~ALTS_ADDPART;
817 for (i=0, totalloc=0; i<ap->part.p_size; i++) {
818 if ((ap->ap_memmapp)[i])
826 avail = ap->part.p_size - totalloc;
827 avail = avail - (ap->ap_tbl_secsiz/NBPSCTR)
828 - ap->ap_map_sectot;
829 avail = avail-(ap->ap_tblp->alts_ent_end -ap->ap_tblp->alts_ent_base+1);
835 for (i=0; i<ap->ap_tblp->alts_ent_used; i++) {
837 (ap->ap_entp)[i].bad_start,
838 (ap->ap_entp)[i].good_start,
839 ((ap->ap_entp)[i].bad_end - (ap->ap_entp)[i].bad_start + 1));