Lines Matching defs:filep
89 static ino_t find(fileid_t *filep, char *path);
90 static ino_t dlook(fileid_t *filep, char *path);
91 static daddr32_t sbmap(fileid_t *filep, daddr32_t bn);
114 openi(fileid_t *filep, ino_t inode)
118 devid_t *devp = filep->fi_devp;
121 if ((filep->fi_inode = get_icache(devp->di_dcookie, inode)) != NULL)
124 filep->fi_offset = 0;
125 filep->fi_blocknum = fsbtodb(&devp->un_fs.di_fs,
129 filep->fi_count = devp->un_fs.di_fs.fs_bsize;
130 filep->fi_memp = filep->fi_buf;
133 if ((filep->fi_memp = get_bcache(filep)) == NULL) {
135 if (retval = set_bcache(filep))
137 lufs_merge_deltas(filep);
140 dp = (struct dinode *)filep->fi_memp;
141 filep->fi_inode = (struct inode *)
143 bzero((char *)filep->fi_inode, sizeof (struct inode));
144 filep->fi_inode->i_ic =
146 filep->fi_inode->i_number = inode;
147 if (set_ricache(devp->di_dcookie, inode, (void *)filep->fi_inode,
149 filep->fi_inode->i_flag = FI_NOCACHE;
156 fileid_t *filep = head;
159 while ((filep = filep->fi_forw) != head)
160 if (fd == filep->fi_filedes)
161 return (filep->fi_taken ? filep : 0);
168 find(fileid_t *filep, char *path)
185 devp = filep->fi_devp;
189 if (r && openi(filep, (ino_t)UFSROOTINO))
202 if ((inode = dlook(filep, lpathp)) != 0) {
203 if (openi(filep, inode))
205 if ((filep->fi_inode->i_smode & IFMT) == IFLNK) {
206 filep->fi_blocknum =
208 filep->fi_inode->i_db[0]);
209 filep->fi_count = DEV_BSIZE;
211 if ((filep->fi_memp =
212 get_bcache(filep)) == NULL) {
213 if (set_bcache(filep))
215 lufs_merge_deltas(filep);
217 len = strlen(filep->fi_memp);
218 if (filep->fi_memp[0] == '/')
226 bcopy(filep->fi_memp, lpathp, len);
248 sbmap(fileid_t *filep, daddr32_t bn)
256 devp = filep->fi_devp;
257 inodep = filep->fi_inode;
297 filep->fi_blocknum = fsbtodb(&devp->un_fs.di_fs, nb);
298 filep->fi_count = devp->un_fs.di_fs.fs_bsize;
300 if ((filep->fi_memp = get_bcache(filep)) == NULL) {
301 if (set_bcache(filep)) /* Gotta do I/O */
303 lufs_merge_deltas(filep);
305 b.blk[j] = filep->fi_memp;
320 dlook(fileid_t *filep, char *path)
322 devid_t *devp = filep->fi_devp;
332 ip = filep->fi_inode;
358 dirp.fi = filep;
407 fileid_t *filep;
412 filep = dstuff->fi;
413 devp = filep->fi_devp;
415 if (dstuff->loc >= filep->fi_inode->i_size) {
421 d = sbmap(filep, lbn);
426 filep->fi_blocknum = fsbtodb(&devp->un_fs.di_fs, d);
427 filep->fi_count =
428 blksize(&devp->un_fs.di_fs, filep->fi_inode, lbn);
430 if ((filep->fi_memp = get_bcache(filep)) == NULL) {
431 if (set_bcache(filep))
433 lufs_merge_deltas(filep);
436 dp = (struct direct *)(filep->fi_memp + off);
449 getblock(fileid_t *filep, caddr_t buf, int count, int *rcount)
459 devp = filep->fi_devp;
460 p = filep->fi_memp;
461 if ((signed)filep->fi_count <= 0) {
464 diff = filep->fi_inode->i_size - filep->fi_offset;
472 lbn = lblkno(fs, filep->fi_offset);
475 fsbn = sbmap(filep, lbn);
484 filep->fi_blocknum = fsbtodb(fs, fsbn);
486 off = blkoff(fs, filep->fi_offset);
489 size = blksize(fs, filep->fi_inode, lbn);
490 filep->fi_count = size;
491 filep->fi_memp = filep->fi_buf;
499 filep->fi_memp = buf;
502 } else if (diskread(filep)) {
506 filep->fi_count = 0;
513 bzero(filep->fi_memp, size);
514 } else if (diskread(filep))
527 if (filep->fi_offset - off + size >= filep->fi_inode->i_size)
528 filep->fi_count = diff + off;
529 filep->fi_count -= off;
530 p = &filep->fi_memp[off];
532 filep->fi_memp = p;
552 fileid_t *filep;
554 if (!(filep = find_fp(fd))) {
558 if (filep->fi_offset + count > filep->fi_inode->i_size)
559 count = filep->fi_inode->i_size - filep->fi_offset;
568 if ((j = filep->fi_count) == 0) {
569 getblock(filep, buf, i, &rcount);
572 filep->fi_offset += rcount;
576 bcopy(filep->fi_memp, buf, (unsigned)j);
578 filep->fi_memp += j;
579 filep->fi_offset += j;
580 filep->fi_count -= j;
679 fileid_t *filep;
684 filep = (fileid_t *)bkmem_alloc(sizeof (fileid_t));
685 filep->fi_back = head->fi_back;
686 filep->fi_forw = head;
687 head->fi_back->fi_forw = filep;
688 head->fi_back = filep;
689 filep->fi_filedes = filedes++;
690 filep->fi_taken = 1;
691 filep->fi_path = (char *)bkmem_alloc(strlen(filename) + 1);
692 (void) strcpy(filep->fi_path, filename);
693 filep->fi_devp = ufs_devp; /* dev is already "mounted" */
694 filep->fi_inode = NULL;
695 bzero(filep->fi_buf, MAXBSIZE);
697 inode = find(filep, filename);
699 boot_ufs_close(filep->fi_filedes);
702 if (openi(filep, inode)) {
703 boot_ufs_close(filep->fi_filedes);
707 filep->fi_offset = filep->fi_count = 0;
709 return (filep->fi_filedes);
720 fileid_t *filep;
723 if (!(filep = find_fp(fd)))
728 filep->fi_offset += addr;
731 filep->fi_offset = addr;
739 filep->fi_blocknum = addr / DEV_BSIZE;
740 filep->fi_count = 0;
752 fileid_t *filep;
755 if (!(filep = find_fp(fd)))
758 ip = filep->fi_inode;
793 fileid_t *filep;
796 if (!(filep = find_fp(fd)))
799 if (filep->fi_taken && (filep != head)) {
801 bkmem_free(filep->fi_path, strlen(filep->fi_path)+1);
802 filep->fi_blocknum = filep->fi_count = filep->fi_offset = 0;
803 filep->fi_memp = (caddr_t)0;
804 filep->fi_devp = 0;
805 filep->fi_taken = 0;
808 filep->fi_forw->fi_back = filep->fi_back;
809 filep->fi_back->fi_forw = filep->fi_forw;
810 bkmem_free((char *)filep, sizeof (fileid_t));
825 fileid_t *filep = head;
833 while ((filep = filep->fi_forw) != head)
834 if (filep->fi_taken)
835 if (boot_ufs_close(filep->fi_filedes))