Exemple #1
0
void do_emergency_sync(void)
{
	struct super_block *sb;

	lock_kernel();
	emergency_sync_scheduled = 0;

	for (sb = sb_entry(super_blocks.next);
	     sb != sb_entry(&super_blocks); 
	     sb = sb_entry(sb->s_list.next))
		if (is_local_disk(sb->s_dev))
			go_sync(sb);

	for (sb = sb_entry(super_blocks.next);
	     sb != sb_entry(&super_blocks); 
	     sb = sb_entry(sb->s_list.next))
		if (!is_local_disk(sb->s_dev) && MAJOR(sb->s_dev))
			go_sync(sb);

	unlock_kernel();
	printk(KERN_INFO "Done.\n");
}
Exemple #2
0
void do_emergency_sync(void)
{
	struct vfsmount *mnt;
	int remount_flag;

	lock_kernel();
	remount_flag = (emergency_sync_scheduled == EMERG_REMOUNT);
	emergency_sync_scheduled = 0;

	if (remount_flag)
		all_files_read_only();

	for (mnt = vfsmntlist; mnt; mnt = mnt->mnt_next)
		if (is_local_disk(mnt->mnt_dev))
			go_sync(mnt->mnt_dev, remount_flag);

	for (mnt = vfsmntlist; mnt; mnt = mnt->mnt_next)
		if (!is_local_disk(mnt->mnt_dev) && MAJOR(mnt->mnt_dev))
			go_sync(mnt->mnt_dev, remount_flag);

	unlock_kernel();
	printk(KERN_INFO "Done.\n");
}
Exemple #3
0
void disk_emergency_sync(void)
{
	struct super_block *sb;
	struct scsi_dev *sdev;

	/* host side sync... */
	emergency_sync();

	/* ...and now the disk side sync */
	lock_kernel();
	emergency_sync_scheduled = 0;

	for (sb = sb_entry(super_blocks.next);
	     sb != sb_entry(&super_blocks); 
	     sb = sb_entry(sb->s_list.next)) {
		if (is_local_disk(sb->s_dev)){
			if ((sdev = sb_to_scsidev(sb)) != NULL)
				ata_sync_platter(sdev);
		}
	}

	unlock_kernel();
	printk(KERN_INFO "disk_emergency_sync done!\n");
}