forked from luck/tmp_suning_uos_patched
ocfs2: Remove bug statement in ocfs2_dentry_iput()
The existing bug statement didn't take into account unhashed dentries which might not have a cluster lock on them. This could happen if a node exporting the file system via NFS is rebooted, re-exported to nfs clients and then unmounted. It's fine in this case to not have a dentry cluster lock. Just remove the bug statement and replace it with an error print, which does the proper checks. Though we want to know if something has happened which might have prevented a cluster lock from being created, it's definitely not necessary to panic the machine for this. Signed-off-by: Mark Fasheh <mark.fasheh@oracle.com>
This commit is contained in:
parent
5a58c3ef22
commit
bccb9dad89
|
@ -344,12 +344,24 @@ static void ocfs2_dentry_iput(struct dentry *dentry, struct inode *inode)
|
|||
{
|
||||
struct ocfs2_dentry_lock *dl = dentry->d_fsdata;
|
||||
|
||||
mlog_bug_on_msg(!dl && !(dentry->d_flags & DCACHE_DISCONNECTED),
|
||||
"dentry: %.*s\n", dentry->d_name.len,
|
||||
dentry->d_name.name);
|
||||
if (!dl) {
|
||||
/*
|
||||
* No dentry lock is ok if we're disconnected or
|
||||
* unhashed.
|
||||
*/
|
||||
if (!(dentry->d_flags & DCACHE_DISCONNECTED) &&
|
||||
!d_unhashed(dentry)) {
|
||||
unsigned long long ino = 0ULL;
|
||||
if (inode)
|
||||
ino = (unsigned long long)OCFS2_I(inode)->ip_blkno;
|
||||
mlog(ML_ERROR, "Dentry is missing cluster lock. "
|
||||
"inode: %llu, d_flags: 0x%x, d_name: %.*s\n",
|
||||
ino, dentry->d_flags, dentry->d_name.len,
|
||||
dentry->d_name.name);
|
||||
}
|
||||
|
||||
if (!dl)
|
||||
goto out;
|
||||
}
|
||||
|
||||
mlog_bug_on_msg(dl->dl_count == 0, "dentry: %.*s, count: %u\n",
|
||||
dentry->d_name.len, dentry->d_name.name,
|
||||
|
|
Loading…
Reference in New Issue
Block a user