From: Al Viro Date: Tue, 23 Mar 2010 00:09:33 +0000 (-0400) Subject: Convert simple loops over superblocks to list_for_each_entry_safe X-Git-Tag: v2.6.35-rc1~432^2~56 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=6754af64641e8224c281ee5714e012e3ed41f701;p=linux.git Convert simple loops over superblocks to list_for_each_entry_safe Signed-off-by: Al Viro --- diff --git a/fs/buffer.c b/fs/buffer.c index 021ec4da9932..ded29b0fdac3 100644 --- a/fs/buffer.c +++ b/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/fs/drop_caches.c b/fs/drop_caches.c index 9cd4e4a70f56..42728a1f795f 100644 --- a/fs/drop_caches.c +++ b/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/fs/quota/quota.c b/fs/quota/quota.c index 4669e7e639bd..2196f8b07c1f 100644 --- a/fs/quota/quota.c +++ b/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/fs/super.c b/fs/super.c index ba99524998f7..ccb2b5fa89bd 100644 --- a/fs/super.c +++ b/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);