diff options
author | Nick Piggin <npiggin@kernel.dk> | 2011-01-07 01:49:23 -0500 |
---|---|---|
committer | Nick Piggin <npiggin@kernel.dk> | 2011-01-07 01:50:18 -0500 |
commit | fe15ce446beb3a33583af81ffe6c9d01a75314ed (patch) | |
tree | bc8af66b6dd2d0f21a2a3f48a19975ae2cdbae4e /fs/proc | |
parent | 5eef7fa905c814826f518aca2d414ca77508ce30 (diff) |
fs: change d_delete semantics
Change d_delete from a dentry deletion notification to a dentry caching
advise, more like ->drop_inode. Require it to be constant and idempotent,
and not take d_lock. This is how all existing filesystems use the callback
anyway.
This makes fine grained dentry locking of dput and dentry lru scanning
much simpler.
Signed-off-by: Nick Piggin <npiggin@kernel.dk>
Diffstat (limited to 'fs/proc')
-rw-r--r-- | fs/proc/base.c | 2 | ||||
-rw-r--r-- | fs/proc/generic.c | 2 | ||||
-rw-r--r-- | fs/proc/proc_sysctl.c | 2 |
3 files changed, 3 insertions, 3 deletions
diff --git a/fs/proc/base.c b/fs/proc/base.c index 182845147fe4..d932fdb6a245 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c | |||
@@ -1744,7 +1744,7 @@ static int pid_revalidate(struct dentry *dentry, struct nameidata *nd) | |||
1744 | return 0; | 1744 | return 0; |
1745 | } | 1745 | } |
1746 | 1746 | ||
1747 | static int pid_delete_dentry(struct dentry * dentry) | 1747 | static int pid_delete_dentry(const struct dentry * dentry) |
1748 | { | 1748 | { |
1749 | /* Is the task we represent dead? | 1749 | /* Is the task we represent dead? |
1750 | * If so, then don't put the dentry on the lru list, | 1750 | * If so, then don't put the dentry on the lru list, |
diff --git a/fs/proc/generic.c b/fs/proc/generic.c index dd29f0337661..1d607be36d95 100644 --- a/fs/proc/generic.c +++ b/fs/proc/generic.c | |||
@@ -400,7 +400,7 @@ static const struct inode_operations proc_link_inode_operations = { | |||
400 | * smarter: we could keep a "volatile" flag in the | 400 | * smarter: we could keep a "volatile" flag in the |
401 | * inode to indicate which ones to keep. | 401 | * inode to indicate which ones to keep. |
402 | */ | 402 | */ |
403 | static int proc_delete_dentry(struct dentry * dentry) | 403 | static int proc_delete_dentry(const struct dentry * dentry) |
404 | { | 404 | { |
405 | return 1; | 405 | return 1; |
406 | } | 406 | } |
diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c index b652cb00906b..a256d770ea18 100644 --- a/fs/proc/proc_sysctl.c +++ b/fs/proc/proc_sysctl.c | |||
@@ -392,7 +392,7 @@ static int proc_sys_revalidate(struct dentry *dentry, struct nameidata *nd) | |||
392 | return !PROC_I(dentry->d_inode)->sysctl->unregistering; | 392 | return !PROC_I(dentry->d_inode)->sysctl->unregistering; |
393 | } | 393 | } |
394 | 394 | ||
395 | static int proc_sys_delete(struct dentry *dentry) | 395 | static int proc_sys_delete(const struct dentry *dentry) |
396 | { | 396 | { |
397 | return !!PROC_I(dentry->d_inode)->sysctl->unregistering; | 397 | return !!PROC_I(dentry->d_inode)->sysctl->unregistering; |
398 | } | 398 | } |