Lines Matching refs:dip

170 	struct xfs_dinode	*dip = xfs_buf_offset(bp, ioffset);
178 agino = be32_to_cpu(dip->di_next_unlinked);
183 if (dip->di_magic == cpu_to_be16(XFS_DINODE_MAGIC) &&
184 xfs_dinode_good_version(mp, dip->di_version))
187 if (xfs_verify_cksum((char *)dip, mp->m_sb.sb_inodesize,
195 dip->di_magic = cpu_to_be16(XFS_DINODE_MAGIC);
196 dip->di_version = 3;
199 dip->di_next_unlinked = cpu_to_be32(NULLAGINO);
200 xfs_dinode_calc_crc(mp, dip);
225 struct xfs_dinode *dip)
227 trace_xrep_dinode_header(sc, dip);
229 dip->di_magic = cpu_to_be16(XFS_DINODE_MAGIC);
230 if (!xfs_dinode_good_version(sc->mp, dip->di_version))
231 dip->di_version = 3;
232 dip->di_ino = cpu_to_be64(sc->sm->sm_ino);
233 uuid_copy(&dip->di_uuid, &sc->mp->m_sb.sb_meta_uuid);
234 dip->di_gen = cpu_to_be32(sc->sm->sm_gen);
430 struct xfs_dinode *dip)
433 uint16_t mode = be16_to_cpu(dip->di_mode);
436 trace_xrep_dinode_mode(sc, dip);
459 dip->di_mode = cpu_to_be16(mode);
460 dip->di_uid = 0;
461 dip->di_gid = 0;
470 struct xfs_dinode *dip,
474 uint64_t flags2 = be64_to_cpu(dip->di_flags2);
475 uint16_t flags = be16_to_cpu(dip->di_flags);
476 uint16_t mode = be16_to_cpu(dip->di_mode);
478 trace_xrep_dinode_flags(sc, dip);
501 dip->di_nrext64_pad = 0;
502 else if (dip->di_version >= 3)
503 dip->di_v3_pad = 0;
504 dip->di_flags = cpu_to_be16(flags);
505 dip->di_flags2 = cpu_to_be64(flags2);
515 struct xfs_dinode *dip)
520 trace_xrep_dinode_zap_symlink(sc, dip);
522 dip->di_format = XFS_DINODE_FMT_LOCAL;
523 dip->di_size = cpu_to_be64(1);
524 p = XFS_DFORK_PTR(dip, XFS_DATA_FORK);
538 struct xfs_dinode *dip)
545 trace_xrep_dinode_zap_dir(sc, dip);
547 dip->di_format = XFS_DINODE_FMT_LOCAL;
549 sfp = XFS_DFORK_PTR(dip, XFS_DATA_FORK);
553 dip->di_size = cpu_to_be64(xfs_dir2_sf_hdr_size(i8count));
561 struct xfs_dinode *dip)
564 uint64_t size = be64_to_cpu(dip->di_size);
565 uint16_t mode = be16_to_cpu(dip->di_mode);
567 trace_xrep_dinode_size(sc, dip);
575 dip->di_size = 0;
579 dip->di_size = cpu_to_be64(size & ~(1ULL << 63));
589 dip->di_size = cpu_to_be64(XFS_SYMLINK_MAXLEN);
591 xrep_dinode_zap_symlink(ri, dip);
601 dip->di_size = cpu_to_be64(XFS_DIR2_SPACE_SIZE);
603 xrep_dinode_zap_dir(ri, dip);
612 struct xfs_dinode *dip)
615 uint64_t flags2 = be64_to_cpu(dip->di_flags2);
616 uint16_t flags = be16_to_cpu(dip->di_flags);
617 uint16_t mode = be16_to_cpu(dip->di_mode);
621 trace_xrep_dinode_extsize_hints(sc, dip);
623 fa = xfs_inode_validate_extsize(mp, be32_to_cpu(dip->di_extsize),
626 dip->di_extsize = 0;
627 dip->di_flags &= ~cpu_to_be16(XFS_DIFLAG_EXTSIZE |
631 if (dip->di_version < 3)
634 fa = xfs_inode_validate_cowextsize(mp, be32_to_cpu(dip->di_cowextsize),
637 dip->di_cowextsize = 0;
638 dip->di_flags2 &= ~cpu_to_be64(XFS_DIFLAG2_COWEXTSIZE);
729 struct xfs_dinode *dip,
739 nex = xfs_dfork_nextents(dip, whichfork);
743 dp = XFS_DFORK_PTR(dip, whichfork);
745 isrt = dip->di_flags & cpu_to_be16(XFS_DIFLAG_REALTIME);
763 struct xfs_dinode *dip,
774 nex = xfs_dfork_nextents(dip, whichfork);
781 dfp = XFS_DFORK_PTR(dip, whichfork);
818 struct xfs_dinode *dip,
830 data_size = be64_to_cpu(dip->di_size);
834 fmt = XFS_DFORK_FORMAT(dip, XFS_DATA_FORK);
862 dfork_size = XFS_DFORK_SIZE(dip, sc->mp, XFS_DATA_FORK);
863 dfork_ptr = XFS_DFORK_PTR(dip, XFS_DATA_FORK);
882 if (xrep_dinode_bad_extents_fork(sc, dip, dfork_size,
887 if (xrep_dinode_bad_bmbt_fork(sc, dip, dfork_size,
900 struct xfs_dinode *dip,
903 if (xfs_dinode_has_large_extent_counts(dip))
904 dip->di_big_nextents = cpu_to_be64(nextents);
906 dip->di_nextents = cpu_to_be32(nextents);
911 struct xfs_dinode *dip,
914 if (xfs_dinode_has_large_extent_counts(dip))
915 dip->di_big_anextents = cpu_to_be32(nextents);
917 dip->di_anextents = cpu_to_be16(nextents);
924 struct xfs_dinode *dip,
929 trace_xrep_dinode_zap_dfork(sc, dip);
933 xrep_dinode_set_data_nextents(dip, 0);
943 dip->di_format = XFS_DINODE_FMT_DEV;
944 dip->di_size = 0;
953 dip->di_format = XFS_DINODE_FMT_EXTENTS;
960 xrep_dinode_zap_symlink(ri, dip);
963 xrep_dinode_zap_dir(ri, dip);
975 struct xfs_dinode *dip)
981 if (XFS_DFORK_BOFF(dip) == 0)
982 return dip->di_aformat != XFS_DINODE_FMT_EXTENTS ||
983 xfs_dfork_attr_extents(dip) != 0;
985 afork_size = XFS_DFORK_SIZE(dip, sc->mp, XFS_ATTR_FORK);
986 afork_ptr = XFS_DFORK_PTR(dip, XFS_ATTR_FORK);
988 switch (XFS_DFORK_FORMAT(dip, XFS_ATTR_FORK)) {
1002 if (xrep_dinode_bad_extents_fork(sc, dip, afork_size,
1007 if (xrep_dinode_bad_bmbt_fork(sc, dip, afork_size,
1025 struct xfs_dinode *dip,
1030 trace_xrep_dinode_zap_afork(sc, dip);
1034 dip->di_aformat = XFS_DINODE_FMT_EXTENTS;
1035 xrep_dinode_set_attr_nextents(dip, 0);
1043 if (dip->di_format != XFS_DINODE_FMT_BTREE)
1044 dip->di_forkoff = 0;
1045 dip->di_mode = cpu_to_be16(mode & ~0777);
1046 dip->di_uid = 0;
1047 dip->di_gid = 0;
1054 struct xfs_dinode *dip,
1064 trace_xrep_dinode_ensure_forkoff(sc, dip);
1076 switch (dip->di_aformat) {
1083 afork_min = XFS_DFORK_SIZE(dip, sc->mp, XFS_ATTR_FORK);
1086 attr_extents = xfs_dfork_attr_extents(dip);
1111 bmdr = XFS_DFORK_PTR(dip, XFS_ATTR_FORK);
1121 switch (dip->di_format) {
1134 dfork_min = be64_to_cpu(dip->di_size);
1137 data_extents = xfs_dfork_data_extents(dip);
1161 bmdr = XFS_DFORK_PTR(dip, XFS_DATA_FORK);
1184 if (dip->di_format == XFS_DINODE_FMT_EXTENTS &&
1185 xfs_dfork_data_extents(dip) == 0 &&
1187 bmdr_minsz > XFS_DFORK_DSIZE(dip, sc->mp)) {
1193 xrep_dinode_zap_afork(ri, dip, mode);
1199 before = XFS_DFORK_APTR(dip);
1200 dip->di_forkoff = bmdr_minsz >> 3;
1201 after = XFS_DFORK_APTR(dip);
1202 memmove(after, before, XFS_DFORK_ASIZE(dip, sc->mp));
1210 if (dip->di_aformat == XFS_DINODE_FMT_EXTENTS &&
1211 xfs_dfork_attr_extents(dip) == 0 &&
1213 bmdr_minsz > XFS_DFORK_ASIZE(dip, sc->mp)) {
1214 if (dip->di_format == XFS_DINODE_FMT_BTREE) {
1225 xrep_dinode_zap_afork(ri, dip, mode);
1232 dip->di_forkoff = (lit_sz - bmdr_minsz) >> 3;
1245 struct xfs_dinode *dip)
1255 trace_xrep_dinode_zap_forks(sc, dip);
1257 mode = be16_to_cpu(dip->di_mode);
1259 data_extents = xfs_dfork_data_extents(dip);
1260 attr_extents = xfs_dfork_attr_extents(dip);
1261 nblocks = be64_to_cpu(dip->di_nblocks);
1272 zap_datafork = xrep_dinode_check_dfork(sc, dip, mode);
1274 zap_attrfork = xrep_dinode_check_afork(sc, dip);
1278 xrep_dinode_zap_afork(ri, dip, mode);
1280 xrep_dinode_zap_dfork(ri, dip, mode);
1281 xrep_dinode_ensure_forkoff(ri, dip, mode);
1287 data_extents = xfs_dfork_data_extents(dip);
1288 attr_extents = xfs_dfork_attr_extents(dip);
1290 dip->di_nblocks = 0;
1300 struct xfs_dinode *dip;
1322 dip = xfs_buf_offset(bp, ri->imap.im_boffset);
1323 xrep_dinode_header(sc, dip);
1324 iget_error = xrep_dinode_mode(ri, dip);
1327 xrep_dinode_flags(sc, dip, ri->rt_extents > 0);
1328 xrep_dinode_size(ri, dip);
1329 xrep_dinode_extsize_hints(sc, dip);
1330 xrep_dinode_zap_forks(ri, dip);
1334 trace_xrep_dinode_fixed(sc, dip);
1335 xfs_dinode_calc_crc(sc->mp, dip);