mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 21:51:40 +00:00
[PATCH] kill ->put_inode
And with that last patch to affs killing the last put_inode instance we can finally, after many years of transition kill this racy and awkward interface. (It's kinda funny that even the description in Documentation/filesystems/vfs.txt was entirely wrong..) Also remove a very misleading comment above the defintion of struct super_operations. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
dca3c33652
commit
33dcdac2df
@ -92,7 +92,6 @@ prototypes:
|
||||
void (*destroy_inode)(struct inode *);
|
||||
void (*dirty_inode) (struct inode *);
|
||||
int (*write_inode) (struct inode *, int);
|
||||
void (*put_inode) (struct inode *);
|
||||
void (*drop_inode) (struct inode *);
|
||||
void (*delete_inode) (struct inode *);
|
||||
void (*put_super) (struct super_block *);
|
||||
@ -115,7 +114,6 @@ alloc_inode: no no no
|
||||
destroy_inode: no
|
||||
dirty_inode: no (must not sleep)
|
||||
write_inode: no
|
||||
put_inode: no
|
||||
drop_inode: no !!!inode_lock!!!
|
||||
delete_inode: no
|
||||
put_super: yes yes no
|
||||
|
@ -205,7 +205,6 @@ struct super_operations {
|
||||
|
||||
void (*dirty_inode) (struct inode *);
|
||||
int (*write_inode) (struct inode *, int);
|
||||
void (*put_inode) (struct inode *);
|
||||
void (*drop_inode) (struct inode *);
|
||||
void (*delete_inode) (struct inode *);
|
||||
void (*put_super) (struct super_block *);
|
||||
@ -246,9 +245,6 @@ or bottom half).
|
||||
inode to disc. The second parameter indicates whether the write
|
||||
should be synchronous or not, not all filesystems check this flag.
|
||||
|
||||
put_inode: called when the VFS inode is removed from the inode
|
||||
cache.
|
||||
|
||||
drop_inode: called when the last access to the inode is dropped,
|
||||
with the inode_lock spinlock held.
|
||||
|
||||
|
@ -1153,9 +1153,6 @@ void iput(struct inode *inode)
|
||||
|
||||
BUG_ON(inode->i_state == I_CLEAR);
|
||||
|
||||
if (op && op->put_inode)
|
||||
op->put_inode(inode);
|
||||
|
||||
if (atomic_dec_and_lock(&inode->i_count, &inode_lock))
|
||||
iput_final(inode);
|
||||
}
|
||||
|
@ -1289,17 +1289,12 @@ extern ssize_t vfs_readv(struct file *, const struct iovec __user *,
|
||||
extern ssize_t vfs_writev(struct file *, const struct iovec __user *,
|
||||
unsigned long, loff_t *);
|
||||
|
||||
/*
|
||||
* NOTE: write_inode, delete_inode, clear_inode, put_inode can be called
|
||||
* without the big kernel lock held in all filesystems.
|
||||
*/
|
||||
struct super_operations {
|
||||
struct inode *(*alloc_inode)(struct super_block *sb);
|
||||
void (*destroy_inode)(struct inode *);
|
||||
|
||||
void (*dirty_inode) (struct inode *);
|
||||
int (*write_inode) (struct inode *, int);
|
||||
void (*put_inode) (struct inode *);
|
||||
void (*drop_inode) (struct inode *);
|
||||
void (*delete_inode) (struct inode *);
|
||||
void (*put_super) (struct super_block *);
|
||||
|
Loading…
Reference in New Issue
Block a user