Lines Matching defs:idesc
53 static int snapclean(struct inodesc *idesc);
58 ckinode(union dinode *dp, struct inodesc *idesc)
68 if (idesc->id_fix != IGNORE)
69 idesc->id_fix = DONTKNOW;
70 idesc->id_dp = dp;
71 idesc->id_lbn = -1;
72 idesc->id_lballoc = -1;
73 idesc->id_level = 0;
74 idesc->id_entryno = 0;
75 idesc->id_filesize = DIP(dp, di_size);
90 idesc->id_lbn++;
93 idesc->id_numfrags =
96 idesc->id_numfrags = sblock.fs_frag;
98 if (idesc->id_type == DATA && ndb >= 0) {
100 getpathname(pathbuf, idesc->id_number,
101 idesc->id_number);
105 ginode(idesc->id_number, &ip);
118 idesc->id_blkno = DIP(&dino, di_db[i]);
119 if (idesc->id_type != DATA)
120 ret = (*idesc->id_func)(idesc);
122 ret = dirscan(idesc);
126 idesc->id_numfrags = sblock.fs_frag;
131 idesc->id_level = i + 1;
133 idesc->id_blkno = DIP(&dino, di_ib[i]);
134 ret = iblock(idesc, remsize, BT_LEVEL1 + i);
138 idesc->id_lbn += sizepb / sblock.fs_bsize;
139 if (idesc->id_type == DATA) {
141 getpathname(pathbuf, idesc->id_number,
142 idesc->id_number);
146 ginode(idesc->id_number, &ip);
165 iblock(struct inodesc *idesc, off_t isize, int type)
174 if (idesc->id_type != DATA) {
175 func = idesc->id_func;
176 if (((n = (*func)(idesc)) & KEEPON) == 0)
180 bp = getdatablk(idesc->id_blkno, sblock.fs_bsize, type);
185 idesc->id_bp = bp;
186 idesc->id_level--;
187 for (sizepb = sblock.fs_bsize, i = 0; i < idesc->id_level; i++)
193 if (idesc->id_func == pass1check && nif < NINDIR(&sblock)) {
198 (u_long)idesc->id_number);
201 } else if (dofix(idesc, buf)) {
210 idesc->id_blkno = IBLK(bp, i);
212 if (idesc->id_level == 0) {
213 idesc->id_lbn++;
214 n = (*func)(idesc);
216 n = iblock(idesc, isize, type - 1);
217 idesc->id_level++;
224 idesc->id_lbn += sizepb / sblock.fs_bsize;
225 if (idesc->id_type == DATA && isize > 0) {
227 getpathname(pathbuf, idesc->id_number,
228 idesc->id_number);
232 ginode(idesc->id_number, &ip);
661 freeblock(struct inodesc *idesc)
669 blkno = idesc->id_blkno;
670 if (idesc->id_type == SNAP) {
674 size = lfragtosize(&sblock, idesc->id_numfrags);
675 if (snapblkfree(&sblock, blkno, size, idesc->id_number,
678 for (nfrags = idesc->id_numfrags; nfrags > 0; blkno++, nfrags--) {
701 cgbp = cglookup(dtog(&sblock, idesc->id_blkno));
703 if (idesc->id_numfrags == sblock.fs_frag)
706 cgp->cg_cs.cs_nffree += idesc->id_numfrags;
718 struct inodesc idesc;
753 memset(&idesc, 0, sizeof(struct inodesc));
754 idesc.id_type = SNAP;
755 idesc.id_func = snapclean;
756 idesc.id_number = inum;
757 (void)ckinode(ip.i_dp, &idesc);
764 snapclean(struct inodesc *idesc)
770 blkno = idesc->id_blkno;
774 dp = idesc->id_dp;
776 if (idesc->id_lbn < UFS_NDADDR) {
777 DIP_SET(dp, di_db[idesc->id_lbn], 0);
779 bp = idesc->id_bp;
1031 struct inodesc idesc;
1037 memset(&idesc, 0, sizeof(struct inodesc));
1038 idesc.id_func = pass1check;
1039 idesc.id_number = ip->i_number;
1040 idesc.id_type = (DIP(dp, di_flags) & SF_SNAPSHOT) == 0 ? ADDR : SNAP;
1041 (void)ckinode(dp, &idesc);
1047 idesc.id_numfrags = numfrags(&sblock,
1050 idesc.id_numfrags = sblock.fs_frag;
1053 idesc.id_blkno = dp->dp2.di_extb[j];
1054 ret = (*idesc.id_func)(&idesc);
1059 idesc.id_entryno *= btodb(sblock.fs_fsize);
1060 if (DIP(dp, di_blocks) != idesc.id_entryno) {
1063 (u_long)idesc.id_number,
1065 (uintmax_t)idesc.id_entryno);
1072 DIP_SET(dp, di_blocks, idesc.id_entryno);
1075 cmd.value = idesc.id_number;
1076 cmd.size = idesc.id_entryno - DIP(dp, di_blocks);
1237 clri(struct inodesc *idesc, const char *type, int flag)
1242 ginode(idesc->id_number, &ip);
1255 if (idesc->id_type == SNAP) {
1256 snapremove(idesc->id_number);
1257 idesc->id_type = ADDR;
1259 (void)ckinode(dp, idesc);
1260 inoinfo(idesc->id_number)->ino_state = USTATE;
1264 cmd.value = idesc->id_number;
1278 findname(struct inodesc *idesc)
1280 struct direct *dirp = idesc->id_dirp;
1282 if (dirp->d_ino != idesc->id_parent || idesc->id_entryno < 2) {
1283 idesc->id_entryno++;
1286 memmove(idesc->id_name, dirp->d_name, (size_t)dirp->d_namlen + 1);
1291 findino(struct inodesc *idesc)
1293 struct direct *dirp = idesc->id_dirp;
1297 if (strcmp(dirp->d_name, idesc->id_name) == 0 &&
1299 idesc->id_parent = dirp->d_ino;
1306 clearentry(struct inodesc *idesc)
1308 struct direct *dirp = idesc->id_dirp;
1310 if (dirp->d_ino != idesc->id_parent || idesc->id_entryno < 2) {
1311 idesc->id_entryno++;
1452 struct inodesc idesc;
1456 memset(&idesc, 0, sizeof(struct inodesc));
1457 idesc.id_type = ADDR;
1458 idesc.id_func = freeblock;
1459 idesc.id_number = ino;
1462 (void)ckinode(dp, &idesc);