From 45eddbf9638455222beab316c14a9e4aaf72dca0 Mon Sep 17 00:00:00 2001 From: Al Viro Date: Mon, 22 Mar 2010 20:09:33 -0400 Subject: [PATCH] --- yaml --- r: 197943 b: refs/heads/master c: 6754af64641e8224c281ee5714e012e3ed41f701 h: refs/heads/master i: 197941: dd15800b60d86f97d56e53e0711cd4465689a23d 197939: 4926c557d3ff9f0e0668bc413fc8caec2f4ffdaa 197935: d9bd96682dd2ed53b33de8bd9c2df23d92e24c20 v: v3 --- [refs] | 2 +- trunk/fs/buffer.c | 7 ++----- trunk/fs/drop_caches.c | 8 +++----- trunk/fs/quota/quota.c | 8 +++----- trunk/fs/super.c | 8 +++----- 5 files changed, 12 insertions(+), 21 deletions(-) diff --git a/[refs] b/[refs] index 71056824e909..8d9caecf0c9b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8edd64bd6089e21f47dcdebb14b598b713213ddc +refs/heads/master: 6754af64641e8224c281ee5714e012e3ed41f701 diff --git a/trunk/fs/buffer.c b/trunk/fs/buffer.c index 021ec4da9932..ded29b0fdac3 100644 --- a/trunk/fs/buffer.c +++ b/trunk/fs/buffer.c @@ -562,12 +562,11 @@ static int osync_buffers_list(spinlock_t *lock, struct list_head *list) static void do_thaw_all(struct work_struct *work) { - struct super_block *sb; + struct super_block *sb, *n; char b[BDEVNAME_SIZE]; spin_lock(&sb_lock); -restart: - list_for_each_entry(sb, &super_blocks, s_list) { + list_for_each_entry_safe(sb, n, &super_blocks, s_list) { if (list_empty(&sb->s_instances)) continue; sb->s_count++; @@ -578,8 +577,6 @@ static void do_thaw_all(struct work_struct *work) bdevname(sb->s_bdev, b)); up_read(&sb->s_umount); spin_lock(&sb_lock); - if (__put_super_and_need_restart(sb)) - goto restart; } spin_unlock(&sb_lock); kfree(work); diff --git a/trunk/fs/drop_caches.c b/trunk/fs/drop_caches.c index 9cd4e4a70f56..42728a1f795f 100644 --- a/trunk/fs/drop_caches.c +++ b/trunk/fs/drop_caches.c @@ -35,11 +35,10 @@ static void drop_pagecache_sb(struct super_block *sb) static void drop_pagecache(void) { - struct super_block *sb; + struct super_block *sb, *n; spin_lock(&sb_lock); -restart: - list_for_each_entry(sb, &super_blocks, s_list) { + list_for_each_entry_safe(sb, n, &super_blocks, s_list) { if (list_empty(&sb->s_instances)) continue; sb->s_count++; @@ -49,8 +48,7 @@ static void drop_pagecache(void) drop_pagecache_sb(sb); up_read(&sb->s_umount); spin_lock(&sb_lock); - if (__put_super_and_need_restart(sb)) - goto restart; + __put_super(sb); } spin_unlock(&sb_lock); } diff --git a/trunk/fs/quota/quota.c b/trunk/fs/quota/quota.c index 4669e7e639bd..2196f8b07c1f 100644 --- a/trunk/fs/quota/quota.c +++ b/trunk/fs/quota/quota.c @@ -47,7 +47,7 @@ static int check_quotactl_permission(struct super_block *sb, int type, int cmd, static int quota_sync_all(int type) { - struct super_block *sb; + struct super_block *sb, *n; int ret; if (type >= MAXQUOTAS) @@ -57,8 +57,7 @@ static int quota_sync_all(int type) return ret; spin_lock(&sb_lock); -restart: - list_for_each_entry(sb, &super_blocks, s_list) { + list_for_each_entry_safe(sb, n, &super_blocks, s_list) { if (list_empty(&sb->s_instances)) continue; if (!sb->s_qcop || !sb->s_qcop->quota_sync) @@ -71,8 +70,7 @@ static int quota_sync_all(int type) sb->s_qcop->quota_sync(sb, type, 1); up_read(&sb->s_umount); spin_lock(&sb_lock); - if (__put_super_and_need_restart(sb)) - goto restart; + __put_super(sb); } spin_unlock(&sb_lock); diff --git a/trunk/fs/super.c b/trunk/fs/super.c index ba99524998f7..ccb2b5fa89bd 100644 --- a/trunk/fs/super.c +++ b/trunk/fs/super.c @@ -395,11 +395,10 @@ EXPORT_SYMBOL(drop_super); */ void sync_supers(void) { - struct super_block *sb; + struct super_block *sb, *n; spin_lock(&sb_lock); -restart: - list_for_each_entry(sb, &super_blocks, s_list) { + list_for_each_entry_safe(sb, n, &super_blocks, s_list) { if (list_empty(&sb->s_instances)) continue; if (sb->s_op->write_super && sb->s_dirt) { @@ -412,8 +411,7 @@ void sync_supers(void) up_read(&sb->s_umount); spin_lock(&sb_lock); - if (__put_super_and_need_restart(sb)) - goto restart; + __put_super(sb); } } spin_unlock(&sb_lock);