From 764fc987629f0118059781d44c48f6fd9b193439 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Sun, 10 Oct 2010 05:36:29 -0400 Subject: [PATCH] --- yaml --- r: 217814 b: refs/heads/master c: be9eee2e8b87e335531a3ae13abb8d26e834c438 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/smbfs/dir.c | 16 +++++----------- trunk/fs/smbfs/proc.c | 10 +++------- 3 files changed, 9 insertions(+), 19 deletions(-) diff --git a/[refs] b/[refs] index 02cfdc0e2b05..344a9eefc441 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0461ee2616252f1f6cec628990fa913a4282dcf7 +refs/heads/master: be9eee2e8b87e335531a3ae13abb8d26e834c438 diff --git a/trunk/fs/smbfs/dir.c b/trunk/fs/smbfs/dir.c index 00a70cab1f36..f678d421e541 100644 --- a/trunk/fs/smbfs/dir.c +++ b/trunk/fs/smbfs/dir.c @@ -406,21 +406,15 @@ void smb_renew_times(struct dentry * dentry) { dget(dentry); - spin_lock(&dentry->d_lock); - for (;;) { - struct dentry *parent; + dentry->d_time = jiffies; - dentry->d_time = jiffies; - if (IS_ROOT(dentry)) - break; - parent = dentry->d_parent; - dget(parent); - spin_unlock(&dentry->d_lock); + while (!IS_ROOT(dentry)) { + struct dentry *parent = dget_parent(dentry); dput(dentry); dentry = parent; - spin_lock(&dentry->d_lock); + + dentry->d_time = jiffies; } - spin_unlock(&dentry->d_lock); dput(dentry); } diff --git a/trunk/fs/smbfs/proc.c b/trunk/fs/smbfs/proc.c index 71c29b6670b4..3dcf638d4d3a 100644 --- a/trunk/fs/smbfs/proc.c +++ b/trunk/fs/smbfs/proc.c @@ -332,16 +332,15 @@ static int smb_build_path(struct smb_sb_info *server, unsigned char *buf, * and store it in reversed order [see reverse_string()] */ dget(entry); - spin_lock(&entry->d_lock); while (!IS_ROOT(entry)) { struct dentry *parent; if (maxlen < (3<d_lock); dput(entry); return -ENAMETOOLONG; } + spin_lock(&entry->d_lock); len = server->ops->convert(path, maxlen-2, entry->d_name.name, entry->d_name.len, server->local_nls, server->remote_nls); @@ -359,15 +358,12 @@ static int smb_build_path(struct smb_sb_info *server, unsigned char *buf, } *path++ = '\\'; maxlen -= len+1; - - parent = entry->d_parent; - dget(parent); spin_unlock(&entry->d_lock); + + parent = dget_parent(entry); dput(entry); entry = parent; - spin_lock(&entry->d_lock); } - spin_unlock(&entry->d_lock); dput(entry); reverse_string(buf, path-buf);