Lines Matching refs:idesc

54 static int snapclean(struct inodesc *idesc);
59 ckinode(union dinode *dp, struct inodesc *idesc) in ckinode() argument
69 if (idesc->id_fix != IGNORE) in ckinode()
70 idesc->id_fix = DONTKNOW; in ckinode()
71 idesc->id_dp = dp; in ckinode()
72 idesc->id_lbn = -1; in ckinode()
73 idesc->id_lballoc = -1; in ckinode()
74 idesc->id_level = 0; in ckinode()
75 idesc->id_entryno = 0; in ckinode()
76 idesc->id_filesize = DIP(dp, di_size); in ckinode()
91 idesc->id_lbn++; in ckinode()
94 idesc->id_numfrags = in ckinode()
97 idesc->id_numfrags = sblock.fs_frag; in ckinode()
99 if (idesc->id_type == DATA && ndb >= 0) { in ckinode()
101 getpathname(pathbuf, idesc->id_number, in ckinode()
102 idesc->id_number); in ckinode()
106 ginode(idesc->id_number, &ip); in ckinode()
119 idesc->id_blkno = DIP(&dino, di_db[i]); in ckinode()
120 if (idesc->id_type != DATA) in ckinode()
121 ret = (*idesc->id_func)(idesc); in ckinode()
123 ret = dirscan(idesc); in ckinode()
127 idesc->id_numfrags = sblock.fs_frag; in ckinode()
132 idesc->id_level = i + 1; in ckinode()
134 idesc->id_blkno = DIP(&dino, di_ib[i]); in ckinode()
135 ret = iblock(idesc, remsize, BT_LEVEL1 + i); in ckinode()
139 idesc->id_lbn += sizepb / sblock.fs_bsize; in ckinode()
140 if (idesc->id_type == DATA) { in ckinode()
142 getpathname(pathbuf, idesc->id_number, in ckinode()
143 idesc->id_number); in ckinode()
147 ginode(idesc->id_number, &ip); in ckinode()
166 iblock(struct inodesc *idesc, off_t isize, int type) in iblock() argument
175 if (idesc->id_type != DATA) { in iblock()
176 func = idesc->id_func; in iblock()
177 if (((n = (*func)(idesc)) & KEEPON) == 0) in iblock()
181 bp = getdatablk(idesc->id_blkno, sblock.fs_bsize, type); in iblock()
186 idesc->id_bp = bp; in iblock()
187 idesc->id_level--; in iblock()
188 for (sizepb = sblock.fs_bsize, i = 0; i < idesc->id_level; i++) in iblock()
194 if (idesc->id_func == pass1check && nif < NINDIR(&sblock)) { in iblock()
199 (u_long)idesc->id_number); in iblock()
202 } else if (dofix(idesc, buf)) { in iblock()
211 idesc->id_blkno = IBLK(bp, i); in iblock()
213 if (idesc->id_level == 0) { in iblock()
214 idesc->id_lbn++; in iblock()
215 n = (*func)(idesc); in iblock()
217 n = iblock(idesc, isize, type - 1); in iblock()
218 idesc->id_level++; in iblock()
225 idesc->id_lbn += sizepb / sblock.fs_bsize; in iblock()
226 if (idesc->id_type == DATA && isize > 0) { in iblock()
228 getpathname(pathbuf, idesc->id_number, in iblock()
229 idesc->id_number); in iblock()
233 ginode(idesc->id_number, &ip); in iblock()
685 freeblock(struct inodesc *idesc) in freeblock() argument
693 blkno = idesc->id_blkno; in freeblock()
694 if (idesc->id_type == SNAP) { in freeblock()
698 size = lfragtosize(&sblock, idesc->id_numfrags); in freeblock()
699 if (snapblkfree(&sblock, blkno, size, idesc->id_number, in freeblock()
702 for (nfrags = idesc->id_numfrags; nfrags > 0; blkno++, nfrags--) { in freeblock()
725 cgbp = cglookup(dtog(&sblock, idesc->id_blkno)); in freeblock()
727 if (idesc->id_numfrags == sblock.fs_frag) in freeblock()
730 cgp->cg_cs.cs_nffree += idesc->id_numfrags; in freeblock()
742 struct inodesc idesc; in snapremove() local
777 memset(&idesc, 0, sizeof(struct inodesc)); in snapremove()
778 idesc.id_type = SNAP; in snapremove()
779 idesc.id_func = snapclean; in snapremove()
780 idesc.id_number = inum; in snapremove()
781 (void)ckinode(ip.i_dp, &idesc); in snapremove()
788 snapclean(struct inodesc *idesc) in snapclean() argument
794 blkno = idesc->id_blkno; in snapclean()
798 dp = idesc->id_dp; in snapclean()
800 if (idesc->id_lbn < UFS_NDADDR) { in snapclean()
801 DIP_SET(dp, di_db[idesc->id_lbn], 0); in snapclean()
803 bp = idesc->id_bp; in snapclean()
1055 struct inodesc idesc; in check_blkcnt() local
1061 memset(&idesc, 0, sizeof(struct inodesc)); in check_blkcnt()
1062 idesc.id_func = pass1check; in check_blkcnt()
1063 idesc.id_number = ip->i_number; in check_blkcnt()
1064 idesc.id_type = (DIP(dp, di_flags) & SF_SNAPSHOT) == 0 ? ADDR : SNAP; in check_blkcnt()
1065 (void)ckinode(dp, &idesc); in check_blkcnt()
1071 idesc.id_numfrags = numfrags(&sblock, in check_blkcnt()
1074 idesc.id_numfrags = sblock.fs_frag; in check_blkcnt()
1077 idesc.id_blkno = dp->dp2.di_extb[j]; in check_blkcnt()
1078 ret = (*idesc.id_func)(&idesc); in check_blkcnt()
1083 idesc.id_entryno *= btodb(sblock.fs_fsize); in check_blkcnt()
1084 if (DIP(dp, di_blocks) != idesc.id_entryno) { in check_blkcnt()
1087 (u_long)idesc.id_number, in check_blkcnt()
1089 (uintmax_t)idesc.id_entryno); in check_blkcnt()
1096 DIP_SET(dp, di_blocks, idesc.id_entryno); in check_blkcnt()
1099 cmd.value = idesc.id_number; in check_blkcnt()
1100 cmd.size = idesc.id_entryno - DIP(dp, di_blocks); in check_blkcnt()
1261 clri(struct inodesc *idesc, const char *type, int flag) in clri() argument
1266 ginode(idesc->id_number, &ip); in clri()
1279 if (idesc->id_type == SNAP) { in clri()
1280 snapremove(idesc->id_number); in clri()
1281 idesc->id_type = ADDR; in clri()
1283 (void)ckinode(dp, idesc); in clri()
1284 inoinfo(idesc->id_number)->ino_state = USTATE; in clri()
1288 cmd.value = idesc->id_number; in clri()
1302 findname(struct inodesc *idesc) in findname() argument
1304 struct direct *dirp = idesc->id_dirp; in findname()
1306 if (dirp->d_ino != idesc->id_parent || idesc->id_entryno < 2) { in findname()
1307 idesc->id_entryno++; in findname()
1310 memmove(idesc->id_name, dirp->d_name, (size_t)dirp->d_namlen + 1); in findname()
1315 findino(struct inodesc *idesc) in findino() argument
1317 struct direct *dirp = idesc->id_dirp; in findino()
1321 if (strcmp(dirp->d_name, idesc->id_name) == 0 && in findino()
1323 idesc->id_parent = dirp->d_ino; in findino()
1330 clearentry(struct inodesc *idesc) in clearentry() argument
1332 struct direct *dirp = idesc->id_dirp; in clearentry()
1334 if (dirp->d_ino != idesc->id_parent || idesc->id_entryno < 2) { in clearentry()
1335 idesc->id_entryno++; in clearentry()
1476 struct inodesc idesc; in freeino() local
1480 memset(&idesc, 0, sizeof(struct inodesc)); in freeino()
1481 idesc.id_type = ADDR; in freeino()
1482 idesc.id_func = freeblock; in freeino()
1483 idesc.id_number = ino; in freeino()
1486 (void)ckinode(dp, &idesc); in freeino()