diff options
| author | Anand V. Avati <avati@blackhole.gluster.com> | 2009-10-18 13:35:14 +0000 | 
|---|---|---|
| committer | Anand V. Avati <avati@dev.gluster.com> | 2009-10-18 12:15:42 -0700 | 
| commit | 7e831d735e3746fa9e6ec2e797e1a7f68ac5c148 (patch) | |
| tree | b1d45d6cb1d8c683f976ff1e0c8a0531475acddc /libglusterfs/src/inode.h | |
| parent | b2c0c6c713a00631e658c7faafe51d0c941d65ef (diff) | |
inode: API changes for generation number support
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 315 (generation number support)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=315
Diffstat (limited to 'libglusterfs/src/inode.h')
| -rw-r--r-- | libglusterfs/src/inode.h | 71 | 
1 files changed, 34 insertions, 37 deletions
diff --git a/libglusterfs/src/inode.h b/libglusterfs/src/inode.h index a64573b9848..d1486ca3165 100644 --- a/libglusterfs/src/inode.h +++ b/libglusterfs/src/inode.h @@ -57,13 +57,17 @@ struct _inode_table {          uint32_t           lru_size;    /* count of inodes in lru list  */          struct list_head   purge;       /* list of inodes to be purged soon */          uint32_t           purge_size;  /* count of inodes in purge list */ + +        struct list_head   attic;       /* list of inodes which do not have the latest generation +                                           number. inode_t's @hash is linked with @attic. It is +                                           otherwise linked with @inode_hash */ +        uint32_t           attic_size;  };  struct _dentry {          struct list_head   inode_list;   /* list of dentries of inode */          struct list_head   hash;         /* hash table pointers */ -        struct list_head   parent_list;  /* list of dentries under the parent  */          inode_t           *inode;        /* inode of this directory entry */          char              *name;         /* name of the directory entry */          inode_t           *parent;       /* directory of the entry */ @@ -77,20 +81,20 @@ struct _inode_ctx {  };  struct _inode { -        inode_table_t    *table;         /* the table this inode belongs to */ -        gf_lock_t         lock; -        uint64_t          nlookup; -        uint64_t          generation; -        uint32_t          ref;           /* reference count on this inode */ -        ino_t             ino;           /* inode number in the storage (persistent) */ -        mode_t            st_mode;       /* what kind of file */ -        struct list_head  fd_list;       /* list of open files on this inode */ -        struct list_head  dentry_list;   /* list of directory entries for this inode */ -        struct list_head  child_list;    /* list of directory entries under this inode */ -        struct list_head  hash;          /* hash table pointers */ -        struct list_head  list;          /* active/lru/purge */ - -	struct _inode_ctx *_ctx;    /* replacement for dict_t *(inode->ctx) */ +        inode_table_t       *table;         /* the table this inode belongs to */ +        gf_lock_t            lock; +        uint64_t             nlookup; +        uint64_t             generation; +        uint32_t             in_attic;      /* whether @hash is linked with @inode_hash or @attic */ +        uint32_t             ref;           /* reference count on this inode */ +        ino_t                ino;           /* inode number in the storage (persistent) */ +        mode_t               st_mode;       /* what kind of file */ +        struct list_head     fd_list;       /* list of open files on this inode */ +        struct list_head     dentry_list;   /* list of directory entries for this inode */ +        struct list_head     hash;          /* hash table pointers */ +        struct list_head     list;          /* active/lru/purge */ + +	struct _inode_ctx   *_ctx;    /* replacement for dict_t *(inode->ctx) */  }; @@ -103,14 +107,12 @@ inode_new (inode_table_t *table);  inode_t *  inode_search (inode_table_t *table, ino_t ino, const char *name); -int +inode_t *  inode_link (inode_t *inode, inode_t *parent,              const char *name, struct stat *stbuf);  void -inode_unlink (inode_t *inode, -              inode_t *parent, -              const char *name); +inode_unlink (inode_t *inode, inode_t *parent, const char *name);  inode_t *  inode_parent (inode_t *inode, ino_t par, const char *name); @@ -125,32 +127,27 @@ int  inode_lookup (inode_t *inode);  int -inode_forget (inode_t *inode, -	      uint64_t nlookup); +inode_forget (inode_t *inode, uint64_t nlookup);  int -inode_rename (inode_table_t *table, -	      inode_t *olddir, -	      const char *oldname, -	      inode_t *newdir, -	      const char *newname, -	      inode_t *inode, -	      struct stat *stbuf); +inode_rename (inode_table_t *table, inode_t *olddir, const char *oldname, +	      inode_t *newdir, const char *newname, +	      inode_t *inode, struct stat *stbuf); +inode_t * +inode_grep (inode_table_t *table, inode_t *parent, const char *name); -int32_t -inode_path (inode_t *inode, -	    const char *name, -	    char **bufp); +inode_t * +inode_get (inode_table_t *table, ino_t ino, uint64_t gen); + +int +inode_path (inode_t *inode, const char *name, char **bufp);  inode_t * -inode_from_path (inode_table_t *table, -		 const char *path); +inode_from_path (inode_table_t *table, const char *path);  dentry_t * -dentry_search_for_inode (inode_t *inode, -                         ino_t par, -                         const char *name); +dentry_search_for_inode (inode_t *inode, ino_t par, const char *name);  int  __inode_ctx_put (inode_t *inode, xlator_t *xlator, uint64_t value);  | 
