diff options
Diffstat (limited to 'fs/sync.c')
-rw-r--r-- | fs/sync.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/fs/sync.c b/fs/sync.c index ef36bc921bf3..7abc65fbf21d 100644 --- a/fs/sync.c +++ b/fs/sync.c @@ -42,9 +42,21 @@ SYSCALL_DEFINE0(sync) return 0; } +static void do_sync_work(struct work_struct *work) +{ + do_sync(0); + kfree(work); +} + void emergency_sync(void) { - pdflush_operation(do_sync, 0); + struct work_struct *work; + + work = kmalloc(sizeof(*work), GFP_ATOMIC); + if (work) { + INIT_WORK(work, do_sync_work); + schedule_work(work); + } } /* |