• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10/xnu-2782.1.97/bsd/hfs/

Lines Matching defs:vp

366  *	if the caller doesn't have a vnode, pass NULL in vp, and pass valid hfsmp and fid.
372 hfs_uncompressed_size_of_compressed_file(struct hfsmount *hfsmp, struct vnode *vp, cnid_t fid, off_t *size, int skiplock)
381 if (NULL == vp) {
385 if (0 != hfs_vget(hfsmp, fid, &vp, skiplock, 0)) { /* vnode is null, use hfs_vget() to get it */
386 vp = NULL;
395 if (vp) {
396 if (hfs_file_is_compressed(VTOC(vp), skiplock) ) {
397 *size = decmpfs_cnode_get_vnode_cached_size(VTOCMP(vp)); /* file info will be cached now, so get size */
399 if (VTOCMP(vp) && VTOCMP(vp)->cmp_type >= CMP_MAX) {
400 if (VTOCMP(vp)->cmp_type != DATALESS_CMPFS_TYPE) {
402 if (VTOC(vp)->c_datafork) {
403 *size = VTOC(vp)->c_datafork->ff_size;
409 *size = decmpfs_cnode_get_vnode_cached_size(VTOCMP(vp)); /* file info will be cached now, so get size */
419 vnode_put(vp); /* if so, release it and set it to null */
420 vp = NULL;
556 should_save_docid_tombstone(struct doc_tombstone *ut, struct vnode *vp, struct componentname *cnp)
562 if (ut->t_lastop_document_id && ut->t_lastop_item == vp && is_ignorable_temp_name(cnp->cn_nameptr, cnp->cn_namelen)) {
581 save_tombstone(struct hfsmount *hfsmp, struct vnode *dvp, struct vnode *vp, struct componentname *cnp, int for_unlink)
583 struct cnode *cp = VTOC(vp);
587 if (for_unlink && vp->v_type == VREG && cp->c_linkcount > 1) {
604 ut->t_lastop_item = vp;
605 ut->t_lastop_item_vid = vnode_vid(vp);
641 struct vnode *vp = ap->a_vp;
646 struct cnode *cp = VTOC(vp);
647 struct hfsmount *hfsmp = VTOHFS(vp);
670 if (VNODE_IS_RSRC(vp)) {
674 error = decmpfs_validate_compressed_file(vp, VTOCMP(vp));
685 if ((cp->c_bsdflags & APPEND) && !vnode_isdir(vp) &&
689 if (vnode_isreg(vp) && !UBCINFOEXISTS(vp))
699 !vnode_isreg(vp) || vnode_isinuse(vp, 0) || vnode_isnamedstream(vp)) {
701 !vnode_isreg(vp) || vnode_isinuse(vp, 0)) {
719 fp = VTOF(vp);
745 (void) hfs_relocate(vp, hfsmp->nextAllocation + 4096,
768 register struct vnode *vp = ap->a_vp;
776 if ( hfs_lock(VTOC(vp), HFS_EXCLUSIVE_LOCK, HFS_LOCK_DEFAULT) != 0)
778 cp = VTOC(vp);
779 hfsmp = VTOHFS(vp);
785 * Make sure the vp is not a directory, and that it has a resource fork,
789 if ((vp->v_type == VREG) && (cp->c_rsrc_vp)
793 blks = howmany(VTOF(vp)->ff_size, VTOVCB(vp)->blockSize);
796 * this vp (ourselves + rsrc fork holding ref on us), go ahead
799 if ((blks < VTOF(vp)->ff_blocks) && (!vnode_isinuse(vp, 2))) {
806 if (hfs_lock(VTOC(vp), HFS_EXCLUSIVE_LOCK, HFS_LOCK_DEFAULT) != 0) {
814 if (!vnode_isinuse(vp, knownrefs)){
816 blks = howmany(VTOF(vp)->ff_size, VTOVCB(vp)->blockSize);
817 if (blks < VTOF(vp)->ff_blocks){
818 (void) hfs_truncate(vp, VTOF(vp)->ff_size, IO_NDELAY,
833 busy = vnode_isinuse(vp, 1);
836 hfs_touchtimes(VTOHFS(vp), cp);
838 if (vnode_isdir(vp)) {
840 } else if (vnode_issystem(vp) && !busy) {
841 vnode_recycle(vp);
876 struct vnode *vp = ap->a_vp;
884 cp = VTOC(vp);
893 if (VNODE_IS_RSRC(vp)) {
902 if (compressed || (!VNODE_IS_RSRC(vp) && cp->c_decmp && cp->c_decmp->cmp_type >= CMP_MAX)) {
903 if (0 != hfs_uncompressed_size_of_compressed_file(NULL, vp, 0, &uncompressed_size, 0)) {
939 hfsmp = VTOHFS(vp);
940 v_type = vnode_vtype(vp);
987 if (need_fsevent(FSE_STAT_CHANGED, vp)) {
989 FSE_ARG_VNODE, vp, FSE_ARG_DONE);
1075 data_size = VCTOF(vp, cp)->ff_size;
1092 blocks = VCTOF(vp, cp)->ff_blocks;
1127 if (cp->c_blocks - VTOF(vp)->ff_blocks) {
1129 error = hfs_vgetrsrc(hfsmp, vp, &rvp);
1274 if (ubc_is_mapped_writable(vp)) {
1393 struct vnode *vp = ap->a_vp;
1403 orig_ctime = VTOC(vp)->c_ctime;
1411 error = decmpfs_update_attributes(vp, vap);
1420 check_for_tracked_file(vp, orig_ctime, NAMESPACE_HANDLER_METADATA_MOD, NSPACE_REARM_NO_ARG);
1424 if ((error = cp_handle_vnop(vp, CP_WRITE_ACCESS, 0)) != 0) {
1429 hfsmp = VTOHFS(vp);
1432 if (hfs_is_journal_file(hfsmp, VTOC(vp))) {
1442 if (VATTR_IS_ACTIVE(vap, va_flags) && (vap->va_flags & UF_TRACKED) && !(VTOC(vp)->c_bsdflags & UF_TRACKED)) {
1443 struct FndrExtendedDirInfo *fip = (struct FndrExtendedDirInfo *)((char *)&(VTOC(vp)->c_attr.ca_finderinfo) + 16);
1464 if (VATTR_IS_ACTIVE(vap, va_data_size) && !vnode_islnk(vp)) {
1467 decmpfs_cnode *dp = VTOCMP(vp);
1474 dp = hfs_lazy_init_decmpfs_cnode(VTOC(vp));
1481 check_for_tracked_file(vp, orig_ctime, vap->va_data_size == 0 ? NAMESPACE_HANDLER_TRUNCATE_OP|NAMESPACE_HANDLER_DELETE_OP : NAMESPACE_HANDLER_TRUNCATE_OP, NULL);
1484 if (hfs_file_is_compressed(VTOC(vp), 1)) {
1485 error = decmpfs_decompress_file(vp, dp, -1/*vap->va_data_size*/, 0, 1);
1494 hfs_lock_truncate(VTOC(vp), HFS_EXCLUSIVE_LOCK, HFS_LOCK_DEFAULT);
1497 error = hfs_truncate(vp, vap->va_data_size, vap->va_vaflags & 0xffff,
1500 hfs_unlock_truncate(VTOC(vp), HFS_LOCK_DEFAULT);
1508 if ((error = hfs_lock(VTOC(vp), HFS_EXCLUSIVE_LOCK, HFS_LOCK_DEFAULT)))
1510 cp = VTOC(vp);
1537 ((error = hfs_chown(vp, nuid, ngid, cred, p)) != 0))
1547 ((error = hfs_chmod(vp, (int)vap->va_mode, cred, p)) != 0))
1579 // printf("SETATTR: assigning doc-id %d to %s (ino %d)\n", document_id, vp->v_name, cp->c_desc.cd_cnid);
1590 // printf("hfs: could not acquire a new document_id for %s (ino %d)\n", vp->v_name, cp->c_desc.cd_cnid);
1600 // printf("SETATTR: clearing doc-id %d from %s (ino %d)\n", fip->document_id, vp->v_name, cp->c_desc.cd_cnid);
1663 if ((VTOVCB(vp)->vcbSigWord == kHFSPlusSigWord) &&
1683 if ((error = hfs_update(vp, TRUE)) != 0)
1690 if ((cp->c_flag & C_HARDLINK) && (vp->v_type != VDIR)){
1701 decmpfs_cnode *dp = VTOCMP(vp);
1708 dp = hfs_lazy_init_decmpfs_cnode(VTOC(vp));
1727 hfs_chmod(struct vnode *vp, int mode, __unused kauth_cred_t cred, __unused struct proc *p)
1729 register struct cnode *cp = VTOC(vp);
1731 if (VTOVCB(vp)->vcbSigWord != kHFSPlusSigWord)
1735 if (hfs_is_journal_file(VTOHFS(vp), cp)) {
1740 if (((unsigned int)vfs_flags(VTOVFS(vp))) & MNT_UNKNOWNPERMISSIONS) {
1752 hfs_write_access(struct vnode *vp, kauth_cred_t cred, struct proc *p, Boolean considerFlags)
1754 struct cnode *cp = VTOC(vp);
1763 switch (vnode_vtype(vp)) {
1767 if (VTOHFS(vp)->hfs_flags & HFS_READ_ONLY)
1783 if ((retval = hfs_owner_rights(VTOHFS(vp), cp->c_uid, cred, p, false)) == 0)
1802 hfs_chown(struct vnode *vp, uid_t uid, gid_t gid, __unused kauth_cred_t cred,
1805 hfs_chown(struct vnode *vp, uid_t uid, gid_t gid, kauth_cred_t cred,
1809 register struct cnode *cp = VTOC(vp);
1818 if (VTOVCB(vp)->vcbSigWord != kHFSPlusSigWord)
1821 if (((unsigned int)vfs_flags(VTOVFS(vp))) & MNT_UNKNOWNPERMISSIONS)
1858 * if (vnode_isdir(vp))
1859 * change = VTOHFS(vp)->blockSize;
1863 change = (int64_t)(cp->c_blocks) * (int64_t)VTOVCB(vp)->blockSize;
1927 * Flush the resource fork if it exists. vp is the data fork and has
1930 static int hfs_flush_rsrc(vnode_t vp, vfs_context_t ctx)
1932 cnode_t *cp = VTOC(vp);
2472 struct vnode *vp = ap->a_vp;
2473 cnode_t *cp = VTOC(vp);
2476 if (VNODE_IS_RSRC(vp)) {
2483 error = check_for_dataless_file(vp, NAMESPACE_HANDLER_READ_OP);
2490 check_for_tracked_file(vp, orig_ctime, NAMESPACE_HANDLER_WRITE_OP, NULL);
2503 vnode_t vp = ap->a_vp;
2512 if (ubc_is_mapped_writable(vp)) {
2513 cnode_t *cp = VTOC(vp);
2871 hfs_fsync(struct vnode *vp, int waitfor, int fullsync, struct proc *p)
2873 struct cnode *cp = VTOC(vp);
2876 struct hfsmount *hfsmp = VTOHFS(vp);
2896 if (vnode_isdir(vp))
2898 fp = VTOF(vp);
2904 if (vnode_issystem(vp)) {
2905 if (VTOF(vp)->fcbBTCBPtr != NULL) {
2908 BTFlushPath(VTOF(vp));
2911 } else if (UBCINFOEXISTS(vp)) {
2929 (void) cluster_push(vp, waitdata ? IO_SYNC : 0);
2943 UBCINFOEXISTS(vp) && (vnode_issystem(vp) ==0) &&
2974 (void) cluster_write(vp, (struct uio *) 0,
2981 (void) cluster_push(vp, waitdata ? IO_SYNC : 0);
3011 locked_buffers = buf_flushdirtyblks_skipinfo(vp, waitdata, lockflag, "hfs_fsync");
3012 if ((lockflag & BUF_SKIP_LOCKED) && (locked_buffers) && (vnode_vtype(vp) == VLNK)) {
3031 if (vnode_isrecycled(vp)) {
3037 if (vnode_isreg(vp) && vnode_issystem(vp)) {
3038 if (VTOF(vp)->fcbBTCBPtr != NULL) {
3040 BTSetLastSync(VTOF(vp), tv.tv_sec);
3045 } else if ( !(vp->v_flag & VSWAP) ) /* User file */ {
3046 retval = hfs_update(vp, wait);
3056 hfs_metasync(VTOHFS(vp), (daddr64_t)cp->c_hint, p);
3092 vnode_t vp;
3096 vp = HFSTOVCB(hfsmp)->catalogRefNum;
3114 bp = buf_getblk(vp, node, 0, 0, 0, BLK_META | BLK_ONLYVALID);
3178 hfs_btsync(struct vnode *vp, int sync_transaction)
3180 struct cnode *cp = VTOC(vp);
3189 buf_iterate(vp, hfs_btsync_callback, flags, 0);
3192 if (vnode_issystem(vp) && (VTOF(vp)->fcbBTCBPtr != NULL))
3193 (void) BTSetLastSync(VTOF(vp), tv.tv_sec);
3214 struct vnode *vp = ap->a_vp;
3216 struct cnode *cp = VTOC(vp);
3220 orig_ctime = VTOC(vp)->c_ctime;
3225 if (dvp == vp) {
3229 check_for_tracked_file(vp, orig_ctime, NAMESPACE_HANDLER_DELETE_OP, NULL);
3230 cp = VTOC(vp);
3250 if (hfs_generate_document_id(VTOHFS(vp), &newid) == 0) {
3255 FSE_ARG_DEV, VTOHFS(vp)->hfs_raw_dev,
3267 error = hfs_removedir(dvp, vp, ap->a_cnp, 0, 0);
3277 * Both dvp and vp cnodes are locked
3280 hfs_removedir(struct vnode *dvp, struct vnode *vp, struct componentname *cnp,
3290 cp = VTOC(vp);
3292 hfsmp = VTOHFS(vp);
3317 if (vnode_isinuse(vp, 0)) {
3336 return hfs_unlink(hfsmp, dvp, vp, cnp, skip_reserve);
3363 int ret = hfs_removefile(dvp, vp, cnp, 0, 0, 1, NULL, only_unlink);
3370 vnode_recycle(vp);
3400 cache_purge(vp);
3444 if (!skip_reserve && (cp->c_bsdflags & UF_TRACKED) && should_save_docid_tombstone(ut, vp, cnp)) {
3449 save_tombstone(hfsmp, dvp, vp, cnp, 1);
3508 struct vnode *vp = ap->a_vp;
3517 if (dvp == vp) {
3521 orig_ctime = VTOC(vp)->c_ctime;
3522 if (!vnode_isnamedstream(vp) && ((ap->a_flags & VNODE_REMOVE_SKIP_NAMESPACE_EVENT) == 0)) {
3523 error = check_for_tracked_file(vp, orig_ctime, NAMESPACE_HANDLER_DELETE_OP, NULL);
3531 cp = VTOC(vp);
3552 if (hfs_generate_document_id(VTOHFS(vp), &newid) == 0) {
3557 FSE_ARG_DEV, VTOHFS(vp)->hfs_raw_dev,
3581 * steps if 'vp' is a directory.
3584 if ((vp->v_type == VLNK) || (vp->v_type == VREG)) {
3609 * hfs_removefile already checks for a race on vp/cp
3616 error = hfs_removefile(dvp, vp, ap->a_cnp, ap->a_flags, 0, 0, NULL, 0);
3666 vnode_recycle (vp);
3702 * not. As a result, one only need pass in the 'vp' corresponding to the
3712 hfs_removefile(struct vnode *dvp, struct vnode *vp, struct componentname *cnp,
3730 cp = VTOC(vp);
3732 hfsmp = VTOHFS(vp);
3744 if (VNODE_IS_RSRC(vp)) {
3769 if (vp->v_type == VLNK) {
3775 buf_wait_for_shadow_io (vp, 0);
3782 if ((flags & VNODE_REMOVE_NODELETEBUSY) && vnode_isinuse(vp, 0)) {
3789 if ((vnode_isdir(vp) == 1) && (cp->c_linkcount == 1) &&
3793 return hfs_unlink(hfsmp, dvp, vp, cnp, skip_reserve);
3798 if (vnode_isdir(vp)) {
3816 cache_purge(vp);
3833 dataforkbusy = vnode_isinuse(vp, 0);
3835 * At this point, we know that 'vp' points to the
3839 if (rsrc_vp && (cp->c_blocks - VTOF(vp)->ff_blocks)) {
3906 if (hfsmp->jnl && vnode_islnk(vp) && (defer_remove == 0)) {
3907 buf_iterate(vp, hfs_removefile_callback, BUF_SKIP_NONLOCKED, (void *)hfsmp);
3931 error = hfs_prepare_release_storage (hfsmp, vp);
4072 (cp->c_blocks - VTOF(vp)->ff_blocks)) {
4221 if (!error && !skip_reserve && (cp->c_bsdflags & UF_TRACKED) && should_save_docid_tombstone(ut, vp, cnp)) {
4226 save_tombstone(hfsmp, dvp, vp, cnp, 1);
5270 struct vnode *vp = NULL;
5301 vp = *vpp;
5302 if ((error = hfs_lock(VTOC(vp), HFS_EXCLUSIVE_LOCK, HFS_LOCK_DEFAULT))) {
5305 cp = VTOC(vp);
5306 fp = VTOF(vp);
5328 error = hfs_truncate(vp, len, IO_NOZEROFILL, 0, ap->a_context);
5349 (void) hfs_removefile(dvp, vp, ap->a_cnp, 0, 0, 0, NULL, 0);
5355 bp = buf_getblk(vp, (daddr64_t)0, roundup((int)fp->ff_size, hfsmp->hfs_physical_block_size),
5372 if ((cp != NULL) && (vp != NULL)) {
5376 if (vp) {
5377 vnode_put(vp);
5449 struct vnode *vp = ap->a_vp;
5479 if (VTOC(vp)->c_bsdflags & UF_COMPRESSED) {
5480 int compressed = hfs_file_is_compressed(VTOC(vp), 0); /* 0 == take the cnode lock */
5481 if (VTOCMP(vp) != NULL && !compressed) {
5482 error = check_for_dataless_file(vp, NAMESPACE_HANDLER_READ_OP);
5489 cp = VTOC(vp);
5490 hfsmp = VTOHFS(vp);
5493 if ((error = hfs_lock(VTOC(vp), HFS_EXCLUSIVE_LOCK, HFS_LOCK_DEFAULT)))
5730 hfs_update(vp, 0);
5750 struct vnode *vp = ap->a_vp;
5755 if (!vnode_islnk(vp))
5758 if ((error = hfs_lock(VTOC(vp), HFS_EXCLUSIVE_LOCK, HFS_LOCK_DEFAULT)))
5760 cp = VTOC(vp);
5761 fp = VTOF(vp);
5778 error = (int)buf_meta_bread(vp, (daddr64_t)0,
5779 roundup((int)fp->ff_size, VTOHFS(vp)->hfs_physical_block_size),
5792 if (VTOHFS(vp)->jnl && (buf_flags(bp) & B_LOCKED) == 0) {
5802 if ((VTOHFS(vp)->hfc_stage == HFC_RECORDING) && (error == 0)) {
5808 if (cp->c_atime < VTOHFS(vp)->hfc_timebase)
5809 VTOF(vp)->ff_bytesread = fp->ff_size;
5811 VTOF(vp)->ff_bytesread += fp->ff_size;
5813 // if (VTOF(vp)->ff_bytesread > fp->ff_size)
5977 hfs_update(struct vnode *vp, __unused int waitfor)
5979 struct cnode *cp = VTOC(vp);
5991 hfsmp = VTOHFS(vp);
5993 if (((vnode_issystem(vp) && (cp->c_cnid < kHFSFirstUserCatalogNodeID))) ||
6051 KERNEL_DEBUG_CONSTANT(HFSDBG_UPDATE | DBG_FUNC_START, VM_KERNEL_ADDRPERM(vp), tstate, 0, 0, 0);
6054 KERNEL_DEBUG_CONSTANT(HFSDBG_UPDATE | DBG_FUNC_END, VM_KERNEL_ADDRPERM(vp), tstate, error, -1, 0);
6070 vn_getpath(vp, (char *)dbg_parms, &dbg_namelen);
6075 kdebug_lookup_gen_events(dbg_parms, dbg_namelen, (void *)vp, TRUE);
6093 KERNEL_DEBUG_CONSTANT(HFSDBG_UPDATE | DBG_FUNC_END, VM_KERNEL_ADDRPERM(vp), tstate, error, 0, 0);
6609 * cnode that is found in 'vp'. The cnode should be locked upon entry
6616 hfs_vgetrsrc(struct hfsmount *hfsmp, struct vnode *vp, struct vnode **rvpp)
6620 struct cnode *cp = VTOC(vp);
6624 if (vnode_vtype(vp) == VDIR) {
6649 const char * name = (const char *)VTOC(vp)->c_desc.cd_nameptr;
6787 dvp = vnode_getparent(vp);
6855 struct vnode *vp = ap->a_vp;
6859 if (hfs_lock(VTOC(vp), HFS_EXCLUSIVE_LOCK, HFS_LOCK_DEFAULT) == 0) {
6860 cp = VTOC(vp);
6861 hfs_touchtimes(VTOHFS(vp), cp);
6921 struct vnode *vp = ap->a_vp;
6925 if (hfs_lock(VTOC(vp), HFS_EXCLUSIVE_LOCK, HFS_LOCK_DEFAULT) == 0) {
6926 cp = VTOC(vp);
6927 hfs_touchtimes(VTOHFS(vp), cp);
6988 struct vnode* vp = ap->a_vp;
6996 if (VTOHFS(vp)->hfs_flags & HFS_READ_ONLY) {
7009 error = hfs_lock(VTOC(vp), HFS_EXCLUSIVE_LOCK, HFS_LOCK_DEFAULT);
7013 error = hfs_fsync(vp, ap->a_waitfor, 0, vfs_context_proc(ap->a_context));
7015 hfs_unlock(VTOC(vp));