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
281 prid, resblks > 0, &ip, NULL); in xfs_symlink()
298 xfs_qm_vop_create_dqattach(tp, ip, udqp, gdqp, pdqp); in xfs_symlink()
305 if (pathlen <= XFS_IFORK_DSIZE(ip)) { in xfs_symlink()
306 xfs_idata_realloc(ip, pathlen, XFS_DATA_FORK); in xfs_symlink()
307 memcpy(ip->i_df.if_u1.if_data, target_path, pathlen); in xfs_symlink()
308 ip->i_d.di_size = pathlen; in xfs_symlink()
313 ip->i_df.if_flags &= ~(XFS_IFEXTENTS | XFS_IFBROOT); in xfs_symlink()
314 ip->i_df.if_flags |= XFS_IFINLINE; in xfs_symlink()
316 ip->i_d.di_format = XFS_DINODE_FMT_LOCAL; in xfs_symlink()
317 xfs_trans_log_inode(tp, ip, XFS_ILOG_DDATA | XFS_ILOG_CORE); in xfs_symlink()
325 error = xfs_bmapi_write(tp, ip, first_fsb, fs_blocks, in xfs_symlink()
333 ip->i_d.di_size = pathlen; in xfs_symlink()
334 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); in xfs_symlink()
355 buf += xfs_symlink_hdr_set(mp, ip->i_ino, offset, in xfs_symlink()
374 error = xfs_dir_createname(tp, dp, link_name, ip->i_ino, in xfs_symlink()
402 *ipp = ip; in xfs_symlink()
415 if (ip) { in xfs_symlink()
416 xfs_finish_inode_setup(ip); in xfs_symlink()
417 IRELE(ip); in xfs_symlink()
434 struct xfs_inode *ip) in xfs_inactive_symlink_rmt() argument
449 mp = ip->i_mount; in xfs_inactive_symlink_rmt()
450 ASSERT(ip->i_df.if_flags & XFS_IFEXTENTS); in xfs_inactive_symlink_rmt()
458 ASSERT(ip->i_d.di_nextents > 0 && ip->i_d.di_nextents <= 2); in xfs_inactive_symlink_rmt()
467 xfs_ilock(ip, XFS_ILOCK_EXCL); in xfs_inactive_symlink_rmt()
468 xfs_trans_ijoin(tp, ip, 0); in xfs_inactive_symlink_rmt()
476 size = (int)ip->i_d.di_size; in xfs_inactive_symlink_rmt()
477 ip->i_d.di_size = 0; in xfs_inactive_symlink_rmt()
478 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); in xfs_inactive_symlink_rmt()
485 error = xfs_bmapi_read(ip, 0, xfs_symlink_blocks(mp, size), in xfs_inactive_symlink_rmt()
505 error = xfs_bunmapi(tp, ip, 0, size, 0, nmaps, in xfs_inactive_symlink_rmt()
527 xfs_trans_ijoin(tp, ip, 0); in xfs_inactive_symlink_rmt()
528 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); in xfs_inactive_symlink_rmt()
541 if (ip->i_df.if_bytes) in xfs_inactive_symlink_rmt()
542 xfs_idata_realloc(ip, -ip->i_df.if_bytes, XFS_DATA_FORK); in xfs_inactive_symlink_rmt()
543 ASSERT(ip->i_df.if_bytes == 0); in xfs_inactive_symlink_rmt()
545 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_inactive_symlink_rmt()
553 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_inactive_symlink_rmt()
562 struct xfs_inode *ip) in xfs_inactive_symlink() argument
564 struct xfs_mount *mp = ip->i_mount; in xfs_inactive_symlink()
567 trace_xfs_inactive_symlink(ip); in xfs_inactive_symlink()
572 xfs_ilock(ip, XFS_ILOCK_EXCL); in xfs_inactive_symlink()
577 pathlen = (int)ip->i_d.di_size; in xfs_inactive_symlink()
579 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_inactive_symlink()
585 __func__, (unsigned long long)ip->i_ino, pathlen); in xfs_inactive_symlink()
586 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_inactive_symlink()
591 if (ip->i_df.if_flags & XFS_IFINLINE) { in xfs_inactive_symlink()
592 if (ip->i_df.if_bytes > 0) in xfs_inactive_symlink()
593 xfs_idata_realloc(ip, -(ip->i_df.if_bytes), in xfs_inactive_symlink()
595 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_inactive_symlink()
596 ASSERT(ip->i_df.if_bytes == 0); in xfs_inactive_symlink()
600 xfs_iunlock(ip, XFS_ILOCK_EXCL); in xfs_inactive_symlink()
603 return xfs_inactive_symlink_rmt(ip); in xfs_inactive_symlink()