Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 053c525f authored by Jens Axboe's avatar Jens Axboe
Browse files

buffer: switch do_emergency_thaw() away from pdflush_operation()



This is (again) a preparatory patch similar to commit
a2a9537a. It open codes a simple
async way of executing do_thaw_all() out of context, so we can get
rid of pdflush.

Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
parent 329007ce
Loading
Loading
Loading
Loading
+9 −2
Original line number Original line Diff line number Diff line
@@ -547,7 +547,7 @@ static int osync_buffers_list(spinlock_t *lock, struct list_head *list)
	return err;
	return err;
}
}


void do_thaw_all(unsigned long unused)
void do_thaw_all(struct work_struct *work)
{
{
	struct super_block *sb;
	struct super_block *sb;
	char b[BDEVNAME_SIZE];
	char b[BDEVNAME_SIZE];
@@ -567,6 +567,7 @@ void do_thaw_all(unsigned long unused)
			goto restart;
			goto restart;
	}
	}
	spin_unlock(&sb_lock);
	spin_unlock(&sb_lock);
	kfree(work);
	printk(KERN_WARNING "Emergency Thaw complete\n");
	printk(KERN_WARNING "Emergency Thaw complete\n");
}
}


@@ -577,7 +578,13 @@ void do_thaw_all(unsigned long unused)
 */
 */
void emergency_thaw_all(void)
void emergency_thaw_all(void)
{
{
	pdflush_operation(do_thaw_all, 0);
	struct work_struct *work;

	work = kmalloc(sizeof(*work), GFP_ATOMIC);
	if (work) {
		INIT_WORK(work, do_thaw_all);
		schedule_work(work);
	}
}
}


/**
/**