Lines Matching refs:filep
94 fileid_t *filep; member
147 fileid_t *filep = head; in find_fp() local
150 while ((filep = filep->fi_forw) != head) in find_fp()
151 if (fd == filep->fi_filedes) in find_fp()
152 return (filep->fi_taken ? filep : 0); in find_fp()
159 opendir(ino_t inode, fileid_t *filep) in opendir() argument
165 filep->fi_offset = 0; in opendir()
166 filep->fi_blocknum = hdbtodb(inode); in opendir()
167 filep->fi_count = ISO_SECTOR_SIZE; in opendir()
168 filep->fi_memp = 0; in opendir()
170 if (diskread(filep)) in opendir()
173 filep->fi_offset = 0; in opendir()
174 filep->fi_blocknum = hdbtodb(inode); in opendir()
179 if (parse_dir(filep, 0, &hsdep) > 0) { in opendir()
182 ip = filep->fi_inode; in opendir()
184 ip = filep->fi_inode = bkmem_alloc(sizeof (*ip)); in opendir()
195 find(char *path, fileid_t *filep) in find() argument
205 if (opendir(root_ino, filep)) in find()
216 n = dlook(path, filep); in find()
223 if (opendir(n, filep)) in find()
234 dlook(char *s, fileid_t *filep) in dlook() argument
243 ip = filep->fi_inode; in dlook()
254 dirp.filep = filep; in dlook()
267 struct inode *ip = filep->fi_inode; in dlook()
269 filep->fi_offset = 0; in dlook()
270 filep->fi_blocknum = hdbtodb(udp->d_ino); in dlook()
272 bzero(filep->fi_inode, sizeof (struct inode)); in dlook()
291 fileid_t *filep; in readdir() local
296 filep = dirp->filep; in readdir()
297 ip = filep->fi_inode; in readdir()
305 filep->fi_blocknum = lbn + hdbtodb(ip->i_number); in readdir()
306 filep->fi_count = ISO_SECTOR_SIZE; in readdir()
307 filep->fi_memp = 0; in readdir()
308 if (diskread(filep)) { in readdir()
313 dirp->loc += parse_dir(filep, off, &hsdep); in readdir()
323 getblock(fileid_t *filep) in getblock() argument
325 struct inode *ip = filep->fi_inode; in getblock()
330 diff = ip->i_size - filep->fi_offset; in getblock()
335 lbn = hdbtodb(filep->fi_offset >> ISO_SECTOR_SHIFT); in getblock()
336 filep->fi_blocknum = lbn + hdbtodb(ip->i_number); in getblock()
338 off = filep->fi_offset & ((1 << ISO_SECTOR_SHIFT) - 1); in getblock()
339 size = filep->fi_count = ISO_SECTOR_SIZE; in getblock()
340 filep->fi_memp = 0; in getblock()
341 if (diskread(filep)) /* Trap errors */ in getblock()
344 if (filep->fi_offset - off + size >= ip->i_size) in getblock()
345 filep->fi_count = diff + off; in getblock()
346 filep->fi_count -= off; in getblock()
347 filep->fi_memp += off; in getblock()
356 fileid_t *filep; in bhsfs_read() local
362 filep = find_fp(fd); in bhsfs_read()
363 if (filep == NULL) in bhsfs_read()
366 ip = filep->fi_inode; in bhsfs_read()
368 if ((filep->fi_flags & FI_COMPRESSED) == 0 && in bhsfs_read()
369 filep->fi_offset + count > ip->i_size) in bhsfs_read()
370 count = ip->i_size - filep->fi_offset; in bhsfs_read()
376 if (filep->fi_flags & FI_COMPRESSED) { in bhsfs_read()
377 if ((j = cf_read(filep, buf, count)) < 0) in bhsfs_read()
382 if (filep->fi_count == 0) { in bhsfs_read()
383 if (getblock(filep) == -1) in bhsfs_read()
386 j = MIN(i, filep->fi_count); in bhsfs_read()
387 bcopy(filep->fi_memp, buf, (uint_t)j); in bhsfs_read()
389 filep->fi_memp += j; in bhsfs_read()
390 filep->fi_offset += j; in bhsfs_read()
391 filep->fi_count -= j; in bhsfs_read()
478 fileid_t *filep; in bhsfs_open() local
482 filep = (fileid_t *)bkmem_alloc(sizeof (fileid_t)); in bhsfs_open()
483 filep->fi_back = head->fi_back; in bhsfs_open()
484 filep->fi_forw = head; in bhsfs_open()
485 head->fi_back->fi_forw = filep; in bhsfs_open()
486 head->fi_back = filep; in bhsfs_open()
487 filep->fi_filedes = filedes++; in bhsfs_open()
488 filep->fi_taken = 1; in bhsfs_open()
489 filep->fi_path = (char *)bkmem_alloc(strlen(str) + 1); in bhsfs_open()
490 (void) strcpy(filep->fi_path, str); in bhsfs_open()
491 filep->fi_inode = NULL; in bhsfs_open()
492 bzero(filep->fi_buf, MAXBSIZE); in bhsfs_open()
493 filep->fi_getblock = getblock; in bhsfs_open()
494 filep->fi_flags = 0; in bhsfs_open()
496 ino = find(str, filep); in bhsfs_open()
498 (void) bhsfs_close(filep->fi_filedes); in bhsfs_open()
502 filep->fi_blocknum = hdbtodb(ino); in bhsfs_open()
503 filep->fi_offset = 0; in bhsfs_open()
504 filep->fi_count = 0; in bhsfs_open()
505 filep->fi_memp = 0; in bhsfs_open()
507 if (cf_check_compressed(filep) != 0) in bhsfs_open()
510 return (filep->fi_filedes); in bhsfs_open()
516 fileid_t *filep; in bhsfs_close() local
519 if (!(filep = find_fp(fd))) in bhsfs_close()
522 if (filep->fi_taken == 0 || filep == head) { in bhsfs_close()
527 cf_close(filep); in bhsfs_close()
529 filep->fi_forw->fi_back = filep->fi_back; in bhsfs_close()
530 filep->fi_back->fi_forw = filep->fi_forw; in bhsfs_close()
531 if (filep->fi_inode) in bhsfs_close()
532 bkmem_free(filep->fi_inode, sizeof (struct inode)); in bhsfs_close()
533 bkmem_free(filep->fi_path, strlen(filep->fi_path) + 1); in bhsfs_close()
534 bkmem_free((char *)filep, sizeof (fileid_t)); in bhsfs_close()
542 fileid_t *filep; in bhsfs_closeall() local
544 while ((filep = head->fi_forw) != head) in bhsfs_closeall()
545 if (filep->fi_taken && bhsfs_close(filep->fi_filedes)) in bhsfs_closeall()
560 fileid_t *filep; in bhsfs_lseek() local
564 if (!(filep = find_fp(fd))) in bhsfs_lseek()
567 if (filep->fi_flags & FI_COMPRESSED) { in bhsfs_lseek()
568 cf_seek(filep, addr, whence); in bhsfs_lseek()
572 filep->fi_offset += addr; in bhsfs_lseek()
575 filep->fi_offset = addr; in bhsfs_lseek()
582 filep->fi_blocknum = addr / DEV_BSIZE; in bhsfs_lseek()
585 filep->fi_count = 0; in bhsfs_lseek()
592 fileid_t *filep; in bhsfs_fstat() local
595 if (!(filep = find_fp(fd))) in bhsfs_fstat()
598 ip = filep->fi_inode; in bhsfs_fstat()
641 parse_dir(fileid_t *filep, int offset, struct hs_direct *hsdep) in parse_dir() argument
643 char *bufp = (char *)(filep->fi_memp + offset); in parse_dir()
730 daddr_t save_bn = filep->fi_blocknum; in parse_dir()
731 daddr_t save_offset = filep->fi_offset; in parse_dir()
732 caddr_t save_ma = filep->fi_memp; in parse_dir()
733 int save_cc = filep->fi_count; in parse_dir()
735 filep->fi_count = ISO_SECTOR_SIZE; in parse_dir()
736 filep->fi_offset = 0; in parse_dir()
737 filep->fi_blocknum = hdbtodb(ce_lbn); in parse_dir()
738 filep->fi_memp = 0; in parse_dir()
739 if (diskread(filep)) { in parse_dir()
745 ce_lbn = parse_susp(filep->fi_memp, &ce_len, in parse_dir()
748 filep->fi_count = save_cc; in parse_dir()
749 filep->fi_offset = save_offset; in parse_dir()
750 filep->fi_blocknum = save_bn; in parse_dir()
751 filep->fi_memp = save_ma; in parse_dir()