remove s_async_list
Remove the unused s_async_list in the superblock, a leftover of the broken async inode deletion code that leaked into mainline. Having this in the middle of the sync/unmount path is not helpful for the following cleanups. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
Родитель
864d7c4c06
Коммит
876a9f76ab
|
@ -38,7 +38,6 @@
|
||||||
#include <linux/kobject.h>
|
#include <linux/kobject.h>
|
||||||
#include <linux/mutex.h>
|
#include <linux/mutex.h>
|
||||||
#include <linux/file.h>
|
#include <linux/file.h>
|
||||||
#include <linux/async.h>
|
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
#include "internal.h"
|
#include "internal.h"
|
||||||
|
|
||||||
|
@ -72,7 +71,6 @@ static struct super_block *alloc_super(struct file_system_type *type)
|
||||||
INIT_HLIST_HEAD(&s->s_anon);
|
INIT_HLIST_HEAD(&s->s_anon);
|
||||||
INIT_LIST_HEAD(&s->s_inodes);
|
INIT_LIST_HEAD(&s->s_inodes);
|
||||||
INIT_LIST_HEAD(&s->s_dentry_lru);
|
INIT_LIST_HEAD(&s->s_dentry_lru);
|
||||||
INIT_LIST_HEAD(&s->s_async_list);
|
|
||||||
init_rwsem(&s->s_umount);
|
init_rwsem(&s->s_umount);
|
||||||
mutex_init(&s->s_lock);
|
mutex_init(&s->s_lock);
|
||||||
lockdep_set_class(&s->s_umount, &type->s_umount_key);
|
lockdep_set_class(&s->s_umount, &type->s_umount_key);
|
||||||
|
@ -342,11 +340,6 @@ void generic_shutdown_super(struct super_block *sb)
|
||||||
lock_super(sb);
|
lock_super(sb);
|
||||||
sb->s_flags &= ~MS_ACTIVE;
|
sb->s_flags &= ~MS_ACTIVE;
|
||||||
|
|
||||||
/*
|
|
||||||
* wait for asynchronous fs operations to finish before going further
|
|
||||||
*/
|
|
||||||
async_synchronize_full_domain(&sb->s_async_list);
|
|
||||||
|
|
||||||
/* bad name - it should be evict_inodes() */
|
/* bad name - it should be evict_inodes() */
|
||||||
invalidate_inodes(sb);
|
invalidate_inodes(sb);
|
||||||
lock_kernel();
|
lock_kernel();
|
||||||
|
@ -517,7 +510,6 @@ restart:
|
||||||
sb->s_count++;
|
sb->s_count++;
|
||||||
spin_unlock(&sb_lock);
|
spin_unlock(&sb_lock);
|
||||||
down_read(&sb->s_umount);
|
down_read(&sb->s_umount);
|
||||||
async_synchronize_full_domain(&sb->s_async_list);
|
|
||||||
if (sb->s_root && (wait || sb->s_dirt))
|
if (sb->s_root && (wait || sb->s_dirt))
|
||||||
sb->s_op->sync_fs(sb, wait);
|
sb->s_op->sync_fs(sb, wait);
|
||||||
up_read(&sb->s_umount);
|
up_read(&sb->s_umount);
|
||||||
|
|
|
@ -1372,11 +1372,6 @@ struct super_block {
|
||||||
* generic_show_options()
|
* generic_show_options()
|
||||||
*/
|
*/
|
||||||
char *s_options;
|
char *s_options;
|
||||||
|
|
||||||
/*
|
|
||||||
* storage for asynchronous operations
|
|
||||||
*/
|
|
||||||
struct list_head s_async_list;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct timespec current_fs_time(struct super_block *sb);
|
extern struct timespec current_fs_time(struct super_block *sb);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче