Lines Matching refs:ip

88 	struct inode *ip;
93 ip = VTOI(vp);
94 if ((ip->i_flag & IN_MODIFIED) == 0 && waitfor == 0)
96 ip->i_flag &= ~(IN_LAZYACCESS | IN_LAZYMOD | IN_MODIFIED);
116 ip->i_flag &= ~(IN_SIZEMOD | IN_IBLKDATA);
117 fs = ITOFS(ip);
118 if (fs->fs_ronly && ITOUMP(ip)->um_fsckpid == 0)
132 if (IS_SNAPSHOT(ip))
135 error = bread_gb(ITODEVVP(ip),
136 fsbtodb(fs, ino_to_fsba(fs, ip->i_number)),
141 KASSERT((IS_SNAPSHOT(ip)), ("EBUSY from non-snapshot"));
165 softdep_update_inodeblock(ip, bp, waitfor);
166 else if (ip->i_effnlink != ip->i_nlink)
168 if (I_IS_UFS1(ip)) {
170 ino_to_fsbo(fs, ip->i_number)) = *ip->i_din1;
172 random_harvest_queue(&(ip->i_din1), sizeof(ip->i_din1), RANDOM_FS_ATIME);
175 ino_to_fsbo(fs, ip->i_number)) = *ip->i_din2;
177 random_harvest_queue(&(ip->i_din2), sizeof(ip->i_din2), RANDOM_FS_ATIME);
197 * Truncate the inode ip to at most length size, freeing the
207 struct inode *ip;
223 ip = VTOI(vp);
235 error = getinoquota(ip);
263 datablocks = DIP(ip, i_blocks);
264 if (fs->fs_magic == FS_UFS2_MAGIC && ip->i_din2->di_extsize > 0) {
265 extblocks = btodb(fragroundup(fs, ip->i_din2->di_extsize));
279 (void) chkdq(ip, -extblocks, NOCRED, FORCE);
284 osize = ip->i_din2->di_extsize;
285 ip->i_din2->di_blocks -= extblocks;
286 ip->i_din2->di_extsize = 0;
288 oldblks[i] = ip->i_din2->di_extb[i];
289 ip->i_din2->di_extb[i] = 0;
291 ip->i_flag |= IN_SIZEMOD | IN_CHANGE;
297 ffs_blkfree(ump, fs, ITODEVVP(ip), oldblks[i],
298 sblksize(fs, osize, i), ip->i_number,
305 if (vp->v_type == VLNK && ip->i_size < vp->v_mount->mnt_maxsymlinklen) {
310 bzero(SHORTLINK(ip), (u_int)ip->i_size);
311 ip->i_size = 0;
312 DIP_SET(ip, i_size, 0);
313 ip->i_flag |= IN_SIZEMOD | IN_CHANGE | IN_UPDATE;
318 if (ip->i_size == length) {
319 ip->i_flag |= IN_CHANGE | IN_UPDATE;
326 if (IS_SNAPSHOT(ip))
329 osize = ip->i_size;
343 ip->i_size = length;
344 DIP_SET(ip, i_size, length);
353 ip->i_flag |= IN_SIZEMOD | IN_CHANGE | IN_UPDATE;
364 blkno = DIP(ip, i_db[lbn]);
371 if (I_IS_UFS1(ip))
413 softdep_journal_freeblocks(ip, cred, length,
416 softdep_setup_freeblocks(ip, length, flags);
419 ip->i_flag |= IN_CHANGE | IN_UPDATE;
437 ip->i_size = length;
438 DIP_SET(ip, i_size, length);
439 ip->i_flag |= IN_SIZEMOD | IN_CHANGE | IN_UPDATE;
458 ip->i_size = length;
459 DIP_SET(ip, i_size, length);
460 size = blksize(fs, ip, lbn);
474 ip->i_flag |= IN_SIZEMOD | IN_CHANGE | IN_UPDATE;
494 oldblks[UFS_NDADDR + level] = DIP(ip, i_ib[level]);
496 DIP_SET(ip, i_ib[level], 0);
501 oldblks[i] = DIP(ip, i_db[i]);
503 DIP_SET(ip, i_db[i], 0);
505 ip->i_flag |= IN_CHANGE | IN_UPDATE;
515 newblks[i] = DIP(ip, i_db[i]);
516 DIP_SET(ip, i_db[i], oldblks[i]);
519 newblks[UFS_NDADDR + i] = DIP(ip, i_ib[i]);
520 DIP_SET(ip, i_ib[i], oldblks[UFS_NDADDR + i]);
522 ip->i_size = osize;
523 DIP_SET(ip, i_size, osize);
524 ip->i_flag |= IN_SIZEMOD | IN_CHANGE | IN_UPDATE;
537 bn = DIP(ip, i_ib[level]);
539 error = ffs_indirtrunc(ip, indir_lbn[level],
545 DIP_SET(ip, i_ib[level], 0);
547 fs->fs_bsize, ip->i_number,
559 key = ffs_blkrelease_start(ump, ump->um_devvp, ip->i_number);
563 bn = DIP(ip, i_db[i]);
566 DIP_SET(ip, i_db[i], 0);
567 bsize = blksize(fs, ip, i);
568 ffs_blkfree(ump, fs, ump->um_devvp, bn, bsize, ip->i_number,
580 bn = DIP(ip, i_db[lastblock]);
588 oldspace = blksize(fs, ip, lastblock);
589 ip->i_size = length;
590 DIP_SET(ip, i_size, length);
591 ip->i_flag |= IN_SIZEMOD | IN_CHANGE | IN_UPDATE;
592 newspace = blksize(fs, ip, lastblock);
603 oldspace - newspace, ip->i_number, vp->v_type,
611 if (newblks[UFS_NDADDR + level] != DIP(ip, i_ib[level]))
614 if (newblks[i] != DIP(ip, i_db[i]))
618 (fs->fs_magic != FS_UFS2_MAGIC || ip->i_din2->di_extsize == 0) &&
626 ip->i_size = length;
627 DIP_SET(ip, i_size, length);
628 if (DIP(ip, i_blocks) >= blocksreleased)
629 DIP_SET(ip, i_blocks, DIP(ip, i_blocks) - blocksreleased);
631 DIP_SET(ip, i_blocks, 0);
632 ip->i_flag |= IN_SIZEMOD | IN_CHANGE;
634 (void) chkdq(ip, -blocksreleased, NOCRED, FORCE);
640 softdep_journal_freeblocks(ip, cred, length, IO_EXT);
642 softdep_setup_freeblocks(ip, length, IO_EXT);
647 * Release blocks associated with the inode ip and stored in the indirect
654 ffs_indirtrunc(ip, lbn, dbn, lastbn, level, countp)
655 struct inode *ip;
672 #define BAP(ip, i) (I_IS_UFS1(ip) ? bap1[i] : bap2[i])
674 fs = ITOFS(ip);
675 ump = ITOUMP(ip);
695 vp = ITOV(ip);
723 if (I_IS_UFS1(ip))
731 if (I_IS_UFS1(ip))
742 if (I_IS_UFS1(ip))
751 key = ffs_blkrelease_start(ump, ITODEVVP(ip), ip->i_number);
754 nb = BAP(ip, i);
758 if ((error = ffs_indirtrunc(ip, nlbn, fsbtodb(fs, nb),
763 ffs_blkfree(ump, fs, ITODEVVP(ip), nb, fs->fs_bsize,
764 ip->i_number, vp->v_type, NULL, key);
774 nb = BAP(ip, i);
776 error = ffs_indirtrunc(ip, nlbn, fsbtodb(fs, nb),
795 ffs_rdonly(struct inode *ip)
798 return (ITOFS(ip)->fs_ronly != 0);