Lines Matching +full:- +full:lp

75 parse_nextstep_label(struct next68k_disklabel *ondisk, struct disklabel *lp,  in parse_nextstep_label()  argument
81 if (ondisk->cd_version == NEXT68K_LABEL_CD_V3) { in parse_nextstep_label()
82 checksum = &ondisk->NEXT68K_LABEL_cd_v3_checksum; in parse_nextstep_label()
84 checksum = &ondisk->NEXT68K_LABEL_cd_checksum; in parse_nextstep_label()
91 osdep->od_version = ondisk->cd_version; in parse_nextstep_label()
92 lp->d_magic = lp->d_magic2 = DISKMAGIC; in parse_nextstep_label()
93 lp->d_type = DKTYPE_SCSI; in parse_nextstep_label()
94 lp->d_subtype = 0; in parse_nextstep_label()
95 if (sizeof(lp->d_typename) > sizeof(ondisk->cd_name)) in parse_nextstep_label()
96 lp->d_typename[sizeof (ondisk->cd_name)] = '\0'; in parse_nextstep_label()
97 memcpy(lp->d_typename, ondisk->cd_name, in parse_nextstep_label()
98 uimin(sizeof (lp->d_typename), sizeof(ondisk->cd_name))); in parse_nextstep_label()
99 if (sizeof(lp->d_packname) > sizeof(ondisk->cd_label)) in parse_nextstep_label()
100 lp->d_packname[sizeof (ondisk->cd_label)] = '\0'; in parse_nextstep_label()
101 memcpy(lp->d_packname, ondisk->cd_label, in parse_nextstep_label()
102 uimin(sizeof(lp->d_packname), sizeof(ondisk->cd_label))); in parse_nextstep_label()
103 if (lp->d_secsize == 0) in parse_nextstep_label()
104 lp->d_secsize = ondisk->cd_secsize; in parse_nextstep_label()
105 KASSERT(ondisk->cd_secsize >= lp->d_secsize); in parse_nextstep_label()
106 lp->d_nsectors = ondisk->cd_nsectors; in parse_nextstep_label()
107 lp->d_ntracks = ondisk->cd_ntracks; in parse_nextstep_label()
108 lp->d_ncylinders = ondisk->cd_ncylinders; in parse_nextstep_label()
110 lp->d_rpm = ondisk->cd_rpm; in parse_nextstep_label()
111 lp->d_flags = ondisk->cd_flags; in parse_nextstep_label()
113 lp->d_bbsize = NEXT68K_LABEL_SIZE; in parse_nextstep_label()
114 lp->d_sbsize = SBLOCKSIZE; in parse_nextstep_label()
116 lp->d_npartitions = nbp = 0; in parse_nextstep_label()
117 for (i = 0; i < NEXT68K_LABEL_MAXPARTITIONS - 1; i++) { in parse_nextstep_label()
118 if (ondisk->cd_partitions[i].cp_size > 0) { in parse_nextstep_label()
119 lp->d_partitions[nbp].p_size = in parse_nextstep_label()
120 ondisk->cd_partitions[i].cp_size * in parse_nextstep_label()
121 (ondisk->cd_secsize / lp->d_secsize); in parse_nextstep_label()
122 lp->d_partitions[nbp].p_offset = in parse_nextstep_label()
123 (ondisk->cd_front + in parse_nextstep_label()
124 ondisk->cd_partitions[i].cp_offset) * in parse_nextstep_label()
125 (ondisk->cd_secsize / lp->d_secsize); in parse_nextstep_label()
126 lp->d_partitions[nbp].p_fsize = in parse_nextstep_label()
127 ondisk->cd_partitions[i].cp_fsize; in parse_nextstep_label()
129 lp->d_partitions[nbp].p_fstype = FS_BSDFFS; in parse_nextstep_label()
132 if (strncmp(ondisk->cd_partitions[i].cp_type, in parse_nextstep_label()
139 lp->d_partitions[nbp].p_fstype = t; in parse_nextstep_label()
141 if (ondisk->cd_partitions[i].cp_fsize) in parse_nextstep_label()
142 lp->d_partitions[nbp].p_frag = in parse_nextstep_label()
143 ondisk->cd_partitions[i].cp_bsize / in parse_nextstep_label()
144 ondisk->cd_partitions[i].cp_fsize; in parse_nextstep_label()
146 lp->d_partitions[nbp].p_frag = 0; in parse_nextstep_label()
147 lp->d_partitions[nbp].p_cpg = in parse_nextstep_label()
148 ondisk->cd_partitions[i].cp_cpg; in parse_nextstep_label()
149 lp->d_npartitions = nbp + 1; in parse_nextstep_label()
158 if (lp->d_npartitions <= RAW_PART) in parse_nextstep_label()
159 lp->d_npartitions = RAW_PART + 1; in parse_nextstep_label()
161 lp->d_checksum = 0; in parse_nextstep_label()
162 lp->d_checksum = dkcksum(lp); in parse_nextstep_label()
168 build_nextstep_label(struct next68k_disklabel *ondisk, struct disklabel *lp) in build_nextstep_label() argument
176 ondisk->cd_version = NEXT68K_LABEL_CD_V3; in build_nextstep_label()
177 /* ondisk->cd_label_blkno = 0; */ in build_nextstep_label()
178 /* ondisk->cd_size = 0; */ in build_nextstep_label()
179 /* ondisk->cd_tag = 0; */ in build_nextstep_label()
180 strncpy(ondisk->cd_type, "fixed_rw_scsi", sizeof(ondisk->cd_type)); in build_nextstep_label()
181 ondisk->cd_secsize = lp->d_secsize; in build_nextstep_label()
182 /* ondisk->cd_back = 0; */ in build_nextstep_label()
183 /* ondisk->cd_ngroups = 0; */ in build_nextstep_label()
184 /* ondisk->cd_ag_size = 0; */ in build_nextstep_label()
185 /* ondisk->cd_ag_alts = 0; */ in build_nextstep_label()
186 /* ondisk->cd_ag_off = 0; */ in build_nextstep_label()
187 /* ondisk->kernel */ in build_nextstep_label()
188 /* ondisk->hostname */ in build_nextstep_label()
189 /* ondisk->rootpartition */ in build_nextstep_label()
190 /* ondisk->rwpartition */ in build_nextstep_label()
191 KASSERT(ondisk->cd_secsize >= lp->d_secsize); in build_nextstep_label()
193 if (memcmp(ondisk->cd_name, lp->d_typename, in build_nextstep_label()
194 uimin(sizeof(lp->d_typename), sizeof(ondisk->cd_name))) && in build_nextstep_label()
195 sizeof (ondisk->cd_name) > sizeof (lp->d_typename)) in build_nextstep_label()
196 ondisk->cd_name[sizeof(lp->d_typename)] = '\0'; in build_nextstep_label()
197 memcpy(ondisk->cd_name, lp->d_typename, in build_nextstep_label()
198 uimin(sizeof(lp->d_typename), sizeof(ondisk->cd_name))); in build_nextstep_label()
199 if (memcmp (lp->d_packname, ondisk->cd_label, in build_nextstep_label()
200 uimin(sizeof(lp->d_packname), sizeof(ondisk->cd_label))) && in build_nextstep_label()
201 sizeof(ondisk->cd_label) > sizeof(lp->d_packname)) in build_nextstep_label()
202 ondisk->cd_label[sizeof(lp->d_packname)] = '\0'; in build_nextstep_label()
203 memcpy(ondisk->cd_label, lp->d_packname, in build_nextstep_label()
204 uimin(sizeof(lp->d_packname), sizeof(ondisk->cd_label))); in build_nextstep_label()
206 ondisk->cd_nsectors = lp->d_nsectors; in build_nextstep_label()
207 ondisk->cd_ntracks = lp->d_ntracks; in build_nextstep_label()
208 ondisk->cd_ncylinders = lp->d_ncylinders; in build_nextstep_label()
210 ondisk->cd_rpm = lp->d_rpm; in build_nextstep_label()
211 ondisk->cd_flags = lp->d_flags; in build_nextstep_label()
217 for (nbp = 0; nbp < lp->d_npartitions; nbp++) { in build_nextstep_label()
218 if (nbp != RAW_PART && lp->d_partitions[nbp].p_offset > 0 && in build_nextstep_label()
219 lp->d_partitions[nbp].p_offset < front_porch) in build_nextstep_label()
220 front_porch = lp->d_partitions[nbp].p_offset; in build_nextstep_label()
222 if (t != (nbp > RAW_PART ? nbp - 1 : nbp) && in build_nextstep_label()
223 (lp->d_partitions[nbp].p_size == in build_nextstep_label()
224 ondisk->cd_partitions[t].cp_size * in build_nextstep_label()
225 (ondisk->cd_secsize / lp->d_secsize)) && in build_nextstep_label()
226 (lp->d_partitions[nbp].p_offset == in build_nextstep_label()
227 (ondisk->cd_front + in build_nextstep_label()
228 ondisk->cd_partitions[t].cp_offset) * in build_nextstep_label()
229 (ondisk->cd_secsize / lp->d_secsize)) && in build_nextstep_label()
230 ((lp->d_partitions[nbp].p_fstype == FS_OTHER) || in build_nextstep_label()
231 (!strncmp (ondisk->cd_partitions[t].cp_type, in build_nextstep_label()
232 fstypenames[lp->d_partitions[nbp].p_fstype], in build_nextstep_label()
235 memcpy(&tmp, &ondisk->cd_partitions[t], in build_nextstep_label()
237 memcpy(&ondisk->cd_partitions[t], in build_nextstep_label()
238 &ondisk->cd_partitions[nbp > RAW_PART ? in build_nextstep_label()
239 nbp - 1 : nbp], in build_nextstep_label()
241 memcpy(&ondisk->cd_partitions[nbp > RAW_PART ? in build_nextstep_label()
242 nbp - 1 : nbp], in build_nextstep_label()
247 front_porch /= (ondisk->cd_secsize / lp->d_secsize); in build_nextstep_label()
254 struct next68k_partition *p = &ondisk->cd_partitions[i]; in build_nextstep_label()
255 if (nbp < lp->d_npartitions && lp->d_partitions[nbp].p_size) { in build_nextstep_label()
256 p->cp_size = lp->d_partitions[nbp].p_size / in build_nextstep_label()
257 (ondisk->cd_secsize / lp->d_secsize); in build_nextstep_label()
258 p->cp_offset = (lp->d_partitions[nbp].p_offset / in build_nextstep_label()
259 (ondisk->cd_secsize / lp->d_secsize)) - in build_nextstep_label()
261 p->cp_bsize = lp->d_partitions[nbp].p_frag in build_nextstep_label()
262 * lp->d_partitions[nbp].p_fsize; in build_nextstep_label()
263 p->cp_fsize = lp->d_partitions[nbp].p_fsize; in build_nextstep_label()
264 if (lp->d_partitions[nbp].p_fstype != FS_OTHER) { in build_nextstep_label()
265 memset(p->cp_type, 0, NEXT68K_LABEL_MAXFSTLEN); in build_nextstep_label()
266 strncpy(p->cp_type, in build_nextstep_label()
267 fstypenames[lp->d_partitions[nbp].p_fstype], in build_nextstep_label()
270 if (p->cp_density < 0) in build_nextstep_label()
271 p->cp_density = 4096; /* set some default */ in build_nextstep_label()
272 if (p->cp_minfree < 0) in build_nextstep_label()
273 p->cp_minfree = 5; /* set some default */ in build_nextstep_label()
274 p->cp_cpg = lp->d_partitions[nbp].p_cpg; in build_nextstep_label()
277 p->cp_size = -1; in build_nextstep_label()
278 p->cp_offset = -1; in build_nextstep_label()
279 p->cp_bsize = -1; in build_nextstep_label()
280 p->cp_fsize = -1; in build_nextstep_label()
281 p->cp_density = -1; in build_nextstep_label()
282 p->cp_minfree = -1; in build_nextstep_label()
289 ondisk->cd_front = front_porch; in build_nextstep_label()
290 ondisk->cd_boot_blkno[0] = NEXT68K_LABEL_DEFAULTBOOT0_1 / in build_nextstep_label()
291 (ondisk->cd_secsize / lp->d_secsize); in build_nextstep_label()
292 ondisk->cd_boot_blkno[1] = NEXT68K_LABEL_DEFAULTBOOT0_2 / in build_nextstep_label()
293 (ondisk->cd_secsize / lp->d_secsize); in build_nextstep_label()
295 if (ondisk->cd_version == NEXT68K_LABEL_CD_V3) { in build_nextstep_label()
296 checksum = &ondisk->NEXT68K_LABEL_cd_v3_checksum; in build_nextstep_label()
298 checksum = &ondisk->NEXT68K_LABEL_cd_checksum; in build_nextstep_label()
313 readdisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp, in readdisklabel() argument
322 if (lp->d_secsize == 0) in readdisklabel()
323 lp->d_secsize = DEV_BSIZE; in readdisklabel()
324 if (lp->d_secperunit == 0) in readdisklabel()
325 lp->d_secperunit = 0x1fffffff; in readdisklabel()
326 lp->d_npartitions = RAW_PART + 1; in readdisklabel()
328 lp->d_partitions[i].p_size = 0; in readdisklabel()
329 lp->d_partitions[i].p_offset = 0; in readdisklabel()
331 if (lp->d_partitions[i].p_size == 0) in readdisklabel()
332 lp->d_partitions[i].p_size = 0x1fffffff; in readdisklabel()
333 lp->d_partitions[i].p_offset = 0; in readdisklabel()
336 bp->b_dev = dev; in readdisklabel()
337 bp->b_blkno = NEXT68K_LABEL_SECTOR; in readdisklabel()
338 bp->b_bcount = NEXT68K_LABEL_SIZE; in readdisklabel()
339 bp->b_flags |= B_READ; in readdisklabel()
340 bp->b_cylinder = NEXT68K_LABEL_SECTOR / lp->d_secpercyl; in readdisklabel()
344 osdep->od_version = 0; in readdisklabel()
351 ((char *)bp->b_data + LABELSECTOR * lp->d_secsize + LABELOFFSET); in readdisklabel()
352 if (dlp->d_magic == DISKMAGIC || dlp->d_magic2 == DISKMAGIC) { in readdisklabel()
355 osdep->od_version = DISKMAGIC; in readdisklabel()
356 if (dlp->d_npartitions > MAXPARTITIONS || in readdisklabel()
360 *lp = *dlp; in readdisklabel()
366 if (IS_DISKLABEL((struct next68k_disklabel *)bp->b_data)) { in readdisklabel()
369 (struct next68k_disklabel *)bp->b_data, lp, osdep); in readdisklabel()
376 * big-endian systems, and with next68k when LABELSECTOR was 0. in readdisklabel()
379 for (dlp = (struct disklabel *)bp->b_data; in readdisklabel()
380 dlp <= (struct disklabel *)((char *)bp->b_data + in readdisklabel()
381 DEV_BSIZE - sizeof(*dlp)); in readdisklabel()
383 if (dlp->d_magic == DISKMAGIC || dlp->d_magic2 == DISKMAGIC) { in readdisklabel()
384 if (dlp->d_npartitions > MAXPARTITIONS || in readdisklabel()
388 *lp = *dlp; in readdisklabel()
391 osdep->od_version = DISKMAGIC; in readdisklabel()
404 writedisklabel(dev_t dev, void (*strat)(struct buf *), struct disklabel *lp, in writedisklabel() argument
415 if (lp->d_partitions[labelpart].p_offset != 0) { in writedisklabel()
416 if (lp->d_partitions[0].p_offset != 0) in writedisklabel()
426 bp->b_dev = MAKEDISKDEV(major(dev), DISKUNIT(dev), labelpart); in writedisklabel()
427 bp->b_blkno = NEXT68K_LABEL_SECTOR; in writedisklabel()
428 bp->b_bcount = NEXT68K_LABEL_SIZE; in writedisklabel()
429 bp->b_flags |= B_WRITE; in writedisklabel()
430 bp->b_cylinder = NEXT68K_LABEL_SECTOR / lp->d_secpercyl; in writedisklabel()
432 build_nextstep_label((struct next68k_disklabel *)bp->b_data, lp); in writedisklabel()
437 ((char *)bp->b_data + LABELSECTOR * lp->d_secsize + LABELOFFSET); in writedisklabel()
438 *dlp = *lp; in writedisklabel()