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"); }
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"); }