Lines Matching +full:sig +full:- +full:dir +full:- +full:cmd
1 /*-
2 * SPDX-License-Identifier: BSD-3-Clause
42 #include <ufs/ufs/dir.h>
169 if (iloff >= ilp->il_numalloced) in inoinfo()
171 return (&ilp->il_stat[iloff]); in inoinfo()
183 failedbuf.b_errs = -1; in bufinit()
213 bp->b_un.b_buf = bufp; in allocbuf()
242 if (cgbp->b_un.b_cg != NULL) in cglookup()
254 cgbp->b_un.b_cg = cgp; in cglookup()
262 * Update its check-hash if they are enabled.
269 cg = cgbp->b_un.b_cg; in cgdirty()
271 cg->cg_ckhash = 0; in cgdirty()
272 cg->cg_ckhash = in cgdirty()
290 if (cgbp->b_un.b_cg == NULL) in flushentry()
293 free(cgbp->b_un.b_buf); in flushentry()
294 cgbp->b_un.b_buf = NULL; in flushentry()
309 * If out of range, return empty buffer with b_err == -1 in getdatablk()
320 if (bp->b_bno == fsbtodb(&sblock, blkno)) { in getdatablk()
321 if (debug && bp->b_size != size) { in getdatablk()
324 bp->b_size, size); in getdatablk()
330 * Move long-term busy buffer back to the front of the LRU so we in getdatablk()
334 if (bp != NULL && bp->b_refcnt != 0) { in getdatablk()
356 if ((bp->b_flags & B_DIRTY) == 0 && bp->b_refcnt == 0) in getdatablk()
365 * Recycle oldest non-busy buffer. in getdatablk()
368 if (bp->b_refcnt == 0) in getdatablk()
377 bp->b_type = type; in getdatablk()
384 if (debug && bp->b_type != type) { in getdatablk()
389 if (bp->b_errs == 0) in getdatablk()
390 bp->b_refcnt++; in getdatablk()
401 if (bp->b_bno == dblk) { in getblk()
405 readcnt[bp->b_type]++; in getblk()
408 bp->b_errs = blread(fsreadfd, bp->b_un.b_buf, dblk, size); in getblk()
412 timespecadd(&readtime[bp->b_type], &finish, in getblk()
413 &readtime[bp->b_type]); in getblk()
415 bp->b_bno = dblk; in getblk()
416 bp->b_size = size; in getblk()
424 if (bp->b_refcnt <= 0) in brelse()
426 bp->b_refcnt--; in brelse()
433 bp->b_flags &= ~B_DIRTY; in binval()
443 if ((bp->b_flags & B_DIRTY) == 0) in flush()
445 bp->b_flags &= ~B_DIRTY; in flush()
450 if (bp->b_errs != 0) in flush()
452 (bp->b_errs == bp->b_size / dev_bsize) ? "" : "PARTIALLY ", in flush()
453 (long long)bp->b_bno); in flush()
454 bp->b_errs = 0; in flush()
458 switch (bp->b_type) { in flush()
464 * Superblocks are always pre-copied so we do not need in flush()
465 * to check them for copy-on-write. in flush()
467 if (sbput(fd, bp->b_un.b_fs, 0) == 0) in flush()
472 * Cylinder groups are always pre-copied so we do not in flush()
473 * need to check them for copy-on-write. in flush()
477 if (cgput(fswritefd, &sblock, bp->b_un.b_cg) == 0) in flush()
482 struct ufs2_dinode *dp = bp->b_un.b_dinode2; in flush()
485 for (i = 0; i < bp->b_size; dp++, i += sizeof(*dp)) { in flush()
488 pwarn("flush: INODE CHECK-HASH FAILED"); in flush()
491 ip.i_number = bp->b_index + (i / sizeof(*dp)); in flush()
504 blwrite(fd, bp->b_un.b_buf, bp->b_bno, bp->b_size); in flush()
527 if ((bp->b_flags & B_DIRTY) != 0) in snapflush()
554 cgp = bp->b_un.b_cg; in cg_write()
555 cgp->cg_cs.cs_nbfree = 0; in cg_write()
556 cgp->cg_cs.cs_nffree = 0; in cg_write()
557 bzero(&cgp->cg_frsum, sizeof(cgp->cg_frsum)); in cg_write()
570 cgp->cg_cs.cs_nbfree++; in cg_write()
575 ffs_fragacct(&sblock, blk, cgp->cg_frsum, 1); in cg_write()
578 cgp->cg_cs.cs_nffree++; in cg_write()
584 csp = &sblock.fs_cs(&sblock, cgp->cg_cgx); in cg_write()
585 sblock.fs_cstotal.cs_ndir += cgp->cg_cs.cs_ndir - csp->cs_ndir; in cg_write()
586 sblock.fs_cstotal.cs_nbfree += cgp->cg_cs.cs_nbfree - csp->cs_nbfree; in cg_write()
587 sblock.fs_cstotal.cs_nifree += cgp->cg_cs.cs_nifree - csp->cs_nifree; in cg_write()
588 sblock.fs_cstotal.cs_nffree += cgp->cg_cs.cs_nffree - csp->cs_nffree; in cg_write()
589 sblock.fs_cs(&sblock, cgp->cg_cgx) = cgp->cg_cs; in cg_write()
613 cmd.value = FS_UNCLEAN; in ckfini()
614 cmd.size = markclean ? -1 : 1; in ckfini()
616 &cmd, sizeof cmd) == -1) in ckfini()
675 switch (bp->b_type) { in ckfini()
695 if (debug && bp->b_refcnt != 0) in ckfini()
696 prtbuf(bp, "ckfini: clearing in-use buffer"); in ckfini()
701 free(bp->b_un.b_buf); in ckfini()
712 if (debug && bp->b_refcnt != 0) in ckfini()
713 prtbuf(bp, "ckfini: clearing in-use buffer"); in ckfini()
718 free(bp->b_un.b_buf); in ckfini()
722 errx(EEXIT, "panic: lost %d buffers", numbufs - cnt); in ckfini()
950 * Fill a contiguous region with all-zeroes. Note ZEROBUFSIZE is by
974 size -= len; in blzero()
996 struct cg *cgp = cgbp->b_un.b_cg; in check_cgmagic()
998 static int prevfailcg = -1; in check_cgmagic()
1005 calchash = cgp->cg_ckhash; in check_cgmagic()
1008 cghash = cgp->cg_ckhash; in check_cgmagic()
1009 cgp->cg_ckhash = 0; in check_cgmagic()
1011 cgp->cg_ckhash = cghash; in check_cgmagic()
1014 CHK(cgp->cg_ckhash, !=, calchash, "%jd"); in check_cgmagic()
1016 CHK(cgp->cg_cgx, !=, cg, "%jd"); in check_cgmagic()
1017 CHK(cgp->cg_ndblk, >, sblock.fs_fpg, "%jd"); in check_cgmagic()
1019 CHK(cgp->cg_old_niblk, !=, sblock.fs_ipg, "%jd"); in check_cgmagic()
1021 CHK(cgp->cg_niblk, !=, sblock.fs_ipg, "%jd"); in check_cgmagic()
1022 CHK(cgp->cg_initediblk, >, sblock.fs_ipg, "%jd"); in check_cgmagic()
1025 CHK(cgp->cg_ndblk, !=, sblock.fs_fpg, "%jd"); in check_cgmagic()
1027 CHK(cgp->cg_ndblk, !=, sblock.fs_size - cgbase(&sblock, cg), in check_cgmagic()
1032 CHK(cgp->cg_iusedoff, !=, start, "%jd"); in check_cgmagic()
1034 CHK(cgp->cg_niblk, !=, 0, "%jd"); in check_cgmagic()
1035 CHK(cgp->cg_initediblk, !=, 0, "%jd"); in check_cgmagic()
1036 CHK(cgp->cg_old_niblk, !=, sblock.fs_ipg, "%jd"); in check_cgmagic()
1037 CHK(cgp->cg_old_btotoff, !=, start, "%jd"); in check_cgmagic()
1038 CHK(cgp->cg_old_boff, !=, cgp->cg_old_btotoff + in check_cgmagic()
1040 CHK(cgp->cg_iusedoff, !=, cgp->cg_old_boff + in check_cgmagic()
1043 CHK(cgp->cg_freeoff, !=, in check_cgmagic()
1044 cgp->cg_iusedoff + howmany(sblock.fs_ipg, CHAR_BIT), "%jd"); in check_cgmagic()
1046 CHK(cgp->cg_nextfreeoff, !=, in check_cgmagic()
1047 cgp->cg_freeoff + howmany(sblock.fs_fpg, CHAR_BIT), "%jd"); in check_cgmagic()
1049 CHK(cgp->cg_nclusterblks, !=, cgp->cg_ndblk / sblock.fs_frag, in check_cgmagic()
1051 CHK(cgp->cg_clustersumoff, !=, in check_cgmagic()
1052 roundup(cgp->cg_freeoff + howmany(sblock.fs_fpg, CHAR_BIT), in check_cgmagic()
1053 sizeof(u_int32_t)) - sizeof(u_int32_t), "%jd"); in check_cgmagic()
1054 CHK(cgp->cg_clusteroff, !=, cgp->cg_clustersumoff + in check_cgmagic()
1056 CHK(cgp->cg_nextfreeoff, !=, cgp->cg_clusteroff + in check_cgmagic()
1073 struct cg *cgp = cgbp->b_un.b_cg; in rebuild_cg()
1081 cgp->cg_magic = CG_MAGIC; in rebuild_cg()
1082 cgp->cg_cgx = cg; in rebuild_cg()
1083 cgp->cg_niblk = sblock.fs_ipg; in rebuild_cg()
1084 cgp->cg_initediblk = MIN(sblock.fs_ipg, 2 * INOPB(&sblock)); in rebuild_cg()
1086 cgp->cg_ndblk = sblock.fs_fpg; in rebuild_cg()
1088 cgp->cg_ndblk = sblock.fs_size - cgbase(&sblock, cg); in rebuild_cg()
1091 cgp->cg_iusedoff = start; in rebuild_cg()
1093 cgp->cg_niblk = 0; in rebuild_cg()
1094 cgp->cg_initediblk = 0; in rebuild_cg()
1095 cgp->cg_old_ncyl = sblock.fs_old_cpg; in rebuild_cg()
1096 cgp->cg_old_niblk = sblock.fs_ipg; in rebuild_cg()
1097 cgp->cg_old_btotoff = start; in rebuild_cg()
1098 cgp->cg_old_boff = cgp->cg_old_btotoff + in rebuild_cg()
1100 cgp->cg_iusedoff = cgp->cg_old_boff + in rebuild_cg()
1103 cgp->cg_freeoff = cgp->cg_iusedoff + howmany(sblock.fs_ipg, CHAR_BIT); in rebuild_cg()
1104 cgp->cg_nextfreeoff = cgp->cg_freeoff + howmany(sblock.fs_fpg,CHAR_BIT); in rebuild_cg()
1106 cgp->cg_nclusterblks = cgp->cg_ndblk / sblock.fs_frag; in rebuild_cg()
1107 cgp->cg_clustersumoff = in rebuild_cg()
1108 roundup(cgp->cg_nextfreeoff, sizeof(u_int32_t)); in rebuild_cg()
1109 cgp->cg_clustersumoff -= sizeof(u_int32_t); in rebuild_cg()
1110 cgp->cg_clusteroff = cgp->cg_clustersumoff + in rebuild_cg()
1112 cgp->cg_nextfreeoff = cgp->cg_clusteroff + in rebuild_cg()
1115 cgp->cg_ckhash = calculate_crc32c(~0L, (void *)cgp, sblock.fs_cgsize); in rebuild_cg()
1135 blkno < maxfsblock - sblock.fs_frag; in allocblk()
1142 blkno = -newblk; in allocblk()
1145 blkno < cgbase(&sblock, startcg) - sblock.fs_frag; in allocblk()
1152 blkno = -newblk; in allocblk()
1167 for (j = 0; j <= sblock.fs_frag - frags; j++) { in std_checkblkavail()
1179 cgp = cgbp->b_un.b_cg; in std_checkblkavail()
1181 return (-((cg + 1) * sblock.fs_fpg - sblock.fs_frag)); in std_checkblkavail()
1189 cgp->cg_cs.cs_nbfree--; in std_checkblkavail()
1191 cgp->cg_cs.cs_nffree -= frags; in std_checkblkavail()
1210 kernmaxfilesize = (off_t)0x40000000 * sblock.fs_bsize - 1; in chkfilesize()
1248 delay_usec = (tv.tv_sec - slowio_starttime.tv_sec) * 1000000 + in slowio_end()
1249 (tv.tv_usec - slowio_starttime.tv_usec); in slowio_end()
1284 cp = &namebuf[MAXPATHLEN - 1]; in getpathname()
1314 cp -= len; in getpathname()
1316 *--cp = '/'; in getpathname()
1323 *--cp = '?'; in getpathname()
1324 memmove(namebuf, cp, (size_t)(&namebuf[MAXPATHLEN] - cp)); in getpathname()
1328 catch(int sig __unused) in catch()
1341 catchquit(int sig __unused) in catchquit()
1343 printf("returning to single-user after file system check\n"); in catchquit()
1355 switch (idesc->id_fix) { in dofix()
1358 if (idesc->id_type == DATA) in dofix()
1359 direrror(idesc->id_number, msg); in dofix()
1364 idesc->id_fix = FIX; in dofix()
1368 idesc->id_fix = NOFIX; in dofix()
1371 idesc->id_fix = FIX; in dofix()
1382 errx(EEXIT, "UNKNOWN INODESC FIX MODE %d", idesc->id_fix); in dofix()
1403 "index %jd\n", bp, BT_BUFTYPE(bp->b_type), (intmax_t) bp->b_bno, in prtbuf()
1404 bp->b_size, bp->b_refcnt, bp->b_flags & B_DIRTY ? "dirty" : "clean", in prtbuf()
1405 (intmax_t) bp->b_index); in prtbuf()
1428 cmd.value = FS_NEEDSFSCK; in pfatal()
1429 cmd.size = 1; in pfatal()
1431 &cmd, sizeof cmd) == -1) in pfatal()
1450 cmd.value = FS_NEEDSFSCK; in pfatal()
1451 cmd.size = 1; in pfatal()
1453 &cmd, sizeof cmd) == -1) in pfatal()