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

Lines Matching defs:dn

811 static void ceph_set_dentry_offset(struct dentry *dn)
813 struct dentry *dir = dn->d_parent;
814 struct inode *inode = dn->d_parent->d_inode;
819 di = ceph_dentry(dn);
830 spin_lock(&dn->d_lock);
831 list_move(&dn->d_u.d_child, &dir->d_subdirs);
832 dout("set_dentry_offset %p %lld (%p %p)\n", dn, di->offset,
833 dn->d_u.d_child.prev, dn->d_u.d_child.next);
834 spin_unlock(&dn->d_lock);
846 static struct dentry *splice_dentry(struct dentry *dn, struct inode *in,
851 BUG_ON(dn->d_inode);
853 /* dn must be unhashed */
854 if (!d_unhashed(dn))
855 d_drop(dn);
856 realdn = d_materialise_unique(dn, in);
859 PTR_ERR(realdn), dn, in, ceph_vinop(in));
862 dn = realdn; /* note realdn contains the error */
865 dout("dn %p (%d) spliced with %p (%d) "
867 dn, atomic_read(&dn->d_count),
870 dput(dn);
871 dn = realdn;
873 BUG_ON(!ceph_dentry(dn));
874 dout("dn %p attached to %p ino %llx.%llx\n",
875 dn, dn->d_inode, ceph_vinop(dn->d_inode));
877 if ((!prehash || *prehash) && d_unhashed(dn))
878 d_rehash(dn);
880 ceph_set_dentry_offset(dn);
882 return dn;
942 struct dentry *dn = req->r_dentry;
945 BUG_ON(!dn);
947 BUG_ON(dn->d_parent->d_inode != dir);
958 /* do we have a dn lease? */
972 dn, dn->d_name.len, dn->d_name.name);
974 req->r_old_dentry, dn);
979 d_move(req->r_old_dentry, dn);
984 dn, dn->d_name.len, dn->d_name.name);
988 ceph_invalidate_dentry_lease(dn);
991 dout("dn %p gets %p offset %lld (old offset %lld)\n",
992 req->r_old_dentry, dn, ceph_dentry(dn)->offset,
995 ceph_dentry(dn)->offset;
997 dn = req->r_old_dentry; /* use old_dentry */
998 in = dn->d_inode;
1004 if (dn->d_inode) {
1005 dout("d_delete %p\n", dn);
1006 d_delete(dn);
1008 dout("d_instantiate %p NULL\n", dn);
1009 d_instantiate(dn, NULL);
1010 if (have_lease && d_unhashed(dn))
1011 d_rehash(dn);
1012 update_dentry_lease(dn, rinfo->dlease,
1023 if (!dn->d_inode) {
1029 d_delete(dn);
1032 dn = splice_dentry(dn, in, &have_lease, true);
1033 if (IS_ERR(dn)) {
1034 err = PTR_ERR(dn);
1037 req->r_dentry = dn; /* may have spliced */
1044 dn, in, ceph_ino(in), ceph_snap(in),
1051 update_dentry_lease(dn, rinfo->dlease, session,
1053 dout(" final dn %p\n", dn);
1057 struct dentry *dn = req->r_dentry;
1060 BUG_ON(!dn);
1071 d_delete(dn);
1074 dout(" linking snapped dir %p to dn %p\n", in, dn);
1075 dn = splice_dentry(dn, in, NULL, true);
1076 if (IS_ERR(dn)) {
1077 err = PTR_ERR(dn);
1080 req->r_dentry = dn; /* may have spliced */
1126 struct dentry *dn;
1137 dout("readdir_prepopulate %d items under SNAPDIR dn %p\n",
1140 dout("readdir_prepopulate %d items under dn %p\n",
1157 dn = d_lookup(parent, &dname);
1159 parent, dname.len, dname.name, dn);
1161 if (!dn) {
1162 dn = d_alloc(parent, &dname);
1164 dname.len, dname.name, dn);
1165 if (dn == NULL) {
1170 err = ceph_init_dentry(dn);
1172 dput(dn);
1175 } else if (dn->d_inode &&
1176 (ceph_ino(dn->d_inode) != vino.ino ||
1177 ceph_snap(dn->d_inode) != vino.snap)) {
1178 dout(" dn %p points to wrong inode %p\n",
1179 dn, dn->d_inode);
1180 d_delete(dn);
1181 dput(dn);
1186 spin_lock(&dn->d_lock);
1187 list_move(&dn->d_u.d_child, &parent->d_subdirs);
1188 spin_unlock(&dn->d_lock);
1192 di = dn->d_fsdata;
1196 if (dn->d_inode) {
1197 in = dn->d_inode;
1202 d_delete(dn);
1203 dput(dn);
1207 dn = splice_dentry(dn, in, NULL, false);
1208 if (IS_ERR(dn))
1209 dn = NULL;
1218 if (dn)
1219 update_dentry_lease(dn, rinfo->dir_dlease[i],
1223 if (dn)
1224 dput(dn);