Lines Matching refs:dep

314 deupdat(struct denode *dep, int waitfor)
322 if (DETOV(dep)->v_mount->mnt_flag & MNT_RDONLY) {
323 dep->de_flag &= ~(DE_UPDATE | DE_CREATE | DE_ACCESS |
328 DETIMES(dep, &ts, &ts, &ts);
329 if ((dep->de_flag & DE_MODIFIED) == 0 && waitfor == 0)
331 dep->de_flag &= ~DE_MODIFIED;
332 if (DETOV(dep)->v_vflag & VV_ROOT)
334 if (dep->de_refcnt <= 0)
336 error = readde(dep, &bp, &dirp);
339 DE_EXTERNALIZE(&dir, dep);
347 if ((DETOV(dep)->v_mount->mnt_flag & MNT_NOCLUSTERW) == 0)
359 * Truncate the file described by dep to the length specified by length.
362 detrunc(struct denode *dep, u_long length, int flags, struct ucred *cred)
370 int isadir = dep->de_Attributes & ATTR_DIRECTORY;
372 struct msdosfsmount *pmp = dep->de_pmp;
375 printf("detrunc(): file %s, length %lu, flags %x\n", dep->de_Name, length, flags);
386 if ((DETOV(dep)->v_vflag & VV_ROOT) && !FAT32(pmp)) {
389 dep->de_dirclust, dep->de_diroffset);
394 if (dep->de_FileSize < length)
395 return (deextend(dep, length, cred));
407 chaintofree = dep->de_StartCluster;
408 dep->de_StartCluster = 0;
411 error = pcbmap(dep, de_clcount(pmp, length) - 1, 0,
421 fc_purge(dep, de_clcount(pmp, length));
434 error = bread(DETOV(dep), de_cluster(pmp, length),
454 dep->de_FileSize = length;
456 dep->de_flag |= DE_UPDATE | DE_MODIFIED;
457 allerror = vtruncbuf(DETOV(dep), length, pmp->pm_bpcluster);
462 error = deupdat(dep, !DOINGASYNC((DETOV(dep))));
483 fc_setcache(dep, FC_LASTFC, de_cluster(pmp, length - 1),
498 * Extend the file described by dep to length specified by length.
501 deextend(struct denode *dep, u_long length, struct ucred *cred)
503 struct msdosfsmount *pmp = dep->de_pmp;
504 struct vnode *vp = DETOV(dep);
519 if (dep->de_Attributes & ATTR_DIRECTORY)
522 if (length <= dep->de_FileSize)
528 count = de_clcount(pmp, length) - de_clcount(pmp, dep->de_FileSize);
532 error = extendfile(dep, count, NULL, NULL, DE_CLEAR);
550 error = bread(vp, de_cluster(pmp, dep->de_FileSize), pmp->pm_bpcluster,
555 eof_clusteroff = de_cn2off(pmp, de_cluster(pmp, dep->de_FileSize));
556 vfs_bio_bzero_buf(bp, dep->de_FileSize - eof_clusteroff,
557 pmp->pm_bpcluster - dep->de_FileSize + eof_clusteroff);
566 dep->de_FileSize = length;
567 dep->de_flag |= DE_UPDATE | DE_MODIFIED;
568 return (deupdat(dep, !DOINGASYNC(vp)));
572 (void)detrunc(dep, dep->de_FileSize, 0, cred);
581 reinsert(struct denode *dep)
594 if (dep->de_Attributes & ATTR_DIRECTORY)
597 vp = DETOV(dep);
598 dep->de_inode = DETOI(dep->de_pmp, dep->de_dirclust, dep->de_diroffset);
601 dep->de_inode, dep->de_refcnt, vp);
603 vfs_hash_rehash(vp, dep->de_inode);
610 struct denode *dep = VTODE(vp);
613 printf("msdosfs_reclaim(): dep %p, file %s, refcnt %ld\n",
614 dep, dep->de_Name, dep->de_refcnt);
622 dep->de_inode, dep->de_refcnt, vp);
629 dep->de_flag = 0;
631 free(dep, M_MSDOSFSNODE);
641 struct denode *dep = VTODE(vp);
645 printf("msdosfs_inactive(): dep %p, de_Name[0] %x\n", dep, dep->de_Name[0]);
651 if (dep->de_Name[0] == SLOT_DELETED || dep->de_Name[0] == SLOT_EMPTY)
660 printf("msdosfs_inactive(): dep %p, refcnt %ld, mntflag %llx, MNT_RDONLY %llx\n",
661 dep, dep->de_refcnt, (unsigned long long)vp->v_mount->mnt_flag,
664 if (dep->de_refcnt <= 0 && (vp->v_mount->mnt_flag & MNT_RDONLY) == 0) {
665 error = detrunc(dep, (u_long) 0, 0, NOCRED);
666 dep->de_flag |= DE_UPDATE;
667 dep->de_Name[0] = SLOT_DELETED;
669 deupdat(dep, 0);
678 vrefcnt(vp), dep->de_Name[0]);
680 if (dep->de_Name[0] == SLOT_DELETED || dep->de_Name[0] == SLOT_EMPTY)