Home | History | Annotate | Download | only in fsck_ext2fs

Lines Matching defs:idesc

151 dirscan(struct inodesc *idesc)
162 if (idesc->id_type != DATA)
163 errexit("wrong type to dirscan %d", idesc->id_type);
164 if (idesc->id_entryno == 0 &&
165 (idesc->id_filesize & (sblock.e2fs_bsize - 1)) != 0)
166 idesc->id_filesize = roundup(idesc->id_filesize, sblock.e2fs_bsize);
167 blksiz = idesc->id_numfrags * sblock.e2fs_bsize;
168 if (chkrange(idesc->id_blkno, idesc->id_numfrags)) {
169 idesc->id_filesize -= blksiz;
173 idesc->id_loc = 0;
174 for (dp = fsck_readdir(idesc); dp != NULL; dp = fsck_readdir(idesc)) {
177 idesc->id_dirp = (struct ext2fs_direct *)dbuf;
178 if ((n = (*idesc->id_func)(idesc)) & ALTERED) {
179 bp = getdirblk(idesc->id_blkno, blksiz);
180 memcpy(bp->b_un.b_buf + idesc->id_loc - dsize, dbuf,
191 return (idesc->id_filesize > 0 ? KEEPON : STOP);
198 fsck_readdir(struct inodesc *idesc)
204 blksiz = idesc->id_numfrags * sblock.e2fs_bsize;
205 bp = getdirblk(idesc->id_blkno, blksiz);
206 if (idesc->id_loc % sblock.e2fs_bsize == 0 && idesc->id_filesize > 0 &&
207 idesc->id_loc < blksiz) {
208 dp = (struct ext2fs_direct *)(bp->b_un.b_buf + idesc->id_loc);
209 if (dircheck(idesc, dp))
211 if (idesc->id_fix == IGNORE)
213 fix = dofix(idesc, "DIRECTORY CORRUPTED");
214 bp = getdirblk(idesc->id_blkno, blksiz);
215 dp = (struct ext2fs_direct *)(bp->b_un.b_buf + idesc->id_loc);
223 idesc->id_loc += sblock.e2fs_bsize;
224 idesc->id_filesize -= sblock.e2fs_bsize;
228 if (idesc->id_filesize <= 0 || idesc->id_loc >= blksiz)
230 dploc = idesc->id_loc;
232 idesc->id_loc += fs2h16(dp->e2d_reclen);
233 idesc->id_filesize -= fs2h16(dp->e2d_reclen);
234 if ((idesc->id_loc % sblock.e2fs_bsize) == 0)
236 ndp = (struct ext2fs_direct *)(bp->b_un.b_buf + idesc->id_loc);
237 if (idesc->id_loc < blksiz && idesc->id_filesize > 0 &&
238 dircheck(idesc, ndp) == 0) {
239 size = sblock.e2fs_bsize - (idesc->id_loc % sblock.e2fs_bsize);
240 idesc->id_loc += size;
241 idesc->id_filesize -= size;
242 if (idesc->id_fix == IGNORE)
244 fix = dofix(idesc, "DIRECTORY CORRUPTED");
245 bp = getdirblk(idesc->id_blkno, blksiz);
259 dircheck(struct inodesc *idesc, struct ext2fs_direct *dp)
266 spaceleft = sblock.e2fs_bsize - (idesc->id_loc % sblock.e2fs_bsize);
280 idesc->id_filesize < size /* ||
319 adjust(struct inodesc *idesc, short lcnt)
323 dp = ginode(idesc->id_number);
325 if (linkup(idesc->id_number, (ino_t)0) == 0)
326 clri(idesc, "UNREF", 0);
328 pwarn("LINK COUNT %s", (lfdir == idesc->id_number) ? lfname :
330 pinode(idesc->id_number);
348 mkentry(struct inodesc *idesc)
350 struct ext2fs_direct *dirp = idesc->id_dirp;
355 newent.e2d_namlen = strlen(idesc->id_name);
358 newent.e2d_type = inot2ext2dt(typemap[idesc->id_parent]);
369 dirp->e2d_ino = h2fs32(idesc->id_parent); /* ino to be entered is in id_parent */
373 memcpy(dirp->e2d_name, idesc->id_name, (size_t)(dirp->e2d_namlen));
378 chgino(struct inodesc *idesc)
380 struct ext2fs_direct *dirp = idesc->id_dirp;
383 if (strlen(idesc->id_name) != namlen ||
384 strncmp(dirp->e2d_name, idesc->id_name, (int)namlen))
386 dirp->e2d_ino = h2fs32(idesc->id_parent);
389 dirp->e2d_type = inot2ext2dt(typemap[idesc->id_parent]);
401 struct inodesc idesc;
404 memset(&idesc, 0, sizeof(struct inodesc));
418 idesc.id_name = lfname;
419 idesc.id_type = DATA;
420 idesc.id_func = findino;
421 idesc.id_number = EXT2_ROOTINO;
422 if ((ckinode(dp, &idesc) & FOUND) != 0) {
423 lfdir = idesc.id_parent;
462 idesc.id_type = ADDR;
463 idesc.id_func = pass4check;
464 idesc.id_number = oldlfdir;
465 adjust(&idesc, lncntp[oldlfdir] + 1);
504 struct inodesc idesc;
506 memset(&idesc, 0, sizeof(struct inodesc));
507 idesc.id_type = DATA;
508 idesc.id_func = chgino;
509 idesc.id_number = dir;
510 idesc.id_fix = DONTKNOW;
511 idesc.id_name = name;
512 idesc.id_parent = newnum; /* new value for name */
513 return (ckinode(ginode(dir), &idesc));
523 struct inodesc idesc;
530 memset(&idesc, 0, sizeof(struct inodesc));
531 idesc.id_type = DATA;
532 idesc.id_func = mkentry;
533 idesc.id_number = parent;
534 idesc.id_parent = ino; /* this is the inode to enter */
535 idesc.id_fix = DONTKNOW;
536 idesc.id_name = name;
542 if ((ckinode(dp, &idesc) & ALTERED) != 0)
548 return (ckinode(dp, &idesc) & ALTERED);