Lines Matching refs:idesc
100 dirscan(struct inodesc *idesc) in dirscan() argument
111 if (idesc->id_type != DATA) in dirscan()
112 errexit("wrong type to dirscan %d\n", idesc->id_type); in dirscan()
113 if (idesc->id_entryno == 0 && in dirscan()
114 (idesc->id_filesize & (DIRBLKSIZ - 1)) != 0) in dirscan()
115 idesc->id_filesize = roundup(idesc->id_filesize, DIRBLKSIZ); in dirscan()
116 blksiz = idesc->id_numfrags * sblock.fs_fsize; in dirscan()
117 if (chkrange(idesc->id_blkno, idesc->id_numfrags)) { in dirscan()
118 idesc->id_filesize -= (offset_t)blksiz; in dirscan()
121 idesc->id_loc = 0; in dirscan()
122 for (dp = fsck_readdir(idesc); dp != NULL; dp = fsck_readdir(idesc)) { in dirscan()
130 idesc->id_dirp = &u.dir; in dirscan()
131 if ((n = (*idesc->id_func)(idesc)) & ALTERED) { in dirscan()
141 bp = getdirblk(idesc->id_blkno, blksiz); in dirscan()
143 idesc->id_loc - dsize), in dirscan()
151 return (idesc->id_filesize > 0 ? KEEPON : STOP); in dirscan()
158 fsck_readdir(struct inodesc *idesc) in fsck_readdir() argument
166 int origloc = idesc->id_loc; in fsck_readdir()
168 blksiz = idesc->id_numfrags * sblock.fs_fsize; in fsck_readdir()
177 if ((idesc->id_filesize <= 0) || (idesc->id_loc >= blksiz) || in fsck_readdir()
178 ((idesc->id_loc & 3) != 0)) in fsck_readdir()
197 bp = getdirblk(idesc->id_blkno, blksiz); in fsck_readdir()
199 dp = (struct direct *)(bp->b_un.b_buf + idesc->id_loc); in fsck_readdir()
204 if (dircheck(idesc, dp) == 0) { in fsck_readdir()
214 size = DIRBLKSIZ - (idesc->id_loc & (DIRBLKSIZ - 1)); in fsck_readdir()
219 idesc->id_loc += size; in fsck_readdir()
220 idesc->id_filesize -= (offset_t)size; in fsck_readdir()
226 salvaged = (idesc->id_fix == DONTKNOW); in fsck_readdir()
227 dofixret = dofix(idesc, "DIRECTORY CORRUPTED"); in fsck_readdir()
238 bp = getdirblk(idesc->id_blkno, blksiz); in fsck_readdir()
280 if (idesc->id_number == lfdir) in fsck_readdir()
296 idesc->id_loc += dp->d_reclen; in fsck_readdir()
297 idesc->id_filesize -= (offset_t)dp->d_reclen; in fsck_readdir()
305 if ((idesc->id_loc & (DIRBLKSIZ - 1)) && /* not at start */ in fsck_readdir()
306 (idesc->id_loc < blksiz) && /* within block */ in fsck_readdir()
307 ((idesc->id_loc & 3) == 0) && /* properly aligned */ in fsck_readdir()
308 (idesc->id_filesize > 0)) { /* data follows */ in fsck_readdir()
310 ndp = (struct direct *)(bp->b_un.b_buf + idesc->id_loc); in fsck_readdir()
311 if (dircheck(idesc, ndp) == 0) in fsck_readdir()
326 dircheck(struct inodesc *idesc, struct direct *dp) in dircheck() argument
343 spaceleft = DIRBLKSIZ - (idesc->id_loc % DIRBLKSIZ); in dircheck()
349 idesc->id_filesize >= (offset_t)size && in dircheck()
363 idesc->id_number, idesc->id_lbn, idesc->id_loc); in dircheck()
371 adjust(struct inodesc *idesc, int lcnt) in adjust() argument
378 dp = ginode(idesc->id_number); in adjust()
387 clri(idesc, "UNREF", CLRI_VERBOSE, CLRI_NOP_OK); in adjust()
402 if (linkup(idesc->id_number, (fsck_ino_t)0, in adjust()
405 clri(idesc, "UNREF", CLRI_QUIET, CLRI_NOP_OK); in adjust()
406 if (statemap[idesc->id_number] != USTATE) in adjust()
410 dp = ginode(idesc->id_number); in adjust()
412 lcnt = lncntp[idesc->id_number]; in adjust()
424 LINK_CLEAR(flow, idesc->id_number, dp->di_mode, &lcidesc); in adjust()
425 if (statemap[idesc->id_number] == USTATE) in adjust()
429 dp = ginode(idesc->id_number); in adjust()
432 file_id(idesc->id_number, dp->di_mode)); in adjust()
433 pinode(idesc->id_number); in adjust()
434 dp = ginode(idesc->id_number); in adjust()
470 mkentry(struct inodesc *idesc) in mkentry() argument
472 struct direct *dirp = idesc->id_dirp; in mkentry()
476 newent.d_namlen = strlen(idesc->id_name); in mkentry()
489 dirp->d_ino = idesc->id_parent; /* ino to be entered is in id_parent */ in mkentry()
492 (void) memmove(dirp->d_name, idesc->id_name, in mkentry()
499 chgino(struct inodesc *idesc) in chgino() argument
501 struct direct *dirp = idesc->id_dirp; in chgino()
503 if (memcmp(dirp->d_name, idesc->id_name, in chgino()
506 dirp->d_ino = idesc->id_parent; in chgino()
519 struct inodesc idesc; in linkup() local
521 init_inodesc(&idesc); in linkup()
539 idesc.id_name = lfname; in linkup()
540 idesc.id_type = DATA; in linkup()
541 idesc.id_func = findino; in linkup()
542 idesc.id_number = UFSROOTINO; in linkup()
543 idesc.id_fix = DONTKNOW; in linkup()
544 if ((ckinode(dp, &idesc, CKI_TRAVERSE) & FOUND) != 0) { in linkup()
545 lfdir = idesc.id_parent; in linkup()
651 struct inodesc idesc; in do_reconnect() local
669 LINK_CLEAR(flow_msg, orphan, dp->di_mode, &idesc); in do_reconnect()
703 LFDIR_LINK_RANGE_RVAL(flow_msg, lncntp[lfdir], 1, &idesc, 0); in do_reconnect()
754 struct inodesc idesc; in changeino() local
756 init_inodesc(&idesc); in changeino()
757 idesc.id_type = DATA; in changeino()
758 idesc.id_func = chgino; in changeino()
759 idesc.id_number = dir; in changeino()
760 idesc.id_fix = DONTKNOW; in changeino()
761 idesc.id_name = name; in changeino()
762 idesc.id_parent = newnum; /* new value for name */ in changeino()
763 return (ckinode(ginode(dir), &idesc, CKI_TRAVERSE)); in changeino()
775 struct inodesc idesc; in makeentry() local
781 init_inodesc(&idesc); in makeentry()
782 idesc.id_type = DATA; in makeentry()
783 idesc.id_func = mkentry; in makeentry()
784 idesc.id_number = parent; in makeentry()
785 idesc.id_parent = ino; /* this is the inode to enter */ in makeentry()
786 idesc.id_fix = DONTKNOW; in makeentry()
787 idesc.id_name = name; in makeentry()
801 if ((ckinode(dp, &idesc, CKI_TRAVERSE) & ALTERED) != 0) { in makeentry()
1129 struct inodesc idesc; in allocdir() local
1205 LINK_CLEAR(flow, parent, dp->di_mode, &idesc); in allocdir()
1347 struct inodesc idesc; in mkuniqname() local
1386 &idesc); in mkuniqname()