+++ /dev/null
-#ifndef CEPH_CLIENT_DENTRY_H
-#define CEPH_CLIENT_DENTRY_H
-
-#include "include/lru.h"
-#include "include/xlist.h"
-
-#include "mds/mdstypes.h"
-#include "InodeRef.h"
-
-class Dir;
-struct Inode;
-
-class Dentry : public LRUObject {
- public:
- string name; // sort of lame
- //const char *name;
- Dir *dir;
- InodeRef inode;
- int ref; // 1 if there's a dir beneath me.
- int64_t offset;
- mds_rank_t lease_mds;
- utime_t lease_ttl;
- uint64_t lease_gen;
- ceph_seq_t lease_seq;
- int cap_shared_gen;
-
- /*
- * ref==1 -> cached, unused
- * ref >1 -> pinned in lru
- */
- void get() {
- assert(ref > 0);
- if (++ref == 2)
- lru_pin();
- //cout << "dentry.get on " << this << " " << name << " now " << ref << std::endl;
- }
- void put() {
- assert(ref > 0);
- if (--ref == 1)
- lru_unpin();
- //cout << "dentry.put on " << this << " " << name << " now " << ref << std::endl;
- if (ref == 0)
- delete this;
- }
-
- void dump(Formatter *f) const;
-
- Dentry() :
- dir(0), ref(1), offset(0),
- lease_mds(-1), lease_gen(0), lease_seq(0), cap_shared_gen(0)
- { }
-private:
- ~Dentry() {
- assert(ref == 0);
- }
-};
-
-
-
-
-
-#endif