Lines Matching refs:ip

262 	struct ud_inode *ip = VTOI(vp);  in udf_close()  local
266 ITIMES(ip); in udf_close()
277 struct ud_inode *ip = VTOI(vp); in udf_close() local
278 if (ip->i_delaylen) { in udf_close()
279 (void) ud_putpages(vp, ip->i_delayoff, ip->i_delaylen, in udf_close()
281 ip->i_delaylen = 0; in udf_close()
297 struct ud_inode *ip = VTOI(vp); in udf_read() local
303 rw_enter(&ip->i_rwlock, RW_READER); in udf_read()
306 ASSERT(RW_READ_HELD(&ip->i_rwlock)); in udf_read()
308 if (MANDLOCK(vp, ip->i_char)) { in udf_read()
319 rw_enter(&ip->i_contents, RW_READER); in udf_read()
320 error = ud_rdip(ip, uiop, ioflag, cr); in udf_read()
321 rw_exit(&ip->i_contents); in udf_read()
325 rw_exit(&ip->i_rwlock); in udf_read()
346 struct ud_inode *ip = VTOI(vp); in udf_write() local
352 rw_enter(&ip->i_rwlock, RW_WRITER); in udf_write()
355 ASSERT(RW_WRITE_HELD(&ip->i_rwlock)); in udf_write()
357 if (MANDLOCK(vp, ip->i_char)) { in udf_write()
370 mutex_enter(&ip->i_tlock); in udf_write()
371 if (ud_WRITES && (ip->i_writes > ud_HW)) { in udf_write()
372 while (ip->i_writes > ud_HW) { in udf_write()
374 cv_wait(&ip->i_wrcv, &ip->i_tlock); in udf_write()
377 mutex_exit(&ip->i_tlock); in udf_write()
382 rw_enter(&ip->i_contents, RW_WRITER); in udf_write()
383 if ((ioflag & FAPPEND) != 0 && (ip->i_type == VREG)) { in udf_write()
387 uiop->uio_loffset = ip->i_size; in udf_write()
389 error = ud_wrip(ip, uiop, ioflag, cr); in udf_write()
390 rw_exit(&ip->i_contents); in udf_write()
394 rw_exit(&ip->i_rwlock); in udf_write()
423 struct ud_inode *ip = VTOI(vp); in udf_getattr() local
432 vap->va_size = ip->i_size; in udf_getattr()
436 rw_enter(&ip->i_contents, RW_READER); in udf_getattr()
439 vap->va_mode = UD2VA_PERM(ip->i_perm) | ip->i_char; in udf_getattr()
441 vap->va_uid = ip->i_uid; in udf_getattr()
442 vap->va_gid = ip->i_gid; in udf_getattr()
443 vap->va_fsid = ip->i_dev; in udf_getattr()
444 vap->va_nodeid = ip->i_icb_lbano; in udf_getattr()
445 vap->va_nlink = ip->i_nlink; in udf_getattr()
446 vap->va_size = ip->i_size; in udf_getattr()
447 vap->va_seq = ip->i_seq; in udf_getattr()
449 vap->va_rdev = ip->i_rdev; in udf_getattr()
454 mutex_enter(&ip->i_tlock); in udf_getattr()
455 ITIMES_NOLOCK(ip); /* mark correct time in inode */ in udf_getattr()
456 vap->va_atime.tv_sec = (time_t)ip->i_atime.tv_sec; in udf_getattr()
457 vap->va_atime.tv_nsec = ip->i_atime.tv_nsec; in udf_getattr()
458 vap->va_mtime.tv_sec = (time_t)ip->i_mtime.tv_sec; in udf_getattr()
459 vap->va_mtime.tv_nsec = ip->i_mtime.tv_nsec; in udf_getattr()
460 vap->va_ctime.tv_sec = (time_t)ip->i_ctime.tv_sec; in udf_getattr()
461 vap->va_ctime.tv_nsec = ip->i_ctime.tv_nsec; in udf_getattr()
462 mutex_exit(&ip->i_tlock); in udf_getattr()
464 switch (ip->i_type) { in udf_getattr()
472 vap->va_blksize = ip->i_udf->udf_lbsize; in udf_getattr()
475 vap->va_nblocks = ip->i_lbr << ip->i_udf->udf_l2d_shift; in udf_getattr()
477 rw_exit(&ip->i_contents); in udf_getattr()
483 ud_iaccess_vmode(void *ip, int mode, struct cred *cr) in ud_iaccess_vmode() argument
485 return (ud_iaccess(ip, UD_UPERM2DPERM(mode), cr, 0)); in ud_iaccess_vmode()
499 struct ud_inode *ip; in udf_setattr() local
505 ip = VTOI(vp); in udf_setattr()
510 if (ip->i_astrat == STRAT_TYPE4096) { in udf_setattr()
521 rw_enter(&ip->i_rwlock, RW_WRITER); in udf_setattr()
522 rw_enter(&ip->i_contents, RW_WRITER); in udf_setattr()
524 ovap.va_uid = ip->i_uid; in udf_setattr()
525 ovap.va_mode = UD2VA_PERM(ip->i_perm) | ip->i_char; in udf_setattr()
527 ud_iaccess_vmode, ip); in udf_setattr()
536 ip->i_perm = VA2UD_PERM(vap->va_mode); in udf_setattr()
537 ip->i_char = vap->va_mode & (VSUID | VSGID | VSVTX); in udf_setattr()
538 mutex_enter(&ip->i_tlock); in udf_setattr()
539 ip->i_flag |= ICHG; in udf_setattr()
540 mutex_exit(&ip->i_tlock); in udf_setattr()
544 ip->i_uid = vap->va_uid; in udf_setattr()
547 ip->i_gid = vap->va_gid; in udf_setattr()
549 mutex_enter(&ip->i_tlock); in udf_setattr()
550 ip->i_flag |= ICHG; in udf_setattr()
551 mutex_exit(&ip->i_tlock); in udf_setattr()
561 if (error = ud_iaccess(ip, IWRITE, cr, 0)) { in udf_setattr()
568 if (error = ud_itrunc(ip, vap->va_size, 0, cr)) { in udf_setattr()
579 mutex_enter(&ip->i_tlock); in udf_setattr()
581 ip->i_atime.tv_sec = vap->va_atime.tv_sec; in udf_setattr()
582 ip->i_atime.tv_nsec = vap->va_atime.tv_nsec; in udf_setattr()
583 ip->i_flag &= ~IACC; in udf_setattr()
586 ip->i_mtime.tv_sec = vap->va_mtime.tv_sec; in udf_setattr()
587 ip->i_mtime.tv_nsec = vap->va_mtime.tv_nsec; in udf_setattr()
589 ip->i_ctime.tv_sec = now.tv_sec; in udf_setattr()
590 ip->i_ctime.tv_nsec = now.tv_nsec; in udf_setattr()
591 ip->i_flag &= ~(IUPD|ICHG); in udf_setattr()
592 ip->i_flag |= IMODTIME; in udf_setattr()
594 ip->i_flag |= IMOD; in udf_setattr()
595 mutex_exit(&ip->i_tlock); in udf_setattr()
600 ud_iupdat(ip, 1); in udf_setattr()
602 ITIMES_NOLOCK(ip); in udf_setattr()
604 rw_exit(&ip->i_contents); in udf_setattr()
605 rw_exit(&ip->i_rwlock); in udf_setattr()
619 struct ud_inode *ip = VTOI(vp); in udf_access() local
623 if (ip->i_udf == NULL) { in udf_access()
627 return (ud_iaccess(ip, UD_UPERM2DPERM(mode), cr, 1)); in udf_access()
648 struct ud_inode *ip, *xip; in udf_lookup() local
664 ip = VTOI(dvp); in udf_lookup()
669 if ((error = ud_iaccess(ip, IEXEC, cr, 1)) != 0) { in udf_lookup()
674 error = ud_dirlook(ip, nm, &xip, cr, 1); in udf_lookup()
675 ITIMES(ip); in udf_lookup()
679 ip = xip; in udf_lookup()
680 *vpp = ITOV(ip); in udf_lookup()
681 if ((ip->i_type != VDIR) && in udf_lookup()
682 (ip->i_char & ISVTX) && in udf_lookup()
683 ((ip->i_perm & IEXEC) == 0) && in udf_lookup()
689 ITIMES(ip); in udf_lookup()
724 struct ud_inode *ip = VTOI(dvp), *xip; in udf_create() local
736 ITIMES(ip); in udf_create()
740 rw_enter(&ip->i_rwlock, RW_WRITER); in udf_create()
741 error = ud_direnter(ip, name, DE_CREATE, in udf_create()
744 rw_exit(&ip->i_rwlock); in udf_create()
745 ITIMES(ip); in udf_create()
746 ip = xip; in udf_create()
749 rw_enter(&ip->i_contents, RW_WRITER); in udf_create()
751 if (ip != NULL) { in udf_create()
752 rw_enter(&ip->i_contents, RW_WRITER); in udf_create()
764 if ((ip->i_type == VDIR) && (mode & VWRITE)) { in udf_create()
767 error = ud_iaccess(ip, in udf_create()
774 rw_exit(&ip->i_contents); in udf_create()
775 VN_RELE(ITOV(ip)); in udf_create()
777 } else if ((ip->i_type == VREG) && in udf_create()
786 if (ip->i_size == 0) { in udf_create()
787 ip->i_flag |= ICHG | IUPD; in udf_create()
789 rw_exit(&ip->i_contents); in udf_create()
790 rw_enter(&ip->i_rwlock, RW_WRITER); in udf_create()
791 rw_enter(&ip->i_contents, RW_WRITER); in udf_create()
792 (void) ud_itrunc(ip, 0, 0, cr); in udf_create()
793 rw_exit(&ip->i_rwlock); in udf_create()
795 vnevent_create(ITOV(ip), ct); in udf_create()
800 *vpp = ITOV(ip); in udf_create()
801 ITIMES(ip); in udf_create()
804 rw_exit(&ip->i_contents); in udf_create()
806 if (ip != NULL) { in udf_create()
807 rw_exit(&ip->i_contents); in udf_create()
842 struct ud_inode *ip = VTOI(vp); in udf_remove() local
846 rw_enter(&ip->i_rwlock, RW_WRITER); in udf_remove()
847 error = ud_dirremove(ip, nm, in udf_remove()
849 rw_exit(&ip->i_rwlock); in udf_remove()
850 ITIMES(ip); in udf_remove()
1056 struct ud_inode *ip; in udf_mkdir() local
1063 ip = VTOI(dvp); in udf_mkdir()
1064 rw_enter(&ip->i_rwlock, RW_WRITER); in udf_mkdir()
1065 error = ud_direnter(ip, dirname, DE_MKDIR, in udf_mkdir()
1067 rw_exit(&ip->i_rwlock); in udf_mkdir()
1068 ITIMES(ip); in udf_mkdir()
1070 ip = xip; in udf_mkdir()
1071 *vpp = ITOV(ip); in udf_mkdir()
1072 ITIMES(ip); in udf_mkdir()
1092 struct ud_inode *ip = VTOI(vp); in udf_rmdir() local
1096 rw_enter(&ip->i_rwlock, RW_WRITER); in udf_rmdir()
1097 error = ud_dirremove(ip, nm, (struct ud_inode *)0, cdir, DR_RMDIR, in udf_rmdir()
1099 rw_exit(&ip->i_rwlock); in udf_rmdir()
1100 ITIMES(ip); in udf_rmdir()
1115 struct ud_inode *ip; in udf_readdir() local
1137 ip = VTOI(vp); in udf_readdir()
1138 udf_vfsp = ip->i_udf; in udf_readdir()
1140 dirsiz = ip->i_size; in udf_readdir()
1142 (ip->i_nlink <= 0)) { in udf_readdir()
1166 nd->d_ino = ip->i_icb_lbano; in udf_readdir()
1178 error = ud_get_next_fid(ip, &fbp, in udf_readdir()
1193 nd->d_ino = ip->i_icb_lbano; in udf_readdir()
1272 struct ud_inode *ip, *dip = VTOI(dvp); in udf_symlink() local
1279 ip = (struct ud_inode *)0; in udf_symlink()
1285 (struct ud_inode *)0, (struct ud_inode *)0, vap, &ip, cr, ct); in udf_symlink()
1355 rw_enter(&ip->i_contents, RW_WRITER); in udf_symlink()
1361 error = ud_rdwri(UIO_WRITE, ioflag, ip, in udf_symlink()
1366 ud_idrop(ip); in udf_symlink()
1367 rw_exit(&ip->i_contents); in udf_symlink()
1374 rw_exit(&ip->i_contents); in udf_symlink()
1378 VN_RELE(ITOV(ip)); in udf_symlink()
1403 struct ud_inode *ip; in udf_readlink() local
1413 ip = VTOI(vp); in udf_readlink()
1414 size = ip->i_size; in udf_readlink()
1426 rw_enter(&ip->i_contents, RW_READER); in udf_readlink()
1438 (void) strcpy(uname, ip->i_udf->udf_fsmnt); in udf_readlink()
1483 ITIMES(ip); in udf_readlink()
1489 rw_exit(&ip->i_contents); in udf_readlink()
1508 struct ud_inode *ip = VTOI(vp); in udf_fsync() local
1512 rw_enter(&ip->i_contents, RW_WRITER); in udf_fsync()
1514 error = ud_syncip(ip, 0, I_SYNC); /* Do synchronous writes */ in udf_fsync()
1517 error = ud_sync_indir(ip); in udf_fsync()
1519 ITIMES(ip); /* XXX: is this necessary ??? */ in udf_fsync()
1520 rw_exit(&ip->i_contents); in udf_fsync()
1539 struct ud_inode *ip = VTOI(vp); in udf_fid() local
1550 rw_enter(&ip->i_contents, RW_READER); in udf_fid()
1552 udfidp->udfid_uinq_lo = ip->i_uniqid & 0xffffffff; in udf_fid()
1553 udfidp->udfid_prn = ip->i_icb_prn; in udf_fid()
1554 udfidp->udfid_icb_lbn = ip->i_icb_block; in udf_fid()
1555 rw_exit(&ip->i_contents); in udf_fid()
1564 struct ud_inode *ip = VTOI(vp); in udf_rwlock() local
1569 rw_enter(&ip->i_rwlock, RW_WRITER); in udf_rwlock()
1571 rw_enter(&ip->i_rwlock, RW_READER); in udf_rwlock()
1574 rw_exit(&ip->i_rwlock); in udf_rwlock()
1583 struct ud_inode *ip = VTOI(vp); in udf_rwunlock() local
1588 rw_enter(&ip->i_rwlock, RW_WRITER); in udf_rwunlock()
1591 rw_exit(&ip->i_rwlock); in udf_rwunlock()
1613 struct ud_inode *ip = VTOI(vp); in udf_frlock() local
1624 if ((ip->i_mapcnt > 0) && in udf_frlock()
1625 (MANDLOCK(vp, ip->i_char))) { in udf_frlock()
1674 struct ud_inode *ip = VTOI(vp); in udf_getpage() local
1677 struct udf_vfs *udf_vfsp = ip->i_udf; in udf_getpage()
1692 seqmode = ip->i_nextr == uoff && rw != S_CREATE; in udf_getpage()
1695 dolock = (rw_owner(&ip->i_contents) != curthread); in udf_getpage()
1698 rw_enter(&ip->i_contents, rwtype); in udf_getpage()
1701 rw_enter(&ip->i_contents, rwtype); in udf_getpage()
1714 beyond_eof = uoff + len > ip->i_size + PAGEOFFSET; in udf_getpage()
1717 rw_exit(&ip->i_contents); in udf_getpage()
1720 rw_exit(&ip->i_contents); in udf_getpage()
1733 has_holes = ud_bmap_has_holes(ip); in udf_getpage()
1746 if (!rw_tryupgrade(&ip->i_contents)) { in udf_getpage()
1748 rw_exit(&ip->i_contents); in udf_getpage()
1762 (offset < ip->i_size)) { in udf_getpage()
1770 if ((offset + blk_size) > ip->i_size) { in udf_getpage()
1771 count = ip->i_size - offset; in udf_getpage()
1775 error = ud_bmap_write(ip, offset, count, 0, cr); in udf_getpage()
1788 rw_downgrade(&ip->i_contents); in udf_getpage()
1792 rw_downgrade(&ip->i_contents); in udf_getpage()
1826 ip->i_nextrio = pgoff; in udf_getpage()
1838 nextrio = ip->i_nextrio; in udf_getpage()
1840 pgoff + RD_CLUSTSZ(ip) >= nextrio && pgoff <= nextrio && in udf_getpage()
1841 nextrio < ip->i_size && page_exists(vp, pgoff)) in udf_getpage()
1900 ip->i_nextr = pgoff; in udf_getpage()
1915 rw_exit(&ip->i_contents); in udf_getpage()
1918 rw_exit(&ip->i_contents); in udf_getpage()
1927 mutex_enter(&ip->i_tlock); in udf_getpage()
1928 if ((ip->i_flag & (IACC | INOACC)) == 0) { in udf_getpage()
1929 if ((rw != S_OTHER) && (ip->i_type != VDIR)) { in udf_getpage()
1930 ip->i_flag |= IACC; in udf_getpage()
1933 ip->i_flag |= IUPD; in udf_getpage()
1935 ITIMES_NOLOCK(ip); in udf_getpage()
1937 mutex_exit(&ip->i_tlock); in udf_getpage()
1954 struct ud_inode *ip; in udf_putpage() local
1959 ip = VTOI(vp); in udf_putpage()
1961 rw_enter(&ip->i_contents, RW_WRITER); in udf_putpage()
1978 mutex_enter(&ip->i_tlock); in udf_putpage()
1983 if (ip->i_delaylen == 0) { in udf_putpage()
1984 ip->i_delayoff = off; in udf_putpage()
1985 ip->i_delaylen = len; in udf_putpage()
1986 mutex_exit(&ip->i_tlock); in udf_putpage()
1994 if (ip->i_delaylen >= WR_CLUSTSZ(ip) || in udf_putpage()
1995 ip->i_delayoff + ip->i_delaylen != off) { in udf_putpage()
1999 doff = ip->i_delayoff; in udf_putpage()
2000 dlen = ip->i_delaylen; in udf_putpage()
2001 ip->i_delayoff = off; in udf_putpage()
2002 ip->i_delaylen = len; in udf_putpage()
2003 mutex_exit(&ip->i_tlock); in udf_putpage()
2013 ip->i_delaylen += len; in udf_putpage()
2014 mutex_exit(&ip->i_tlock); in udf_putpage()
2027 rw_exit(&ip->i_contents); in udf_putpage()
2106 struct ud_inode *ip = VTOI(vp); in udf_addmap() local
2114 mutex_enter(&ip->i_tlock); in udf_addmap()
2115 ip->i_mapcnt += btopr(len); in udf_addmap()
2116 mutex_exit(&ip->i_tlock); in udf_addmap()
2127 struct ud_inode *ip = VTOI(vp); in udf_delmap() local
2135 mutex_enter(&ip->i_tlock); in udf_delmap()
2136 ip->i_mapcnt -= btopr(len); /* Count released mappings */ in udf_delmap()
2137 ASSERT(ip->i_mapcnt >= 0); in udf_delmap()
2138 mutex_exit(&ip->i_tlock); in udf_delmap()
2193 struct ud_inode *ip = VTOI(vp); in udf_pageio() local
2202 dolock = (rw_owner(&ip->i_contents) != curthread); in udf_pageio()
2210 if (ip->i_udf == NULL) { in udf_pageio()
2215 rw_enter(&ip->i_contents, RW_READER); in udf_pageio()
2218 rw_enter(&ip->i_contents, RW_READER); in udf_pageio()
2230 if (error = ud_bmap_read(ip, (u_offset_t)(io_off + done_len), in udf_pageio()
2248 if (ip->i_udf->udf_lbsize < PAGESIZE) { in udf_pageio()
2259 bp = pageio_setup(cpp, cur_len, ip->i_devvp, flags); in udf_pageio()
2262 bp->b_edev = ip->i_dev; in udf_pageio()
2263 bp->b_dev = cmpdev(ip->i_dev); in udf_pageio()
2275 error = ud_multi_strat(ip, cpp, bp, in udf_pageio()
2325 rw_exit(&ip->i_contents); in udf_pageio()
2328 rw_exit(&ip->i_contents); in udf_pageio()
2342 ud_rdwri(enum uio_rw rw, int32_t ioflag, struct ud_inode *ip, caddr_t base, in ud_rdwri() argument
2367 error = ud_wrip(ip, &auio, ioflag, cr); in ud_rdwri()
2372 error = ud_rdip(ip, &auio, ioflag, cr); in ud_rdwri()
2396 struct ud_inode *ip = VTOI(vp); in ud_getpage_miss() local
2431 err = ud_page_fill(ip, pp, off, B_READ, &pgoff); in ud_getpage_miss()
2440 ip->i_nextrio = off + ((pgoff + PAGESIZE - 1) & PAGEMASK); in ud_getpage_miss()
2446 if (seq && ip->i_nextrio < ip->i_size) { in ud_getpage_miss()
2462 struct ud_inode *ip = VTOI(vp); in ud_getpage_ra() local
2463 u_offset_t io_off = ip->i_nextrio, pgoff; in ud_getpage_ra()
2477 if (ud_bmap_read(ip, io_off, &bn, &contig) != 0 || bn == UDF_HOLE) { in ud_getpage_ra()
2494 (void) ud_page_fill(ip, pp, io_off, (B_READ|B_ASYNC), &pgoff); in ud_getpage_ra()
2495 ip->i_nextrio = io_off + ((pgoff + PAGESIZE - 1) & PAGEMASK); in ud_getpage_ra()
2499 ud_page_fill(struct ud_inode *ip, page_t *pp, u_offset_t off, uint32_t bflgs, in ud_page_fill() argument
2506 int32_t lbsize = ip->i_udf->udf_lbsize; in ud_page_fill()
2507 int32_t lbmask = ip->i_udf->udf_lbmask; in ud_page_fill()
2510 isize = (ip->i_size + lbmask) & (~lbmask); in ud_page_fill()
2511 if (ip->i_desc_type == ICB_FLAG_ONE_AD) { in ud_page_fill()
2518 bp = ud_bread(ip->i_dev, in ud_page_fill()
2519 ip->i_icb_lbano << ip->i_udf->udf_l2d_shift, lbsize); in ud_page_fill()
2523 caddr = bp->b_un.b_addr + ip->i_data_off; in ud_page_fill()
2530 (void) kcopy(caddr, kaddr, ip->i_size); in ud_page_fill()
2538 contig = ip->i_size; in ud_page_fill()
2545 if (error = ud_bmap_read(ip, off, &bn, &contig)) in ud_page_fill()
2583 bp = pageio_setup(pp, contig, ip->i_devvp, bflgs); in ud_page_fill()
2586 bp->b_edev = ip->i_dev; in ud_page_fill()
2587 bp->b_dev = cmpdev(ip->i_dev); in ud_page_fill()
2590 bp->b_file = ip->i_vnode; in ud_page_fill()
2607 error = ud_multi_strat(ip, pp, bp, off); in ud_page_fill()
2625 if ((off + contig) >= ip->i_size) { in ud_page_fill()
2626 contig = ip->i_size - off; in ud_page_fill()
2638 struct ud_inode *ip; in ud_putpages() local
2653 ip = VTOI(vp); in ud_putpages()
2661 mutex_enter(&ip->i_tlock); in ud_putpages()
2662 ip->i_delayoff = ip->i_delaylen = 0; in ud_putpages()
2663 mutex_exit(&ip->i_tlock); in ud_putpages()
2666 rw_enter(&ip->i_contents, RW_READER); in ud_putpages()
2668 dolock = (rw_owner(&ip->i_contents) != curthread); in ud_putpages()
2670 rw_enter(&ip->i_contents, RW_READER); in ud_putpages()
2676 rw_exit(&ip->i_contents); in ud_putpages()
2679 rw_exit(&ip->i_contents); in ud_putpages()
2696 if ((eoff = blkroundup(ip->i_udf, ip->i_size)) != 0) { in ud_putpages()
2737 if (err == 0 && off == 0 && (len == 0 || len >= ip->i_size)) { in ud_putpages()
2742 mutex_enter(&ip->i_tlock); in ud_putpages()
2743 ip->i_flag &= ~IMODTIME; in ud_putpages()
2744 mutex_exit(&ip->i_tlock); in ud_putpages()
2747 rw_exit(&ip->i_contents); in ud_putpages()
2750 rw_exit(&ip->i_contents); in ud_putpages()
2763 struct ud_inode *ip; in ud_putapage() local
2776 ip = VTOI(vp); in ud_putapage()
2777 ASSERT(ip); in ud_putapage()
2778 ASSERT(RW_LOCK_HELD(&ip->i_contents)); in ud_putapage()
2779 lbmask = ip->i_udf->udf_lbmask; in ud_putapage()
2780 isize = (ip->i_size + lbmask) & (~lbmask); in ud_putapage()
2782 udf_vfsp = ip->i_udf; in ud_putapage()
2791 if (((ip->i_flag & IMODTIME) == 0) || (flags & B_FORCE)) { in ud_putapage()
2792 mutex_enter(&ip->i_tlock); in ud_putapage()
2793 ip->i_flag |= IUPD; in ud_putapage()
2794 ITIMES_NOLOCK(ip); in ud_putapage()
2795 mutex_exit(&ip->i_tlock); in ud_putapage()
2807 if (ip->i_desc_type == ICB_FLAG_ONE_AD) { in ud_putapage()
2808 ASSERT(ip->i_size <= ip->i_max_emb); in ud_putapage()
2816 bp = ud_bread(ip->i_dev, in ud_putapage()
2817 ip->i_icb_lbano << udf_vfsp->udf_l2d_shift, in ud_putapage()
2822 ip->i_icb_block, in ud_putapage()
2837 caddr = bp->b_un.b_addr + ip->i_data_off; in ud_putapage()
2840 (void) kcopy(kaddr, caddr, ip->i_size); in ud_putapage()
2845 crc_len += ip->i_size; in ud_putapage()
2846 ud_make_tag(ip->i_udf, &fe->fe_tag, in ud_putapage()
2847 UD_FILE_ENTRY, ip->i_icb_block, crc_len); in ud_putapage()
2854 contig = ip->i_size; in ud_putapage()
2857 if (error = ud_bmap_read(ip, off, &bn, &contig)) { in ud_putapage()
2889 bp = pageio_setup(pp, contig, ip->i_devvp, B_WRITE | flags); in ud_putapage()
2892 bp->b_edev = ip->i_dev; in ud_putapage()
2893 bp->b_dev = cmpdev(ip->i_dev); in ud_putapage()
2905 mutex_enter(&ip->i_tlock); in ud_putapage()
2906 ip->i_writes += bp->b_bcount; in ud_putapage()
2907 mutex_exit(&ip->i_tlock); in ud_putapage()
2913 error = ud_multi_strat(ip, pp, bp, off); in ud_putapage()
2953 struct ud_inode *ip; in ud_iodone() local
2959 ip = VTOI(bp->b_pages->p_vnode); in ud_iodone()
2961 mutex_enter(&ip->i_tlock); in ud_iodone()
2962 if (ip->i_writes >= ud_LW) { in ud_iodone()
2963 if ((ip->i_writes -= bp->b_bcount) <= ud_LW) { in ud_iodone()
2965 cv_broadcast(&ip->i_wrcv); /* wake all up */ in ud_iodone()
2969 ip->i_writes -= bp->b_bcount; in ud_iodone()
2971 mutex_exit(&ip->i_tlock); in ud_iodone()
2978 ud_rdip(struct ud_inode *ip, struct uio *uio, int32_t ioflag, cred_t *cr) in ud_rdip() argument
2989 ASSERT(RW_LOCK_HELD(&ip->i_contents)); in ud_rdip()
2990 if ((ip->i_type != VREG) && in ud_rdip()
2991 (ip->i_type != VDIR) && in ud_rdip()
2992 (ip->i_type != VLNK)) { in ud_rdip()
3008 vp = ITOV(ip); in ud_rdip()
3009 udf_vfsp = ip->i_udf; in ud_rdip()
3010 mutex_enter(&ip->i_tlock); in ud_rdip()
3011 ip->i_flag |= IACC; in ud_rdip()
3012 mutex_exit(&ip->i_tlock); in ud_rdip()
3014 rwtype = (rw_write_held(&ip->i_contents)?RW_WRITER:RW_READER); in ud_rdip()
3024 diff = ip->i_size - uoff; in ud_rdip()
3034 ip->i_nextr == (off & PAGEMASK) && in ud_rdip()
3039 rw_exit(&ip->i_contents); in ud_rdip()
3075 rw_enter(&ip->i_contents, rwtype); in ud_rdip()
3090 (ip->i_flag & (IATTCHG|IBDWRITE)))) { in ud_rdip()
3091 rw_exit(&ip->i_contents); in ud_rdip()
3092 rw_enter(&ip->i_contents, RW_WRITER); in ud_rdip()
3093 ud_iupdat(ip, 1); in ud_rdip()
3103 ITIMES(ip); in ud_rdip()
3109 ud_wrip(struct ud_inode *ip, struct uio *uio, int ioflag, struct cred *cr) in ud_wrip() argument
3123 ASSERT(RW_WRITE_HELD(&ip->i_contents)); in ud_wrip()
3124 if ((ip->i_type != VREG) && in ud_wrip()
3125 (ip->i_type != VDIR) && in ud_wrip()
3126 (ip->i_type != VLNK)) { in ud_wrip()
3156 mutex_enter(&ip->i_tlock); in ud_wrip()
3157 ip->i_flag |= INOACC; in ud_wrip()
3160 ip->i_flag |= ISYNC; in ud_wrip()
3163 mutex_exit(&ip->i_tlock); in ud_wrip()
3165 udf_vfsp = ip->i_udf; in ud_wrip()
3166 vp = ITOV(ip); in ud_wrip()
3175 if (ip->i_type == VREG && uoff + n >= limit) { in ud_wrip()
3182 if (uoff + n > ip->i_size) { in ud_wrip()
3189 error = ud_bmap_write(ip, uoff, in ud_wrip()
3195 old_i_size = ip->i_size; in ud_wrip()
3196 ip->i_size = uoff + n; in ud_wrip()
3211 error = ud_bmap_write(ip, uoff, in ud_wrip()
3221 rw_exit(&ip->i_contents); in ud_wrip()
3287 if ((ioflag & (FSYNC|FDSYNC)) || ip->i_type == VDIR) { in ud_wrip()
3335 ip->i_type == VDIR) { in ud_wrip()
3346 rw_enter(&ip->i_contents, RW_WRITER); in ud_wrip()
3358 (void) ud_itrunc(ip, old_i_size, 0, cr); in ud_wrip()
3364 ip->i_flag |= IUPD | ICHG; in ud_wrip()
3366 ip->i_flag |= IATTCHG; in ud_wrip()
3368 if ((ip->i_perm & (IEXEC | (IEXEC >> 5) | in ud_wrip()
3370 (ip->i_char & (ISUID | ISGID)) != 0 && in ud_wrip()
3372 (ip->i_char & ISUID) != 0 && ip->i_uid == 0) != 0) { in ud_wrip()
3381 ip->i_char &= ~(ISUID | ISGID); in ud_wrip()
3400 if ((ip->i_flag & ISYNC) != 0) { in ud_wrip()
3404 if ((ip->i_flag & (IATTCHG|IBDWRITE)) || in ud_wrip()
3406 ud_iupdat(ip, 1); in ud_wrip()
3417 ip->i_flag &= ~(INOACC | ISYNC); in ud_wrip()
3418 ITIMES_NOLOCK(ip); in ud_wrip()
3424 ud_multi_strat(struct ud_inode *ip, in ud_multi_strat() argument
3442 if (error = ud_bmap_read(ip, (u_offset_t)(start + io_off), in ud_multi_strat()
3500 if (error = ud_bmap_read(ip, in ud_multi_strat()