Lines Matching refs:idesc

168 dirscan(struct inodesc *idesc)  in dirscan()  argument
180 if (idesc->id_type != DATA) in dirscan()
181 errexit("wrong type to dirscan %d", idesc->id_type); in dirscan()
182 if (idesc->id_entryno == 0 && in dirscan()
183 (idesc->id_filesize & (dirblksiz - 1)) != 0) in dirscan()
184 idesc->id_filesize = roundup(idesc->id_filesize, dirblksiz); in dirscan()
185 blksiz = idesc->id_numfrags * sblock->fs_fsize; in dirscan()
186 if (chkrange(idesc->id_blkno, idesc->id_numfrags)) { in dirscan()
187 idesc->id_filesize -= blksiz; in dirscan()
197 bp = getdirblk(idesc->id_blkno, blksiz); in dirscan()
211 idesc->id_filesize -= blksiz; in dirscan()
212 return (idesc->id_filesize > 0 ? KEEPON : STOP); in dirscan()
215 idesc->id_loc = 0; in dirscan()
216 for (dp = fsck_readdir(idesc); dp != NULL; dp = fsck_readdir(idesc)) { in dirscan()
223 idesc->id_dirp = (struct direct *)dbuf; in dirscan()
224 if ((n = (*idesc->id_func)(idesc)) & ALTERED) { in dirscan()
227 bp = getdirblk(idesc->id_blkno, blksiz); in dirscan()
228 memmove(bp->b_un.b_buf + idesc->id_loc - dsize, dbuf, in dirscan()
236 return (idesc->id_filesize > 0 ? KEEPON : STOP); in dirscan()
243 fsck_readdir(struct inodesc *idesc) in fsck_readdir() argument
249 blksiz = idesc->id_numfrags * sblock->fs_fsize; in fsck_readdir()
250 bp = getdirblk(idesc->id_blkno, blksiz); in fsck_readdir()
251 if (idesc->id_loc % dirblksiz == 0 && idesc->id_filesize > 0 && in fsck_readdir()
252 idesc->id_loc < blksiz) { in fsck_readdir()
253 dp = (struct direct *)(bp->b_un.b_buf + idesc->id_loc); in fsck_readdir()
254 if (dircheck(idesc, dp, bp)) in fsck_readdir()
256 if (idesc->id_fix == IGNORE) in fsck_readdir()
258 fix = dofix(idesc, "DIRECTORY CORRUPTED"); in fsck_readdir()
259 bp = getdirblk(idesc->id_blkno, blksiz); in fsck_readdir()
260 dp = (struct direct *)(bp->b_un.b_buf + idesc->id_loc); in fsck_readdir()
270 idesc->id_loc += dirblksiz; in fsck_readdir()
271 idesc->id_filesize -= dirblksiz; in fsck_readdir()
275 if (idesc->id_filesize <= 0 || idesc->id_loc >= blksiz) in fsck_readdir()
277 dploc = idesc->id_loc; in fsck_readdir()
279 idesc->id_loc += iswap16(dp->d_reclen); in fsck_readdir()
280 idesc->id_filesize -= iswap16(dp->d_reclen); in fsck_readdir()
281 if ((idesc->id_loc % dirblksiz) == 0) in fsck_readdir()
283 ndp = (struct direct *)(bp->b_un.b_buf + idesc->id_loc); in fsck_readdir()
284 if (idesc->id_loc < blksiz && idesc->id_filesize > 0 && in fsck_readdir()
285 dircheck(idesc, ndp, bp) == 0) { in fsck_readdir()
286 size = dirblksiz - (idesc->id_loc % dirblksiz); in fsck_readdir()
287 idesc->id_loc += size; in fsck_readdir()
288 idesc->id_filesize -= size; in fsck_readdir()
289 if (idesc->id_fix == IGNORE) in fsck_readdir()
291 fix = dofix(idesc, "DIRECTORY CORRUPTED"); in fsck_readdir()
292 bp = getdirblk(idesc->id_blkno, blksiz); in fsck_readdir()
311 dircheck(struct inodesc *idesc, struct direct *dp, struct bufarea *bp) in dircheck() argument
320 spaceleft = dirblksiz - (idesc->id_loc % dirblksiz); in dircheck()
365 if (reclen < size || idesc->id_filesize < size || in dircheck()
445 adjust(struct inodesc *idesc, int lcnt) in adjust() argument
451 dp = ginode(idesc->id_number); in adjust()
460 clri(idesc, "UNREF", 1); in adjust()
470 if (linkup(idesc->id_number, (ino_t)0, NULL) == 0) { in adjust()
472 clri(idesc, "UNREF", 0); in adjust()
478 dp = ginode(idesc->id_number); in adjust()
483 pwarn("LINK COUNT %s", (lfdir == idesc->id_number) ? lfname : in adjust()
486 pinode(idesc->id_number); in adjust()
506 mkentry(struct inodesc *idesc) in mkentry() argument
508 struct direct *dirp = idesc->id_dirp; in mkentry()
512 newent.d_namlen = strlen(idesc->id_name); in mkentry()
524 dirp->d_ino = iswap32(idesc->id_parent); in mkentry()
527 dirp->d_type = inoinfo(idesc->id_parent)->ino_type; in mkentry()
531 memmove(dirp->d_name, idesc->id_name, (size_t)newent.d_namlen + 1); in mkentry()
544 chgino(struct inodesc *idesc) in chgino() argument
546 struct direct *dirp = idesc->id_dirp; in chgino()
548 if (memcmp(dirp->d_name, idesc->id_name, (int)dirp->d_namlen + 1)) in chgino()
550 dirp->d_ino = iswap32(idesc->id_parent); in chgino()
552 dirp->d_type = inoinfo(idesc->id_parent)->ino_type; in chgino()
564 struct inodesc idesc; in linkup() local
569 memset(&idesc, 0, sizeof(struct inodesc)); in linkup()
589 idesc.id_name = lfname; in linkup()
590 idesc.id_type = DATA; in linkup()
591 idesc.id_func = findino; in linkup()
592 idesc.id_number = UFS_ROOTINO; in linkup()
593 idesc.id_uid = iswap32(DIP(dp, uid)); in linkup()
594 idesc.id_gid = iswap32(DIP(dp, gid)); in linkup()
595 if ((ckinode(dp, &idesc) & FOUND) != 0) { in linkup()
596 lfdir = idesc.id_parent; in linkup()
647 idesc.id_type = ADDR; in linkup()
648 idesc.id_func = pass4check; in linkup()
649 idesc.id_number = oldlfdir; in linkup()
650 adjust(&idesc, inoinfo(oldlfdir)->ino_linkcnt + 1); in linkup()
693 struct inodesc idesc; in changeino() local
697 memset(&idesc, 0, sizeof(struct inodesc)); in changeino()
698 idesc.id_type = DATA; in changeino()
699 idesc.id_func = chgino; in changeino()
700 idesc.id_number = dir; in changeino()
701 idesc.id_fix = DONTKNOW; in changeino()
702 idesc.id_name = name; in changeino()
703 idesc.id_parent = newnum; /* new value for name */ in changeino()
704 idesc.id_uid = iswap32(DIP(dp, uid)); in changeino()
705 idesc.id_gid = iswap32(DIP(dp, gid)); in changeino()
706 return (ckinode(dp, &idesc)); in changeino()
716 struct inodesc idesc; in makeentry() local
723 memset(&idesc, 0, sizeof(struct inodesc)); in makeentry()
724 idesc.id_type = DATA; in makeentry()
725 idesc.id_func = mkentry; in makeentry()
726 idesc.id_number = parent; in makeentry()
727 idesc.id_parent = ino; /* this is the inode to enter */ in makeentry()
728 idesc.id_fix = DONTKNOW; in makeentry()
729 idesc.id_name = name; in makeentry()
730 idesc.id_uid = iswap32(DIP(dp, uid)); in makeentry()
731 idesc.id_gid = iswap32(DIP(dp, gid)); in makeentry()
737 if ((ckinode(dp, &idesc) & ALTERED) != 0) in makeentry()
743 update_uquot(idesc.id_number, idesc.id_uid, idesc.id_gid, in makeentry()
745 return (ckinode(dp, &idesc) & ALTERED); in makeentry()