Lines Matching refs:filep

90 static 	ino_t	find(fileid_t *filep, char *path);
91 static ino_t dlook(fileid_t *filep, char *path);
92 static daddr32_t sbmap(fileid_t *filep, daddr32_t bn);
115 openi(fileid_t *filep, ino_t inode) in openi() argument
119 devid_t *devp = filep->fi_devp; in openi()
122 if ((filep->fi_inode = get_icache(devp->di_dcookie, inode)) != NULL) in openi()
125 filep->fi_offset = 0; in openi()
126 filep->fi_blocknum = fsbtodb(&devp->un_fs.di_fs, in openi()
130 filep->fi_count = devp->un_fs.di_fs.fs_bsize; in openi()
131 filep->fi_memp = filep->fi_buf; in openi()
134 if ((filep->fi_memp = get_bcache(filep)) == NULL) { in openi()
136 if (retval = set_bcache(filep)) in openi()
138 lufs_merge_deltas(filep); in openi()
141 dp = (struct dinode *)filep->fi_memp; in openi()
142 filep->fi_inode = (struct inode *) in openi()
144 bzero((char *)filep->fi_inode, sizeof (struct inode)); in openi()
145 filep->fi_inode->i_ic = in openi()
147 filep->fi_inode->i_number = inode; in openi()
148 if (set_ricache(devp->di_dcookie, inode, (void *)filep->fi_inode, in openi()
150 filep->fi_inode->i_flag = FI_NOCACHE; in openi()
157 fileid_t *filep = head; in find_fp() local
160 while ((filep = filep->fi_forw) != head) in find_fp()
161 if (fd == filep->fi_filedes) in find_fp()
162 return (filep->fi_taken ? filep : 0); in find_fp()
169 find(fileid_t *filep, char *path) in find() argument
186 devp = filep->fi_devp; in find()
190 if (r && openi(filep, (ino_t)UFSROOTINO)) in find()
203 if ((inode = dlook(filep, lpathp)) != 0) { in find()
204 if (openi(filep, inode)) in find()
206 if ((filep->fi_inode->i_smode & IFMT) == IFLNK) { in find()
207 filep->fi_blocknum = in find()
209 filep->fi_inode->i_db[0]); in find()
210 filep->fi_count = DEV_BSIZE; in find()
212 if ((filep->fi_memp = in find()
213 get_bcache(filep)) == NULL) { in find()
214 if (set_bcache(filep)) in find()
216 lufs_merge_deltas(filep); in find()
218 len = strlen(filep->fi_memp); in find()
219 if (filep->fi_memp[0] == '/') in find()
227 bcopy(filep->fi_memp, lpathp, len); in find()
249 sbmap(fileid_t *filep, daddr32_t bn) in sbmap() argument
257 devp = filep->fi_devp; in sbmap()
258 inodep = filep->fi_inode; in sbmap()
298 filep->fi_blocknum = fsbtodb(&devp->un_fs.di_fs, nb); in sbmap()
299 filep->fi_count = devp->un_fs.di_fs.fs_bsize; in sbmap()
301 if ((filep->fi_memp = get_bcache(filep)) == NULL) { in sbmap()
302 if (set_bcache(filep)) /* Gotta do I/O */ in sbmap()
304 lufs_merge_deltas(filep); in sbmap()
306 b.blk[j] = filep->fi_memp; in sbmap()
321 dlook(fileid_t *filep, char *path) in dlook() argument
323 devid_t *devp = filep->fi_devp; in dlook()
333 ip = filep->fi_inode; in dlook()
359 dirp.fi = filep; in dlook()
408 fileid_t *filep; in readdir() local
413 filep = dstuff->fi; in readdir()
414 devp = filep->fi_devp; in readdir()
416 if (dstuff->loc >= filep->fi_inode->i_size) { in readdir()
422 d = sbmap(filep, lbn); in readdir()
427 filep->fi_blocknum = fsbtodb(&devp->un_fs.di_fs, d); in readdir()
428 filep->fi_count = in readdir()
429 blksize(&devp->un_fs.di_fs, filep->fi_inode, lbn); in readdir()
431 if ((filep->fi_memp = get_bcache(filep)) == NULL) { in readdir()
432 if (set_bcache(filep)) in readdir()
434 lufs_merge_deltas(filep); in readdir()
437 dp = (struct direct *)(filep->fi_memp + off); in readdir()
450 getblock(fileid_t *filep, caddr_t buf, int count, int *rcount) in getblock() argument
460 devp = filep->fi_devp; in getblock()
461 p = filep->fi_memp; in getblock()
462 if ((signed)filep->fi_count <= 0) { in getblock()
465 diff = filep->fi_inode->i_size - filep->fi_offset; in getblock()
473 lbn = lblkno(fs, filep->fi_offset); in getblock()
476 fsbn = sbmap(filep, lbn); in getblock()
485 filep->fi_blocknum = fsbtodb(fs, fsbn); in getblock()
487 off = blkoff(fs, filep->fi_offset); in getblock()
490 size = blksize(fs, filep->fi_inode, lbn); in getblock()
491 filep->fi_count = size; in getblock()
492 filep->fi_memp = filep->fi_buf; in getblock()
500 filep->fi_memp = buf; in getblock()
503 } else if (diskread(filep)) { in getblock()
507 filep->fi_count = 0; in getblock()
514 bzero(filep->fi_memp, size); in getblock()
515 } else if (diskread(filep)) in getblock()
528 if (filep->fi_offset - off + size >= filep->fi_inode->i_size) in getblock()
529 filep->fi_count = diff + off; in getblock()
530 filep->fi_count -= off; in getblock()
531 p = &filep->fi_memp[off]; in getblock()
533 filep->fi_memp = p; in getblock()
553 fileid_t *filep; in boot_ufs_read() local
555 if (!(filep = find_fp(fd))) { in boot_ufs_read()
559 if (filep->fi_offset + count > filep->fi_inode->i_size) in boot_ufs_read()
560 count = filep->fi_inode->i_size - filep->fi_offset; in boot_ufs_read()
569 if ((j = filep->fi_count) == 0) { in boot_ufs_read()
570 (void) getblock(filep, buf, i, &rcount); in boot_ufs_read()
573 filep->fi_offset += rcount; in boot_ufs_read()
577 bcopy(filep->fi_memp, buf, (unsigned)j); in boot_ufs_read()
579 filep->fi_memp += j; in boot_ufs_read()
580 filep->fi_offset += j; in boot_ufs_read()
581 filep->fi_count -= j; in boot_ufs_read()
680 fileid_t *filep; in boot_ufs_open() local
685 filep = (fileid_t *)bkmem_alloc(sizeof (fileid_t)); in boot_ufs_open()
686 filep->fi_back = head->fi_back; in boot_ufs_open()
687 filep->fi_forw = head; in boot_ufs_open()
688 head->fi_back->fi_forw = filep; in boot_ufs_open()
689 head->fi_back = filep; in boot_ufs_open()
690 filep->fi_filedes = filedes++; in boot_ufs_open()
691 filep->fi_taken = 1; in boot_ufs_open()
692 filep->fi_path = (char *)bkmem_alloc(strlen(filename) + 1); in boot_ufs_open()
693 (void) strcpy(filep->fi_path, filename); in boot_ufs_open()
694 filep->fi_devp = ufs_devp; /* dev is already "mounted" */ in boot_ufs_open()
695 filep->fi_inode = NULL; in boot_ufs_open()
696 bzero(filep->fi_buf, MAXBSIZE); in boot_ufs_open()
698 inode = find(filep, filename); in boot_ufs_open()
700 (void) boot_ufs_close(filep->fi_filedes); in boot_ufs_open()
703 if (openi(filep, inode)) { in boot_ufs_open()
704 (void) boot_ufs_close(filep->fi_filedes); in boot_ufs_open()
708 filep->fi_offset = filep->fi_count = 0; in boot_ufs_open()
710 return (filep->fi_filedes); in boot_ufs_open()
721 fileid_t *filep; in boot_ufs_lseek() local
724 if (!(filep = find_fp(fd))) in boot_ufs_lseek()
729 filep->fi_offset += addr; in boot_ufs_lseek()
732 filep->fi_offset = addr; in boot_ufs_lseek()
740 filep->fi_blocknum = addr / DEV_BSIZE; in boot_ufs_lseek()
741 filep->fi_count = 0; in boot_ufs_lseek()
753 fileid_t *filep; in boot_ufs_fstat() local
756 if (!(filep = find_fp(fd))) in boot_ufs_fstat()
759 ip = filep->fi_inode; in boot_ufs_fstat()
794 fileid_t *filep; in boot_ufs_close() local
797 if (!(filep = find_fp(fd))) in boot_ufs_close()
800 if (filep->fi_taken && (filep != head)) { in boot_ufs_close()
802 bkmem_free(filep->fi_path, strlen(filep->fi_path)+1); in boot_ufs_close()
803 filep->fi_blocknum = filep->fi_count = filep->fi_offset = 0; in boot_ufs_close()
804 filep->fi_memp = (caddr_t)0; in boot_ufs_close()
805 filep->fi_devp = 0; in boot_ufs_close()
806 filep->fi_taken = 0; in boot_ufs_close()
809 filep->fi_forw->fi_back = filep->fi_back; in boot_ufs_close()
810 filep->fi_back->fi_forw = filep->fi_forw; in boot_ufs_close()
811 bkmem_free((char *)filep, sizeof (fileid_t)); in boot_ufs_close()
826 fileid_t *filep = head; in boot_ufs_closeall() local
834 while ((filep = filep->fi_forw) != head) in boot_ufs_closeall()
835 if (filep->fi_taken) in boot_ufs_closeall()
836 if (boot_ufs_close(filep->fi_filedes)) in boot_ufs_closeall()