Lines Matching refs:filep

80 static	ino_t	find(fileid_t *filep, char *path);
81 static ino_t dlook(fileid_t *filep, char *path);
82 static daddr32_t sbmap(fileid_t *filep, daddr32_t bn);
100 openi(fileid_t *filep, ino_t inode) in openi() argument
103 devid_t *devp = filep->fi_devp; in openi()
105 filep->fi_inode = get_cache((int)inode); in openi()
106 if (filep->fi_inode != 0) in openi()
109 filep->fi_offset = 0; in openi()
110 filep->fi_blocknum = fsbtodb(&devp->un_fs.di_fs, in openi()
114 filep->fi_count = devp->un_fs.di_fs.fs_bsize; in openi()
115 filep->fi_memp = 0; /* cached read */ in openi()
116 if (diskread(filep) != 0) { in openi()
120 dp = (struct dinode *)filep->fi_memp; in openi()
121 filep->fi_inode = (struct inode *) in openi()
123 bzero((char *)filep->fi_inode, sizeof (struct inode)); in openi()
124 filep->fi_inode->i_ic = in openi()
126 filep->fi_inode->i_number = inode; in openi()
127 set_cache((int)inode, (void *)filep->fi_inode, sizeof (struct inode)); in openi()
134 fileid_t *filep = head; in find_fp() local
137 while ((filep = filep->fi_forw) != head) in find_fp()
138 if (fd == filep->fi_filedes) in find_fp()
139 return (filep->fi_taken ? filep : 0); in find_fp()
146 find(fileid_t *filep, char *path) in find() argument
166 devp = filep->fi_devp; in find()
170 if (r && openi(filep, (ino_t)UFSROOTINO)) in find()
183 if ((inode = dlook(filep, lpathp)) != 0) { in find()
184 if (openi(filep, inode)) in find()
186 if ((filep->fi_inode->i_smode & IFMT) == IFLNK) { in find()
187 filep->fi_blocknum = in find()
189 filep->fi_inode->i_db[0]); in find()
190 filep->fi_count = DEV_BSIZE; in find()
191 filep->fi_memp = 0; in find()
192 if (diskread(filep) != 0) in find()
194 len = strlen(filep->fi_memp); in find()
195 if (filep->fi_memp[0] == '/') in find()
203 bcopy(filep->fi_memp, lpathp, len); in find()
220 sbmap(fileid_t *filep, daddr32_t bn) in sbmap() argument
228 devp = filep->fi_devp; in sbmap()
229 inodep = filep->fi_inode; in sbmap()
268 filep->fi_blocknum = fsbtodb(&devp->un_fs.di_fs, nb); in sbmap()
269 filep->fi_count = devp->un_fs.di_fs.fs_bsize; in sbmap()
270 filep->fi_memp = 0; in sbmap()
271 if (diskread(filep) != 0) in sbmap()
273 bap = (daddr32_t *)filep->fi_memp; in sbmap()
285 dlook(fileid_t *filep, char *path) in dlook() argument
292 ip = filep->fi_inode; in dlook()
306 dirp.fi = filep; in dlook()
327 fileid_t *filep; in readdir() local
332 filep = dstuff->fi; in readdir()
333 devp = filep->fi_devp; in readdir()
335 if (dstuff->loc >= filep->fi_inode->i_size) { in readdir()
342 d = sbmap(filep, lbn); in readdir()
347 filep->fi_blocknum = fsbtodb(&devp->un_fs.di_fs, d); in readdir()
348 filep->fi_count = in readdir()
349 blksize(&devp->un_fs.di_fs, filep->fi_inode, lbn); in readdir()
350 filep->fi_memp = 0; in readdir()
351 if (diskread(filep) != 0) { in readdir()
355 dp = (struct direct *)(filep->fi_memp + off); in readdir()
369 getblock(fileid_t *filep, caddr_t buf, int count, int *rcount) in getblock() argument
379 devp = filep->fi_devp; in getblock()
380 p = filep->fi_memp; in getblock()
381 if ((signed)filep->fi_count <= 0) { in getblock()
384 diff = filep->fi_inode->i_size - filep->fi_offset; in getblock()
392 lbn = lblkno(fs, filep->fi_offset); in getblock()
395 filep->fi_blocknum = fsbtodb(fs, sbmap(filep, lbn)); in getblock()
397 off = blkoff(fs, filep->fi_offset); in getblock()
400 size = blksize(fs, filep->fi_inode, lbn); in getblock()
401 filep->fi_count = size; in getblock()
402 filep->fi_memp = filep->fi_buf; in getblock()
410 filep->fi_memp = buf; in getblock()
411 if (diskread(filep)) { in getblock()
415 filep->fi_count = 0; in getblock()
417 } else if (diskread(filep)) in getblock()
420 if (filep->fi_offset - off + size >= filep->fi_inode->i_size) in getblock()
421 filep->fi_count = diff + off; in getblock()
422 filep->fi_count -= off; in getblock()
423 p = &filep->fi_memp[off]; in getblock()
425 filep->fi_memp = p; in getblock()
434 getblock_noopt(fileid_t *filep) in getblock_noopt() argument
444 devp = filep->fi_devp; in getblock_noopt()
445 p = filep->fi_memp; in getblock_noopt()
446 if ((signed)filep->fi_count <= 0) { in getblock_noopt()
449 diff = filep->fi_inode->i_size - filep->fi_offset; in getblock_noopt()
457 lbn = lblkno(fs, filep->fi_offset); in getblock_noopt()
460 filep->fi_blocknum = fsbtodb(fs, sbmap(filep, lbn)); in getblock_noopt()
462 off = blkoff(fs, filep->fi_offset); in getblock_noopt()
465 size = blksize(fs, filep->fi_inode, lbn); in getblock_noopt()
466 filep->fi_count = size; in getblock_noopt()
468 filep->fi_memp = NULL; in getblock_noopt()
470 if (diskread(filep)) in getblock_noopt()
473 if (filep->fi_offset - off + size >= filep->fi_inode->i_size) in getblock_noopt()
474 filep->fi_count = diff + off; in getblock_noopt()
475 filep->fi_count -= off; in getblock_noopt()
476 p = &filep->fi_memp[off]; in getblock_noopt()
478 filep->fi_memp = p; in getblock_noopt()
498 fileid_t *filep; in bufs_read() local
500 if (!(filep = find_fp(fd))) { in bufs_read()
504 if ((filep->fi_flags & FI_COMPRESSED) == 0 && in bufs_read()
505 filep->fi_offset + count > filep->fi_inode->i_size) in bufs_read()
506 count = filep->fi_inode->i_size - filep->fi_offset; in bufs_read()
514 if (filep->fi_flags & FI_COMPRESSED) { in bufs_read()
517 if ((rval = cf_read(filep, buf, count)) < 0) in bufs_read()
524 if ((j = filep->fi_count) == 0) { in bufs_read()
525 (void) getblock(filep, buf, i, &rcount); in bufs_read()
528 filep->fi_offset += rcount; in bufs_read()
533 bcopy(filep->fi_memp, buf, (unsigned)j); in bufs_read()
537 filep->fi_memp += j; in bufs_read()
538 filep->fi_offset += j; in bufs_read()
539 filep->fi_count -= j; in bufs_read()
620 fileid_t *filep; in bufs_open() local
627 filep = (fileid_t *)bkmem_alloc(sizeof (fileid_t)); in bufs_open()
628 filep->fi_back = head->fi_back; in bufs_open()
629 filep->fi_forw = head; in bufs_open()
630 head->fi_back->fi_forw = filep; in bufs_open()
631 head->fi_back = filep; in bufs_open()
632 filep->fi_filedes = filedes++; in bufs_open()
633 filep->fi_taken = 1; in bufs_open()
634 filep->fi_path = (char *)bkmem_alloc(strlen(filename) + 1); in bufs_open()
635 (void) strcpy(filep->fi_path, filename); in bufs_open()
636 filep->fi_devp = ufs_devp; /* dev is already "mounted" */ in bufs_open()
637 filep->fi_inode = NULL; in bufs_open()
638 bzero(filep->fi_buf, MAXBSIZE); in bufs_open()
639 filep->fi_getblock = getblock_noopt; in bufs_open()
640 filep->fi_flags = 0; in bufs_open()
642 inode = find(filep, (char *)filename); in bufs_open()
645 (void) bufs_close(filep->fi_filedes); in bufs_open()
648 if (openi(filep, inode)) { in bufs_open()
650 (void) bufs_close(filep->fi_filedes); in bufs_open()
654 filep->fi_offset = filep->fi_count = 0; in bufs_open()
656 if (cf_check_compressed(filep) != 0) in bufs_open()
658 return (filep->fi_filedes); in bufs_open()
669 fileid_t *filep; in bufs_lseek() local
672 if (!(filep = find_fp(fd))) in bufs_lseek()
675 if (filep->fi_flags & FI_COMPRESSED) { in bufs_lseek()
676 cf_seek(filep, addr, whence); in bufs_lseek()
680 filep->fi_offset += addr; in bufs_lseek()
683 filep->fi_offset = addr; in bufs_lseek()
690 filep->fi_blocknum = addr / DEV_BSIZE; in bufs_lseek()
693 filep->fi_count = 0; in bufs_lseek()
702 fileid_t *filep; in bufs_fstat() local
705 if (!(filep = find_fp(fd))) in bufs_fstat()
708 ip = filep->fi_inode; in bufs_fstat()
746 fileid_t *filep; in bufs_close() local
749 if (!(filep = find_fp(fd))) in bufs_close()
752 if (filep->fi_taken && (filep != head)) { in bufs_close()
754 bkmem_free(filep->fi_path, strlen(filep->fi_path)+1); in bufs_close()
755 filep->fi_blocknum = filep->fi_count = filep->fi_offset = 0; in bufs_close()
756 filep->fi_memp = (caddr_t)0; in bufs_close()
757 filep->fi_devp = 0; in bufs_close()
758 filep->fi_taken = 0; in bufs_close()
761 filep->fi_forw->fi_back = filep->fi_back; in bufs_close()
762 filep->fi_back->fi_forw = filep->fi_forw; in bufs_close()
763 cf_close(filep); in bufs_close()
764 bkmem_free((char *)filep, sizeof (fileid_t)); in bufs_close()
789 fileid_t *filep = head; in bufs_closeall() local
791 while ((filep = filep->fi_forw) != head) in bufs_closeall()
792 if (filep->fi_taken) in bufs_closeall()
793 if (bufs_close(filep->fi_filedes)) in bufs_closeall()