Lines Matching refs:dn

1101 static struct dentry *splice_dentry(struct dentry *dn, struct inode *in)  in splice_dentry()  argument
1105 BUG_ON(d_inode(dn)); in splice_dentry()
1129 if (!d_unhashed(dn)) in splice_dentry()
1130 d_drop(dn); in splice_dentry()
1131 realdn = d_splice_alias(in, dn); in splice_dentry()
1134 PTR_ERR(realdn), dn, in, ceph_vinop(in)); in splice_dentry()
1135 dput(dn); in splice_dentry()
1136 dn = realdn; /* note realdn contains the error */ in splice_dentry()
1141 dn, d_count(dn), in splice_dentry()
1144 dput(dn); in splice_dentry()
1145 dn = realdn; in splice_dentry()
1147 BUG_ON(!ceph_dentry(dn)); in splice_dentry()
1149 dn, d_inode(dn), ceph_vinop(d_inode(dn))); in splice_dentry()
1152 return dn; in splice_dentry()
1201 struct dentry *dn, *parent; in ceph_fill_trace() local
1215 dn = d_lookup(parent, &dname); in ceph_fill_trace()
1217 parent, dname.len, dname.name, dn); in ceph_fill_trace()
1219 if (!dn) { in ceph_fill_trace()
1220 dn = d_alloc(parent, &dname); in ceph_fill_trace()
1222 dname.len, dname.name, dn); in ceph_fill_trace()
1223 if (!dn) { in ceph_fill_trace()
1229 } else if (d_really_is_positive(dn) && in ceph_fill_trace()
1230 (ceph_ino(d_inode(dn)) != tvino.ino || in ceph_fill_trace()
1231 ceph_snap(d_inode(dn)) != tvino.snap)) { in ceph_fill_trace()
1233 dn, d_inode(dn)); in ceph_fill_trace()
1235 d_delete(dn); in ceph_fill_trace()
1236 dput(dn); in ceph_fill_trace()
1240 req->r_dentry = dn; in ceph_fill_trace()
1284 struct dentry *dn = req->r_dentry; in ceph_fill_trace() local
1287 BUG_ON(!dn); in ceph_fill_trace()
1289 BUG_ON(d_inode(dn->d_parent) != dir); in ceph_fill_trace()
1316 dn, dn); in ceph_fill_trace()
1318 req->r_old_dentry, dn); in ceph_fill_trace()
1324 d_move(req->r_old_dentry, dn); in ceph_fill_trace()
1328 dn, dn); in ceph_fill_trace()
1332 ceph_invalidate_dentry_lease(dn); in ceph_fill_trace()
1337 dn = req->r_old_dentry; /* use old_dentry */ in ceph_fill_trace()
1343 if (d_really_is_positive(dn)) { in ceph_fill_trace()
1344 dout("d_delete %p\n", dn); in ceph_fill_trace()
1346 d_delete(dn); in ceph_fill_trace()
1348 if (d_unhashed(dn)) in ceph_fill_trace()
1349 d_add(dn, NULL); in ceph_fill_trace()
1350 update_dentry_lease(dn, rinfo->dlease, in ceph_fill_trace()
1359 if (d_really_is_negative(dn)) { in ceph_fill_trace()
1362 dn = splice_dentry(dn, in); in ceph_fill_trace()
1363 if (IS_ERR(dn)) { in ceph_fill_trace()
1364 err = PTR_ERR(dn); in ceph_fill_trace()
1367 req->r_dentry = dn; /* may have spliced */ in ceph_fill_trace()
1368 } else if (d_really_is_positive(dn) && d_inode(dn) != in) { in ceph_fill_trace()
1370 dn, d_inode(dn), ceph_vinop(d_inode(dn)), in ceph_fill_trace()
1372 d_invalidate(dn); in ceph_fill_trace()
1379 update_dentry_lease(dn, rinfo->dlease, session, in ceph_fill_trace()
1383 dout(" final dn %p\n", dn); in ceph_fill_trace()
1387 struct dentry *dn = req->r_dentry; in ceph_fill_trace() local
1391 BUG_ON(!dn); in ceph_fill_trace()
1394 dout(" linking snapped dir %p to dn %p\n", in, dn); in ceph_fill_trace()
1397 dn = splice_dentry(dn, in); in ceph_fill_trace()
1398 if (IS_ERR(dn)) { in ceph_fill_trace()
1399 err = PTR_ERR(dn); in ceph_fill_trace()
1402 req->r_dentry = dn; /* may have spliced */ in ceph_fill_trace()
1475 static int fill_readdir_cache(struct inode *dir, struct dentry *dn, in fill_readdir_cache() argument
1504 dout("readdir cache dn %p idx %d\n", dn, ctl->index); in fill_readdir_cache()
1505 ctl->dentries[idx] = dn; in fill_readdir_cache()
1521 struct dentry *dn; in ceph_readdir_prepopulate() local
1605 dn = d_lookup(parent, &dname); in ceph_readdir_prepopulate()
1607 parent, dname.len, dname.name, dn); in ceph_readdir_prepopulate()
1609 if (!dn) { in ceph_readdir_prepopulate()
1610 dn = d_alloc(parent, &dname); in ceph_readdir_prepopulate()
1612 dname.len, dname.name, dn); in ceph_readdir_prepopulate()
1613 if (!dn) { in ceph_readdir_prepopulate()
1618 } else if (d_really_is_positive(dn) && in ceph_readdir_prepopulate()
1619 (ceph_ino(d_inode(dn)) != tvino.ino || in ceph_readdir_prepopulate()
1620 ceph_snap(d_inode(dn)) != tvino.snap)) { in ceph_readdir_prepopulate()
1621 struct ceph_dentry_info *di = ceph_dentry(dn); in ceph_readdir_prepopulate()
1623 dn, d_inode(dn)); in ceph_readdir_prepopulate()
1625 spin_lock(&dn->d_lock); in ceph_readdir_prepopulate()
1632 spin_unlock(&dn->d_lock); in ceph_readdir_prepopulate()
1634 d_delete(dn); in ceph_readdir_prepopulate()
1635 dput(dn); in ceph_readdir_prepopulate()
1640 if (d_really_is_positive(dn)) { in ceph_readdir_prepopulate()
1641 in = d_inode(dn); in ceph_readdir_prepopulate()
1646 d_drop(dn); in ceph_readdir_prepopulate()
1647 dput(dn); in ceph_readdir_prepopulate()
1658 if (d_really_is_negative(dn)) in ceph_readdir_prepopulate()
1660 d_drop(dn); in ceph_readdir_prepopulate()
1665 if (d_really_is_negative(dn)) { in ceph_readdir_prepopulate()
1670 " (security xattr deadlock)\n", dn, in); in ceph_readdir_prepopulate()
1676 realdn = splice_dentry(dn, in); in ceph_readdir_prepopulate()
1679 d_drop(dn); in ceph_readdir_prepopulate()
1680 dn = NULL; in ceph_readdir_prepopulate()
1683 dn = realdn; in ceph_readdir_prepopulate()
1686 ceph_dentry(dn)->offset = rde->offset; in ceph_readdir_prepopulate()
1689 update_dentry_lease(dn, rde->lease, req->r_session, in ceph_readdir_prepopulate()
1693 ret = fill_readdir_cache(d_inode(parent), dn, in ceph_readdir_prepopulate()
1699 if (dn) in ceph_readdir_prepopulate()
1700 dput(dn); in ceph_readdir_prepopulate()