Lines Matching refs:ip
47 struct xfs_inode *ip, in xfs_readlink_bmap() argument
50 struct xfs_mount *mp = ip->i_mount; in xfs_readlink_bmap()
55 int pathlen = ip->i_d.di_size; in xfs_readlink_bmap()
64 error = xfs_bmapi_read(ip, 0, fsblocks, mval, &nmaps, 0); in xfs_readlink_bmap()
93 if (!xfs_symlink_hdr_ok(ip->i_ino, offset, in xfs_readlink_bmap()
98 offset, byte_cnt, ip->i_ino); in xfs_readlink_bmap()
116 link[ip->i_d.di_size] = '\0'; in xfs_readlink_bmap()
125 struct xfs_inode *ip, in xfs_readlink() argument
128 struct xfs_mount *mp = ip->i_mount; in xfs_readlink()
132 trace_xfs_readlink(ip); in xfs_readlink()
137 xfs_ilock(ip, XFS_ILOCK_SHARED); in xfs_readlink()
139 pathlen = ip->i_d.di_size; in xfs_readlink()
145 __func__, (unsigned long long) ip->i_ino, in xfs_readlink()
153 if (ip->i_df.if_flags & XFS_IFINLINE) { in xfs_readlink()
154 memcpy(link, ip->i_df.if_u1.if_data, pathlen); in xfs_readlink()
157 error = xfs_readlink_bmap(ip, link); in xfs_readlink()
161 xfs_iunlock(ip, XFS_ILOCK_SHARED); in xfs_readlink()
175 struct xfs_inode *ip = NULL; in xfs_symlink() local
284 prid, resblks > 0, &ip, NULL); in xfs_symlink()
301 xfs_qm_vop_create_dqattach(tp, ip, udqp, gdqp, pdqp); in xfs_symlink()
308 if (pathlen <= XFS_IFORK_DSIZE(ip)) { in xfs_symlink()
309 xfs_idata_realloc(ip, pathlen, XFS_DATA_FORK); in xfs_symlink()
310 memcpy(ip->i_df.if_u1.if_data, target_path, pathlen); in xfs_symlink()
311 ip->i_d.di_size = pathlen; in xfs_symlink()
316 ip->i_df.if_flags &= ~(XFS_IFEXTENTS | XFS_IFBROOT); in xfs_symlink()
317 ip->i_df.if_flags |= XFS_IFINLINE; in xfs_symlink()
319 ip->i_d.di_format = XFS_DINODE_FMT_LOCAL; in xfs_symlink()
320 xfs_trans_log_inode(tp, ip, XFS_ILOG_DDATA | XFS_ILOG_CORE); in xfs_symlink()
328 error = xfs_bmapi_write(tp, ip, first_fsb, fs_blocks, in xfs_symlink()
336 ip->i_d.di_size = pathlen; in xfs_symlink()
337 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); in xfs_symlink()
358 buf += xfs_symlink_hdr_set(mp, ip->i_ino, offset, in xfs_symlink()
377 error = xfs_dir_createname(tp, dp, link_name, ip->i_ino, in xfs_symlink()
405 *ipp = ip; in xfs_symlink()
419 if (ip) { in xfs_symlink()
420 xfs_finish_inode_setup(ip); in xfs_symlink()
421 IRELE(ip); in xfs_symlink()
438 struct xfs_inode *ip) in xfs_inactive_symlink_rmt() argument
453 mp = ip->i_mount; in xfs_inactive_symlink_rmt()
454 ASSERT(ip->i_df.if_flags & XFS_IFEXTENTS); in xfs_inactive_symlink_rmt()
462 ASSERT(ip->i_d.di_nextents > 0 && ip->i_d.di_nextents <= 2); in xfs_inactive_symlink_rmt()
471 xfs_ilock(ip, XFS_ILOCK_EXCL); in xfs_inactive_symlink_rmt()
472 xfs_trans_ijoin(tp, ip, 0); in xfs_inactive_symlink_rmt()
480 size = (int)ip->i_d.di_size; in xfs_inactive_symlink_rmt()
481 ip->i_d.di_size = 0; in xfs_inactive_symlink_rmt()
482 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); in xfs_inactive_symlink_rmt()
489 error = xfs_bmapi_read(ip, 0, xfs_symlink_blocks(mp, size), in xfs_inactive_symlink_rmt()
509 error = xfs_bunmapi(tp, ip, 0, size, XFS_BMAPI_METADATA, nmaps, in xfs_inactive_symlink_rmt()
531 xfs_trans_ijoin(tp, ip, 0); in xfs_inactive_symlink_rmt()
532 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); in xfs_inactive_symlink_rmt()
545 if (ip->i_df.if_bytes) in xfs_inactive_symlink_rmt()
546 xfs_idata_realloc(ip, -ip->i_df.if_bytes, XFS_DATA_FORK); in xfs_inactive_symlink_rmt()
547 ASSERT(ip->i_df.if_bytes == 0); in xfs_inactive_symlink_rmt()
549 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_inactive_symlink_rmt()
557 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_inactive_symlink_rmt()
566 struct xfs_inode *ip) in xfs_inactive_symlink() argument
568 struct xfs_mount *mp = ip->i_mount; in xfs_inactive_symlink()
571 trace_xfs_inactive_symlink(ip); in xfs_inactive_symlink()
576 xfs_ilock(ip, XFS_ILOCK_EXCL); in xfs_inactive_symlink()
581 pathlen = (int)ip->i_d.di_size; in xfs_inactive_symlink()
583 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_inactive_symlink()
589 __func__, (unsigned long long)ip->i_ino, pathlen); in xfs_inactive_symlink()
590 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_inactive_symlink()
595 if (ip->i_df.if_flags & XFS_IFINLINE) { in xfs_inactive_symlink()
596 if (ip->i_df.if_bytes > 0) in xfs_inactive_symlink()
597 xfs_idata_realloc(ip, -(ip->i_df.if_bytes), in xfs_inactive_symlink()
599 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_inactive_symlink()
600 ASSERT(ip->i_df.if_bytes == 0); in xfs_inactive_symlink()
604 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_inactive_symlink()
607 return xfs_inactive_symlink_rmt(ip); in xfs_inactive_symlink()