From: Ian Kent <raven@themaw.net>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Kernel Mailing List <linux-kernel@vger.kernel.org>,
autofs mailing list <autofs@linux.kernel.org>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>,
Sage Weil <sage@newdream.net>, Al Viro <viro@ZenIV.linux.org.uk>,
Andreas Dilger <adilger@sun.com>,
Christoph Hellwig <hch@infradead.org>,
Yehuda Saheh <yehuda@newdream.net>
Subject: [PATCH 02/10] autofs4 - use macros for expiring list
Date: Thu, 01 Oct 2009 09:01:02 +0800 [thread overview]
Message-ID: <20091001010102.7675.55471.stgit@zeus.themaw.net> (raw)
In-Reply-To: <20091001010054.7675.77673.stgit@zeus.themaw.net>
Define some simple macro functions for adding and deleting entries
on the expiring dentry list.
Signed-off-by: Ian Kent <raven@themaw.net>
---
fs/autofs4/autofs_i.h | 26 ++++++++++++++++++++++++++
fs/autofs4/root.c | 15 +++------------
2 files changed, 29 insertions(+), 12 deletions(-)
diff --git a/fs/autofs4/autofs_i.h b/fs/autofs4/autofs_i.h
index f3cf151..fe9fc23 100644
--- a/fs/autofs4/autofs_i.h
+++ b/fs/autofs4/autofs_i.h
@@ -266,5 +266,31 @@ out:
return ret;
}
+static inline void autofs4_add_expiring(struct dentry *dentry)
+{
+ struct autofs_sb_info *sbi = autofs4_sbi(dentry->d_sb);
+ struct autofs_info *ino = autofs4_dentry_ino(dentry);
+ if (ino) {
+ spin_lock(&sbi->lookup_lock);
+ if (list_empty(&ino->expiring))
+ list_add(&ino->expiring, &sbi->expiring_list);
+ spin_unlock(&sbi->lookup_lock);
+ }
+ return;
+}
+
+static inline void autofs4_del_expiring(struct dentry *dentry)
+{
+ struct autofs_sb_info *sbi = autofs4_sbi(dentry->d_sb);
+ struct autofs_info *ino = autofs4_dentry_ino(dentry);
+ if (ino) {
+ spin_lock(&sbi->lookup_lock);
+ if (!list_empty(&ino->expiring))
+ list_del_init(&ino->expiring);
+ spin_unlock(&sbi->lookup_lock);
+ }
+ return;
+}
+
void autofs4_dentry_release(struct dentry *);
extern void autofs4_kill_sb(struct super_block *);
diff --git a/fs/autofs4/root.c b/fs/autofs4/root.c
index 67d8d96..2954ac5 100644
--- a/fs/autofs4/root.c
+++ b/fs/autofs4/root.c
@@ -563,10 +563,7 @@ static struct dentry *autofs4_lookup(struct inode *dir, struct dentry *dentry, s
*/
ino = autofs4_dentry_ino(expiring);
autofs4_expire_wait(expiring);
- spin_lock(&sbi->lookup_lock);
- if (!list_empty(&ino->expiring))
- list_del_init(&ino->expiring);
- spin_unlock(&sbi->lookup_lock);
+ autofs4_del_expiring(expiring);
dput(expiring);
}
@@ -732,10 +729,7 @@ static int autofs4_dir_unlink(struct inode *dir, struct dentry *dentry)
dir->i_mtime = CURRENT_TIME;
spin_lock(&dcache_lock);
- spin_lock(&sbi->lookup_lock);
- if (list_empty(&ino->expiring))
- list_add(&ino->expiring, &sbi->expiring_list);
- spin_unlock(&sbi->lookup_lock);
+ autofs4_add_expiring(dentry);
spin_lock(&dentry->d_lock);
__d_drop(dentry);
spin_unlock(&dentry->d_lock);
@@ -761,10 +755,7 @@ static int autofs4_dir_rmdir(struct inode *dir, struct dentry *dentry)
spin_unlock(&dcache_lock);
return -ENOTEMPTY;
}
- spin_lock(&sbi->lookup_lock);
- if (list_empty(&ino->expiring))
- list_add(&ino->expiring, &sbi->expiring_list);
- spin_unlock(&sbi->lookup_lock);
+ autofs4_add_expiring(dentry);
spin_lock(&dentry->d_lock);
__d_drop(dentry);
spin_unlock(&dentry->d_lock);
next prev parent reply other threads:[~2009-10-01 1:01 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-01 1:00 [PATCH 01/10] autofs4 - use macros for active list handling Ian Kent
2009-10-01 1:01 ` Ian Kent [this message]
2009-10-01 1:01 ` [PATCH 03/10] autofs4 - use macro for need mount check Ian Kent
2009-10-01 1:01 ` [PATCH 04/10] autofs4 - use autofs_info for pending flag Ian Kent
2009-10-01 1:01 ` [PATCH 05/10] autofs4 - renamer unhashed to active in autofs4_lookup() Ian Kent
2009-10-01 1:01 ` [PATCH 06/10] autofs4 - cleanup active and expire lookup Ian Kent
2009-10-01 1:01 ` [PATCH 07/10] autofs4 - eliminate d_unhashed in path walk checks Ian Kent
2009-10-01 1:01 ` [PATCH 08/10] autofs4 - rename dentry to active in autofs4_lookup_active() Ian Kent
2009-10-01 1:01 ` [PATCH 09/10] autofs4 - rename dentry to expiring in autofs4_lookup_expiring() Ian Kent
2009-10-01 1:02 ` [PATCH 10/10] autofs4 - always use lookup for lookup Ian Kent
2009-10-06 20:49 ` [PATCH 01/10] autofs4 - use macros for active list handling Andrew Morton
2009-10-07 3:50 ` Ian Kent
2009-10-07 3:50 ` Ian Kent
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20091001010102.7675.55471.stgit@zeus.themaw.net \
--to=raven@themaw.net \
--cc=adilger@sun.com \
--cc=akpm@linux-foundation.org \
--cc=autofs@linux.kernel.org \
--cc=hch@infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sage@newdream.net \
--cc=viro@ZenIV.linux.org.uk \
--cc=yehuda@newdream.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.