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