[PVFS-users] IS_DEADDIR and pvfs_revalidate_inode
Christoph Biardzki
Christoph.Biardzki@lrz-muenchen.de
Tue, 13 Jan 2004 09:12:17 +0100
Hello,
I'm still looking into some trouble with metadata operations and the message
(dir.c, 651): DEAD directory detected going into pvfs_revalidate_inode.
(dir.c, 651): DEAD directory detected going into pvfs_revalidate_inode.
(dir.c, 651): DEAD directory detected going into pvfs_revalidate_inode.
(dir.c, 651): DEAD directory detected going into pvfs_revalidate_inode.
appearing on the PVFS clients during heavy metadata traffic.
In dir.c there is a corresponding line of code which uses the kernel
macro IS_DEADDIR to find out whether the directory entry has been
deleted. Could someone explain how error handling in this case works?
Does processing simply continue after the PERROR and why?
Regards,
Christoph
int pvfs_revalidate_inode(struct dentry *dentry)
{
int error = 0, len_dir, len_file;
struct inode *inode;
struct dentry *parent_dentry;
struct inode *parent_inode;
struct pvfs_inode *pinode, *parent_pinode = NULL;
struct pvfs_meta meta;
struct pvfs_phys phys;
pvfs_handle_t old_handle;
umode_t old_mode;
char *ptr;
/* update the statistics */
if(pvfs_collect_stats) pvfs_vfs_stat.revalidate++;
PENTRY;
lock_kernel();
inode = dentry->d_inode;
if (inode == NULL) {
PERROR("pvfs_revalidate_inode called for NULL inode\n");
unlock_kernel();
PEXIT;
return -EINVAL;
}
#ifdef IS_DEADDIR
if(IS_DEADDIR(dentry->d_inode))
{
PERROR("DEAD directory detected going into
pvfs_revalidate_inode.\n");
}
#endif
/* get the parent dentry and inode -- this should be optimized
later */
parent_dentry = dentry->d_parent;
if (parent_dentry == NULL) {
PERROR("pvfs_revalidate_inode: d_parent is NULL\n");
unlock_kernel();
PEXIT;
return -EINVAL;
}
--
Leibniz Rechenzentrum München (LRZ)
http://www.lrz.de
High Performance Systems Division
Barer Str. 21 - 80333 Munich - Germany
Tel. ++49-(0)89 / 289-28853, Room 1527