diff options
| author | Al Viro <viro@zeniv.linux.org.uk> | 2010-06-04 22:27:38 -0400 | 
|---|---|---|
| committer | Al Viro <viro@zeniv.linux.org.uk> | 2010-08-09 16:47:53 -0400 | 
| commit | 5ccb4a78d8c0e27985afec32cc4894d48e7b876e (patch) | |
| tree | 9f02b4f89011b45a21768f9b52c9822ce7cc7497 /fs/minix/bitmap.c | |
| parent | 01cd9fef6eb3caae06415861de5b53224b722549 (diff) | |
| download | olio-linux-3.10-5ccb4a78d8c0e27985afec32cc4894d48e7b876e.tar.xz olio-linux-3.10-5ccb4a78d8c0e27985afec32cc4894d48e7b876e.zip  | |
switch minix to ->evict_inode(), fix write_inode/delete_inode race
We need to wait for completion of possible writeback in progress
before we clear on-disk inode during deletion.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/minix/bitmap.c')
| -rw-r--r-- | fs/minix/bitmap.c | 6 | 
1 files changed, 2 insertions, 4 deletions
diff --git a/fs/minix/bitmap.c b/fs/minix/bitmap.c index 482779fe4e7..3f32bcb0d9b 100644 --- a/fs/minix/bitmap.c +++ b/fs/minix/bitmap.c @@ -200,13 +200,13 @@ void minix_free_inode(struct inode * inode)  	ino = inode->i_ino;  	if (ino < 1 || ino > sbi->s_ninodes) {  		printk("minix_free_inode: inode 0 or nonexistent inode\n"); -		goto out; +		return;  	}  	bit = ino & ((1<<k) - 1);  	ino >>= k;  	if (ino >= sbi->s_imap_blocks) {  		printk("minix_free_inode: nonexistent imap in superblock\n"); -		goto out; +		return;  	}  	minix_clear_inode(inode);	/* clear on-disk copy */ @@ -217,8 +217,6 @@ void minix_free_inode(struct inode * inode)  		printk("minix_free_inode: bit %lu already cleared\n", bit);  	spin_unlock(&bitmap_lock);  	mark_buffer_dirty(bh); - out: -	clear_inode(inode);		/* clear in-memory copy */  }  struct inode *minix_new_inode(const struct inode *dir, int mode, int *error)  |