• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/fs/xfs/

Lines Matching refs:ip

55 	struct xfs_inode	*ip,
59 xfs_mount_t *mp = ip->i_mount;
60 struct inode *inode = VFS_I(ip);
71 trace_xfs_setattr(ip);
101 uid = ip->i_d.di_uid;
107 gid = ip->i_d.di_gid;
117 code = xfs_qm_vop_dqalloc(ip, uid, gid, ip->i_d.di_projid,
145 xfs_ilock(ip, lock_flags);
157 iuid = ip->i_d.di_uid;
158 igid = ip->i_d.di_gid;
170 code = xfs_qm_vop_chown_reserve(tp, ip, udqp, gdqp,
184 ip->i_size == 0 && ip->i_d.di_nextents == 0) {
185 xfs_iunlock(ip, XFS_ILOCK_EXCL);
188 xfs_ichgtime(ip, XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG);
193 if (S_ISDIR(ip->i_d.di_mode)) {
196 } else if (!S_ISREG(ip->i_d.di_mode)) {
204 code = xfs_qm_dqattach_locked(ip, 0);
216 if (iattr->ia_size > ip->i_size) {
223 code = xfs_zero_eof(ip, iattr->ia_size, ip->i_size);
227 xfs_iunlock(ip, XFS_ILOCK_EXCL);
242 if (ip->i_size != ip->i_d.di_size &&
243 iattr->ia_size > ip->i_d.di_size) {
244 code = xfs_flush_pages(ip,
245 ip->i_d.di_size, iattr->ia_size,
252 xfs_ioend_wait(ip);
271 xfs_ilock(ip, XFS_ILOCK_EXCL);
273 xfs_trans_ijoin(tp, ip);
287 if (iattr->ia_size != ip->i_size &&
294 if (iattr->ia_size > ip->i_size) {
295 ip->i_d.di_size = iattr->ia_size;
296 ip->i_size = iattr->ia_size;
297 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
298 } else if (iattr->ia_size <= ip->i_size ||
299 (iattr->ia_size == 0 && ip->i_d.di_nextents)) {
305 code = xfs_itruncate_finish(&tp, ip, iattr->ia_size,
307 ((ip->i_d.di_nlink != 0 ||
320 xfs_iflags_set(ip, XFS_ITRUNCATED);
323 xfs_trans_ijoin(tp, ip);
336 if ((ip->i_d.di_mode & (S_ISUID|S_ISGID)) &&
338 ip->i_d.di_mode &= ~(S_ISUID|S_ISGID);
349 olddquot1 = xfs_qm_vop_chown(tp, ip,
350 &ip->i_udquot, udqp);
352 ip->i_d.di_uid = uid;
360 olddquot2 = xfs_qm_vop_chown(tp, ip,
361 &ip->i_gdquot, gdqp);
363 ip->i_d.di_gid = gid;
377 ip->i_d.di_mode &= S_IFMT;
378 ip->i_d.di_mode |= mode & ~S_IFMT;
389 ip->i_d.di_atime.t_sec = iattr->ia_atime.tv_sec;
390 ip->i_d.di_atime.t_nsec = iattr->ia_atime.tv_nsec;
391 ip->i_update_core = 1;
395 ip->i_d.di_ctime.t_sec = iattr->ia_ctime.tv_sec;
396 ip->i_d.di_ctime.t_nsec = iattr->ia_ctime.tv_nsec;
397 ip->i_update_core = 1;
401 ip->i_d.di_mtime.t_sec = iattr->ia_mtime.tv_sec;
402 ip->i_d.di_mtime.t_nsec = iattr->ia_mtime.tv_nsec;
403 ip->i_update_core = 1;
412 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
432 xfs_iunlock(ip, lock_flags);
462 xfs_iunlock(ip, lock_flags);
476 xfs_inode_t *ip,
479 xfs_mount_t *mp = ip->i_mount;
480 int pathlen = ip->i_d.di_size;
489 error = xfs_bmapi(NULL, ip, 0, XFS_B_TO_FSB(mp, pathlen), 0, NULL, 0,
503 ip->i_mount, bp, XFS_BUF_ADDR(bp));
515 link[ip->i_d.di_size] = '\0';
524 xfs_inode_t *ip,
527 xfs_mount_t *mp = ip->i_mount;
531 trace_xfs_readlink(ip);
536 xfs_ilock(ip, XFS_ILOCK_SHARED);
538 ASSERT((ip->i_d.di_mode & S_IFMT) == S_IFLNK);
539 ASSERT(ip->i_d.di_size <= MAXPATHLEN);
541 pathlen = ip->i_d.di_size;
545 if (ip->i_df.if_flags & XFS_IFINLINE) {
546 memcpy(link, ip->i_df.if_u1.if_data, pathlen);
549 error = xfs_readlink_bmap(ip, link);
553 xfs_iunlock(ip, XFS_ILOCK_SHARED);
570 xfs_inode_t *ip,
585 end_fsb = XFS_B_TO_FSB(mp, ((xfs_ufsize_t)ip->i_size));
592 xfs_ilock(ip, XFS_ILOCK_SHARED);
593 error = xfs_bmapi(NULL, ip, end_fsb, map_len, 0,
595 xfs_iunlock(ip, XFS_ILOCK_SHARED);
599 ip->i_delayed_blks)) {
603 error = xfs_qm_dqattach(ip, 0);
622 if (!xfs_ilock_nowait(ip, XFS_IOLOCK_EXCL)) {
627 xfs_ilock(ip, XFS_IOLOCK_EXCL);
629 error = xfs_itruncate_start(ip, XFS_ITRUNC_DEFINITE,
630 ip->i_size);
633 xfs_iunlock(ip, XFS_IOLOCK_EXCL);
644 xfs_iunlock(ip, XFS_IOLOCK_EXCL);
648 xfs_ilock(ip, XFS_ILOCK_EXCL);
649 xfs_trans_ijoin(tp, ip);
651 error = xfs_itruncate_finish(&tp, ip,
652 ip->i_size,
667 xfs_iunlock(ip, XFS_IOLOCK_EXCL|XFS_ILOCK_EXCL);
677 xfs_inode_t *ip,
695 mp = ip->i_mount;
696 ASSERT(ip->i_d.di_size > XFS_IFORK_DSIZE(ip));
704 ASSERT(ip->i_d.di_nextents > 0 && ip->i_d.di_nextents <= 2);
718 xfs_ilock(ip, XFS_IOLOCK_EXCL | XFS_ILOCK_EXCL);
719 size = (int)ip->i_d.di_size;
720 ip->i_d.di_size = 0;
721 xfs_trans_ijoin(tp, ip);
722 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
729 if ((error = xfs_bmapi(tp, ip, 0, XFS_B_TO_FSB(mp, size),
745 if ((error = xfs_bunmapi(tp, ip, 0, size, XFS_BMAPI_METADATA, nmaps,
765 xfs_trans_ijoin(tp, ip);
766 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
792 if (ip->i_df.if_bytes)
793 xfs_idata_realloc(ip, -ip->i_df.if_bytes, XFS_DATA_FORK);
794 ASSERT(ip->i_df.if_bytes == 0);
824 xfs_iunlock(ip, XFS_IOLOCK_EXCL | XFS_ILOCK_EXCL);
832 xfs_inode_t *ip,
837 ASSERT(ip->i_d.di_size <= XFS_IFORK_DSIZE(ip));
844 XFS_ITRUNCATE_LOG_RES(ip->i_mount),
853 xfs_ilock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL);
858 if (ip->i_df.if_bytes > 0) {
859 xfs_idata_realloc(ip,
860 -(ip->i_df.if_bytes),
862 ASSERT(ip->i_df.if_bytes == 0);
869 xfs_inode_t *ip,
876 ASSERT(xfs_isilocked(ip, XFS_IOLOCK_EXCL));
878 mp = ip->i_mount;
879 ASSERT(ip->i_d.di_forkoff != 0);
881 xfs_iunlock(ip, XFS_ILOCK_EXCL);
885 error = xfs_attr_inactive(ip);
897 xfs_ilock(ip, XFS_ILOCK_EXCL);
898 xfs_trans_ijoin(tp, ip);
899 xfs_idestroy_fork(ip, XFS_ATTR_FORK);
901 ASSERT(ip->i_d.di_anextents == 0);
911 xfs_iunlock(ip, XFS_IOLOCK_EXCL);
917 xfs_inode_t *ip)
919 xfs_mount_t *mp = ip->i_mount;
922 if (!S_ISREG(ip->i_d.di_mode) || (ip->i_d.di_mode == 0))
939 if ((ip->i_d.di_nlink == 0) && xfs_inode_is_filestream(ip))
940 xfs_filestream_deassociate(ip);
952 truncated = xfs_iflags_test_and_clear(ip, XFS_ITRUNCATED);
953 if (truncated && VN_DIRTY(VFS_I(ip)) && ip->i_delayed_blks > 0)
954 xfs_flush_pages(ip, 0, -1, XBF_ASYNC, FI_NONE);
957 if (ip->i_d.di_nlink != 0) {
958 if ((((ip->i_d.di_mode & S_IFMT) == S_IFREG) &&
959 ((ip->i_size > 0) || (VN_CACHED(VFS_I(ip)) > 0 ||
960 ip->i_delayed_blks > 0)) &&
961 (ip->i_df.if_flags & XFS_IFEXTENTS)) &&
962 (!(ip->i_d.di_flags &
973 error = xfs_free_eofblocks(mp, ip,
993 xfs_inode_t *ip)
1007 if (ip->i_d.di_mode == 0 || is_bad_inode(VFS_I(ip))) {
1008 ASSERT(ip->i_df.if_real_bytes == 0);
1009 ASSERT(ip->i_df.if_broot_bytes == 0);
1019 truncate = ((ip->i_d.di_nlink == 0) &&
1020 ((ip->i_d.di_size != 0) || (ip->i_size != 0) ||
1021 (ip->i_d.di_nextents > 0) || (ip->i_delayed_blks > 0)) &&
1022 ((ip->i_d.di_mode & S_IFMT) == S_IFREG));
1024 mp = ip->i_mount;
1032 if (ip->i_d.di_nlink != 0) {
1033 if ((((ip->i_d.di_mode & S_IFMT) == S_IFREG) &&
1034 ((ip->i_size > 0) || (VN_CACHED(VFS_I(ip)) > 0 ||
1035 ip->i_delayed_blks > 0)) &&
1036 (ip->i_df.if_flags & XFS_IFEXTENTS) &&
1037 (!(ip->i_d.di_flags &
1039 (ip->i_delayed_blks != 0)))) {
1040 error = xfs_free_eofblocks(mp, ip, 0);
1047 ASSERT(ip->i_d.di_nlink == 0);
1049 error = xfs_qm_dqattach(ip, 0);
1061 xfs_ilock(ip, XFS_IOLOCK_EXCL);
1063 error = xfs_itruncate_start(ip, XFS_ITRUNC_DEFINITE, 0);
1066 xfs_iunlock(ip, XFS_IOLOCK_EXCL);
1078 xfs_iunlock(ip, XFS_IOLOCK_EXCL);
1082 xfs_ilock(ip, XFS_ILOCK_EXCL);
1083 xfs_trans_ijoin(tp, ip);
1092 error = xfs_itruncate_finish(&tp, ip, 0, XFS_DATA_FORK,
1098 xfs_iunlock(ip, XFS_IOLOCK_EXCL | XFS_ILOCK_EXCL);
1101 } else if ((ip->i_d.di_mode & S_IFMT) == S_IFLNK) {
1107 error = (ip->i_d.di_size > XFS_IFORK_DSIZE(ip)) ?
1108 xfs_inactive_symlink_rmt(ip, &tp) :
1109 xfs_inactive_symlink_local(ip, &tp);
1116 xfs_trans_ijoin(tp, ip);
1128 xfs_ilock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL);
1129 xfs_trans_ijoin(tp, ip);
1139 if (ip->i_d.di_anextents > 0) {
1140 error = xfs_inactive_attrs(ip, &tp);
1147 } else if (ip->i_afp) {
1148 xfs_idestroy_fork(ip, XFS_ATTR_FORK);
1155 error = xfs_ifree(tp, ip, &free_list);
1173 xfs_trans_mod_dquot_byino(tp, ip, XFS_TRANS_DQ_ICOUNT, -1);
1193 xfs_qm_dqdetach(ip);
1194 xfs_iunlock(ip, XFS_IOLOCK_EXCL | XFS_ILOCK_EXCL);
1254 struct xfs_inode *ip = NULL;
1357 prid, resblks > 0, &ip, &committed);
1368 ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL));
1380 error = xfs_dir_createname(tp, dp, name, ip->i_ino,
1391 error = xfs_dir_init(tp, ip, dp);
1413 xfs_qm_vop_create_dqattach(tp, ip, udqp, gdqp);
1420 IHOLD(ip);
1428 IRELE(ip);
1435 *ipp = ip;
1462 IRELE(ip);
1652 xfs_inode_t *ip)
1656 int is_dir = S_ISDIR(ip->i_d.di_mode);
1675 error = xfs_qm_dqattach(ip, 0);
1711 xfs_lock_two_inodes(dp, ip, XFS_ILOCK_EXCL);
1714 xfs_trans_ijoin_ref(tp, ip, XFS_ILOCK_EXCL);
1720 ASSERT(ip->i_d.di_nlink >= 2);
1721 if (ip->i_d.di_nlink != 2) {
1725 if (!xfs_dir_isempty(ip)) {
1732 error = xfs_dir_removename(tp, dp, name, ip->i_ino,
1742 * Drop the link from ip's "..".
1749 * Drop the "." link from ip to self.
1751 error = xfs_droplink(tp, ip);
1764 * Drop the link from dp to ip.
1766 error = xfs_droplink(tp, ip);
1774 link_zero = (ip->i_d.di_nlink == 0);
1798 if (!is_dir && link_zero && xfs_inode_is_filestream(ip))
1799 xfs_filestream_deassociate(ip);
1934 xfs_inode_t *ip;
1957 ip = NULL;
2043 1, 0, credp, prid, resblks > 0, &ip, NULL);
2061 xfs_qm_vop_create_dqattach(tp, ip, udqp, gdqp);
2068 if (pathlen <= XFS_IFORK_DSIZE(ip)) {
2069 xfs_idata_realloc(ip, pathlen, XFS_DATA_FORK);
2070 memcpy(ip->i_df.if_u1.if_data, target_path, pathlen);
2071 ip->i_d.di_size = pathlen;
2076 ip->i_df.if_flags &= ~(XFS_IFEXTENTS | XFS_IFBROOT);
2077 ip->i_df.if_flags |= XFS_IFINLINE;
2079 ip->i_d.di_format = XFS_DINODE_FMT_LOCAL;
2080 xfs_trans_log_inode(tp, ip, XFS_ILOG_DDATA | XFS_ILOG_CORE);
2086 error = xfs_bmapi(tp, ip, first_fsb, fs_blocks,
2096 ip->i_d.di_size = pathlen;
2097 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
2121 error = xfs_dir_createname(tp, dp, link_name, ip->i_ino,
2142 IHOLD(ip);
2152 *ipp = ip;
2156 IRELE(ip);
2173 xfs_inode_t *ip,
2177 xfs_mount_t *mp = ip->i_mount;
2193 xfs_ilock(ip, XFS_ILOCK_EXCL);
2194 xfs_trans_ijoin_ref(tp, ip, XFS_ILOCK_EXCL);
2196 ip->i_d.di_dmevmask = evmask;
2197 ip->i_d.di_dmstate = state;
2199 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
2226 xfs_inode_t *ip,
2232 xfs_mount_t *mp = ip->i_mount;
2250 trace_xfs_alloc_file_space(ip);
2255 error = xfs_qm_dqattach(ip, 0);
2262 rt = XFS_IS_REALTIME_INODE(ip);
2263 extsz = xfs_get_extsz_hint(ip);
2333 xfs_ilock(ip, XFS_ILOCK_EXCL);
2334 error = xfs_trans_reserve_quota_nblks(tp, ip, qblocks,
2339 xfs_trans_ijoin(tp, ip);
2345 error = xfs_bmapi(tp, ip, startoffset_fsb,
2362 xfs_iunlock(ip, XFS_ILOCK_EXCL);
2382 xfs_trans_unreserve_quota_nblks(tp, ip, qblocks, 0, quota_flag);
2386 xfs_iunlock(ip, XFS_ILOCK_EXCL);
2403 xfs_inode_t *ip,
2412 xfs_mount_t *mp = ip->i_mount;
2421 if (startoff >= ip->i_size)
2424 if (endoff > ip->i_size)
2425 endoff = ip->i_size;
2428 XFS_IS_REALTIME_INODE(ip) ?
2436 error = xfs_bmapi(NULL, ip, offset_fsb, 1, 0,
2453 XFS_BUF_SET_ADDR(bp, xfs_fsb_to_db(ip, imap.br_startblock));
2493 xfs_inode_t *ip,
2516 mp = ip->i_mount;
2518 trace_xfs_free_file_space(ip);
2520 error = xfs_qm_dqattach(ip, 0);
2527 rt = XFS_IS_REALTIME_INODE(ip);
2534 xfs_ilock(ip, XFS_IOLOCK_EXCL);
2536 xfs_ioend_wait(ip);
2542 if (VN_CACHED(VFS_I(ip)) != 0) {
2543 error = xfs_flushinval_pages(ip, ioffset, -1, FI_REMAPF_LOCKED);
2556 error = xfs_bmapi(NULL, ip, startoffset_fsb,
2571 error = xfs_bmapi(NULL, ip, endoffset_fsb - 1,
2587 error = xfs_zero_remaining_bytes(ip, offset, offset + len - 1);
2593 error = xfs_zero_remaining_bytes(ip, offset,
2597 error = xfs_zero_remaining_bytes(ip,
2633 xfs_ilock(ip, XFS_ILOCK_EXCL);
2635 ip->i_udquot, ip->i_gdquot,
2640 xfs_trans_ijoin(tp, ip);
2646 error = xfs_bunmapi(tp, ip, startoffset_fsb,
2662 xfs_iunlock(ip, XFS_ILOCK_EXCL);
2667 xfs_iunlock(ip, XFS_IOLOCK_EXCL);
2674 xfs_iunlock(ip, need_iolock ? (XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL) :
2692 xfs_inode_t *ip,
2698 xfs_mount_t *mp = ip->i_mount;
2708 if (!S_ISREG(ip->i_d.di_mode))
2718 bf->l_start += ip->i_size;
2735 fsize = ip->i_size;
2753 error = xfs_alloc_file_space(ip, startoffset, bf->l_len,
2762 if ((error = xfs_free_file_space(ip, startoffset, bf->l_len,
2772 error = xfs_alloc_file_space(ip, fsize,
2781 error = xfs_setattr(ip, &iattr, attr_flags);
2806 xfs_ilock(ip, XFS_ILOCK_EXCL);
2808 xfs_trans_ijoin(tp, ip);
2811 ip->i_d.di_mode &= ~S_ISUID;
2820 if (ip->i_d.di_mode & S_IXGRP)
2821 ip->i_d.di_mode &= ~S_ISGID;
2823 xfs_ichgtime(ip, XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG);
2826 ip->i_d.di_flags |= XFS_DIFLAG_PREALLOC;
2828 ip->i_d.di_flags &= ~XFS_DIFLAG_PREALLOC;
2830 xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
2835 xfs_iunlock(ip, XFS_ILOCK_EXCL);