diff options
author | Namjae Jeon <namjae.jeon@samsung.com> | 2013-05-26 11:05:32 +0900 |
---|---|---|
committer | Chanho Park <chanho61.park@samsung.com> | 2014-11-18 11:43:48 +0900 |
commit | 0e90c888fef1672be63e5de2cbec5c4cedd16e1a (patch) | |
tree | c2de8fbc71cf5f61ded0d0ec4b40644e65dca13e /fs | |
parent | 27d72a2b8e42835225a9db4aaa949cfb18319315 (diff) | |
download | linux-3.10-0e90c888fef1672be63e5de2cbec5c4cedd16e1a.tar.gz linux-3.10-0e90c888fef1672be63e5de2cbec5c4cedd16e1a.tar.bz2 linux-3.10-0e90c888fef1672be63e5de2cbec5c4cedd16e1a.zip |
f2fs: return proper error from start_gc_thread
when there is an error from kthread_run, then return proper error
rather than returning -ENOMEM.
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Amit Sahrawat <a.sahrawat@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/f2fs/gc.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c index 25b083c81d5..ddc2c6750ee 100644 --- a/fs/f2fs/gc.c +++ b/fs/f2fs/gc.c @@ -91,23 +91,28 @@ int start_gc_thread(struct f2fs_sb_info *sbi) { struct f2fs_gc_kthread *gc_th; dev_t dev = sbi->sb->s_bdev->bd_dev; + int err = 0; if (!test_opt(sbi, BG_GC)) - return 0; + goto out; gc_th = kmalloc(sizeof(struct f2fs_gc_kthread), GFP_KERNEL); - if (!gc_th) - return -ENOMEM; + if (!gc_th) { + err = -ENOMEM; + goto out; + } sbi->gc_thread = gc_th; init_waitqueue_head(&sbi->gc_thread->gc_wait_queue_head); sbi->gc_thread->f2fs_gc_task = kthread_run(gc_thread_func, sbi, "f2fs_gc-%u:%u", MAJOR(dev), MINOR(dev)); if (IS_ERR(gc_th->f2fs_gc_task)) { + err = PTR_ERR(gc_th->f2fs_gc_task); kfree(gc_th); sbi->gc_thread = NULL; - return -ENOMEM; } - return 0; + +out: + return err; } void stop_gc_thread(struct f2fs_sb_info *sbi) |