diff options
author | Sage Weil <sage@newdream.net> | 2012-01-03 08:20:40 -0800 |
---|---|---|
committer | Sage Weil <sage@newdream.net> | 2012-01-10 08:57:00 -0800 |
commit | ee6b1baf67591b6d7ce1a6a07544343433d5ec9e (patch) | |
tree | 8aac5a6a2172d84d4188fe97bf3fe84aa558dc75 | |
parent | b8cd952b51034ad9f20ca147507ee68dc641c98c (diff) | |
download | linux-ee6b1baf67591b6d7ce1a6a07544343433d5ec9e.tar.gz linux-ee6b1baf67591b6d7ce1a6a07544343433d5ec9e.tar.bz2 linux-ee6b1baf67591b6d7ce1a6a07544343433d5ec9e.zip |
ceph: avoid useless dget/dput in encode_fh
Nothing we do here sleeps, so just do it under d_lock and avoid the dget/
dput entirely.
Reported-by: Al Viro <viro@ZenIV.linux.org.uk>
Signed-off-by: Sage Weil <sage@newdream.net>
-rw-r--r-- | fs/ceph/export.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/fs/ceph/export.c b/fs/ceph/export.c index 9fbcdecaaccd..fbb2a643ef10 100644 --- a/fs/ceph/export.c +++ b/fs/ceph/export.c @@ -56,9 +56,7 @@ static int ceph_encode_fh(struct dentry *dentry, u32 *rawfh, int *max_len, return -EINVAL; spin_lock(&dentry->d_lock); - parent = dget(dentry->d_parent); - spin_unlock(&dentry->d_lock); - + parent = dentry->d_parent; if (*max_len >= connected_handle_length) { dout("encode_fh %p connectable\n", dentry); cfh->ino = ceph_ino(dentry->d_inode); @@ -81,7 +79,7 @@ static int ceph_encode_fh(struct dentry *dentry, u32 *rawfh, int *max_len, *max_len = handle_length; type = 255; } - dput(parent); + spin_unlock(&dentry->d_lock); return type; } |