From: Gerard Lledo <gerard.lledo@gmail.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: dwmw2@infradead.org, kernel-janitors@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org
Subject: Re: [PATCH] [JFFS2] Move jffs2_gcd_mtd threads to the new kthread
Date: Tue, 02 Jun 2009 11:32:16 +0000 [thread overview]
Message-ID: <20090602113216.GA3513@tank> (raw)
In-Reply-To: <20090601162010.ed69436f.akpm@linux-foundation.org>
On Mon, Jun 01, 2009 at 04:20:10PM -0700, Andrew Morton wrote:
> On Fri, 29 May 2009 11:19:41 +0300
> Gerard Lledo <gerard.lledo@gmail.com> wrote:
>
> > kernel_thread() is being depracated. This patch moves the jffs2 garbage
> > collecting thread to the new kthread API with the minimal impact.
> >
> > Signed-off-by: Gerard Lledo <gerard.lledo@gmail.com>
> > ---
> > fs/jffs2/background.c | 22 ++++++++++++++--------
> > 1 files changed, 14 insertions(+), 8 deletions(-)
> >
> > diff --git a/fs/jffs2/background.c b/fs/jffs2/background.c
> > index e958010..077fa65 100644
> > --- a/fs/jffs2/background.c
> > +++ b/fs/jffs2/background.c
> > @@ -15,6 +15,7 @@
> > #include <linux/completion.h>
> > #include <linux/sched.h>
> > #include <linux/freezer.h>
> > +#include <linux/kthread.h>
> > #include "nodelist.h"
> >
> >
> > @@ -31,7 +32,7 @@ void jffs2_garbage_collect_trigger(struct jffs2_sb_info *c)
> > /* This must only ever be called when no GC thread is currently running */
> > int jffs2_start_garbage_collect_thread(struct jffs2_sb_info *c)
> > {
> > - pid_t pid;
> > + struct task_struct *tsk;
> > int ret = 0;
> >
> > BUG_ON(c->gc_task);
> > @@ -39,15 +40,16 @@ int jffs2_start_garbage_collect_thread(struct jffs2_sb_info *c)
> > init_completion(&c->gc_thread_start);
> > init_completion(&c->gc_thread_exit);
> >
> > - pid = kernel_thread(jffs2_garbage_collect_thread, c, CLONE_FS|CLONE_FILES);
> > - if (pid < 0) {
> > - printk(KERN_WARNING "fork failed for JFFS2 garbage collect thread: %d\n", -pid);
> > + tsk = kthread_create(jffs2_garbage_collect_thread, c, "jffs2_gcd_mtd%d", c->mtd->index);
> > + if (IS_ERR(tsk)) {
> > + printk(KERN_WARNING "fork failed for JFFS2 garbage collect thread: %ld\n", -PTR_ERR(tsk));
> > complete(&c->gc_thread_exit);
> > - ret = pid;
> > + ret = PTR_ERR(tsk);
> > } else {
> > - /* Wait for it... */
> > - D1(printk(KERN_DEBUG "JFFS2: Garbage collect thread is pid %d\n", pid));
> > + D1(printk(KERN_DEBUG "JFFS2: Garbage collect thread is pid %d\n", tsk->pid));
> > + wake_up_process(tsk);
> > wait_for_completion(&c->gc_thread_start);
> > + ret = tsk->pid;
> > }
>
> A simple kthread_run() would be preferable here. The code presently
> sort-of open-codes it.
>
> > return ret;
>
> Also, manipulating kernel threads via their pids is atypical and
> inefficient. In-kernel it is better to refer to threads via their
> task_struct*.
>
> Fortunately all callers of this function ignore its return value so I
> expect we can simply change it to be void-returning. But that's a
> cleanup which would best be done in a spearate patch.
>
OK, I'll redo the previous patch with kthread_run() instead. I will also post
a different patch to cleanup the return value and use void.
WARNING: multiple messages have this Message-ID (diff)
From: Gerard Lledo <gerard.lledo@gmail.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: dwmw2@infradead.org, kernel-janitors@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org
Subject: Re: [PATCH] [JFFS2] Move jffs2_gcd_mtd threads to the new kthread API
Date: Tue, 2 Jun 2009 14:32:16 +0300 [thread overview]
Message-ID: <20090602113216.GA3513@tank> (raw)
In-Reply-To: <20090601162010.ed69436f.akpm@linux-foundation.org>
On Mon, Jun 01, 2009 at 04:20:10PM -0700, Andrew Morton wrote:
> On Fri, 29 May 2009 11:19:41 +0300
> Gerard Lledo <gerard.lledo@gmail.com> wrote:
>
> > kernel_thread() is being depracated. This patch moves the jffs2 garbage
> > collecting thread to the new kthread API with the minimal impact.
> >
> > Signed-off-by: Gerard Lledo <gerard.lledo@gmail.com>
> > ---
> > fs/jffs2/background.c | 22 ++++++++++++++--------
> > 1 files changed, 14 insertions(+), 8 deletions(-)
> >
> > diff --git a/fs/jffs2/background.c b/fs/jffs2/background.c
> > index e958010..077fa65 100644
> > --- a/fs/jffs2/background.c
> > +++ b/fs/jffs2/background.c
> > @@ -15,6 +15,7 @@
> > #include <linux/completion.h>
> > #include <linux/sched.h>
> > #include <linux/freezer.h>
> > +#include <linux/kthread.h>
> > #include "nodelist.h"
> >
> >
> > @@ -31,7 +32,7 @@ void jffs2_garbage_collect_trigger(struct jffs2_sb_info *c)
> > /* This must only ever be called when no GC thread is currently running */
> > int jffs2_start_garbage_collect_thread(struct jffs2_sb_info *c)
> > {
> > - pid_t pid;
> > + struct task_struct *tsk;
> > int ret = 0;
> >
> > BUG_ON(c->gc_task);
> > @@ -39,15 +40,16 @@ int jffs2_start_garbage_collect_thread(struct jffs2_sb_info *c)
> > init_completion(&c->gc_thread_start);
> > init_completion(&c->gc_thread_exit);
> >
> > - pid = kernel_thread(jffs2_garbage_collect_thread, c, CLONE_FS|CLONE_FILES);
> > - if (pid < 0) {
> > - printk(KERN_WARNING "fork failed for JFFS2 garbage collect thread: %d\n", -pid);
> > + tsk = kthread_create(jffs2_garbage_collect_thread, c, "jffs2_gcd_mtd%d", c->mtd->index);
> > + if (IS_ERR(tsk)) {
> > + printk(KERN_WARNING "fork failed for JFFS2 garbage collect thread: %ld\n", -PTR_ERR(tsk));
> > complete(&c->gc_thread_exit);
> > - ret = pid;
> > + ret = PTR_ERR(tsk);
> > } else {
> > - /* Wait for it... */
> > - D1(printk(KERN_DEBUG "JFFS2: Garbage collect thread is pid %d\n", pid));
> > + D1(printk(KERN_DEBUG "JFFS2: Garbage collect thread is pid %d\n", tsk->pid));
> > + wake_up_process(tsk);
> > wait_for_completion(&c->gc_thread_start);
> > + ret = tsk->pid;
> > }
>
> A simple kthread_run() would be preferable here. The code presently
> sort-of open-codes it.
>
> > return ret;
>
> Also, manipulating kernel threads via their pids is atypical and
> inefficient. In-kernel it is better to refer to threads via their
> task_struct*.
>
> Fortunately all callers of this function ignore its return value so I
> expect we can simply change it to be void-returning. But that's a
> cleanup which would best be done in a spearate patch.
>
OK, I'll redo the previous patch with kthread_run() instead. I will also post
a different patch to cleanup the return value and use void.
WARNING: multiple messages have this Message-ID (diff)
From: Gerard Lledo <gerard.lledo@gmail.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: kernel-janitors@vger.kernel.org, dwmw2@infradead.org,
linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] [JFFS2] Move jffs2_gcd_mtd threads to the new kthread API
Date: Tue, 2 Jun 2009 14:32:16 +0300 [thread overview]
Message-ID: <20090602113216.GA3513@tank> (raw)
In-Reply-To: <20090601162010.ed69436f.akpm@linux-foundation.org>
On Mon, Jun 01, 2009 at 04:20:10PM -0700, Andrew Morton wrote:
> On Fri, 29 May 2009 11:19:41 +0300
> Gerard Lledo <gerard.lledo@gmail.com> wrote:
>
> > kernel_thread() is being depracated. This patch moves the jffs2 garbage
> > collecting thread to the new kthread API with the minimal impact.
> >
> > Signed-off-by: Gerard Lledo <gerard.lledo@gmail.com>
> > ---
> > fs/jffs2/background.c | 22 ++++++++++++++--------
> > 1 files changed, 14 insertions(+), 8 deletions(-)
> >
> > diff --git a/fs/jffs2/background.c b/fs/jffs2/background.c
> > index e958010..077fa65 100644
> > --- a/fs/jffs2/background.c
> > +++ b/fs/jffs2/background.c
> > @@ -15,6 +15,7 @@
> > #include <linux/completion.h>
> > #include <linux/sched.h>
> > #include <linux/freezer.h>
> > +#include <linux/kthread.h>
> > #include "nodelist.h"
> >
> >
> > @@ -31,7 +32,7 @@ void jffs2_garbage_collect_trigger(struct jffs2_sb_info *c)
> > /* This must only ever be called when no GC thread is currently running */
> > int jffs2_start_garbage_collect_thread(struct jffs2_sb_info *c)
> > {
> > - pid_t pid;
> > + struct task_struct *tsk;
> > int ret = 0;
> >
> > BUG_ON(c->gc_task);
> > @@ -39,15 +40,16 @@ int jffs2_start_garbage_collect_thread(struct jffs2_sb_info *c)
> > init_completion(&c->gc_thread_start);
> > init_completion(&c->gc_thread_exit);
> >
> > - pid = kernel_thread(jffs2_garbage_collect_thread, c, CLONE_FS|CLONE_FILES);
> > - if (pid < 0) {
> > - printk(KERN_WARNING "fork failed for JFFS2 garbage collect thread: %d\n", -pid);
> > + tsk = kthread_create(jffs2_garbage_collect_thread, c, "jffs2_gcd_mtd%d", c->mtd->index);
> > + if (IS_ERR(tsk)) {
> > + printk(KERN_WARNING "fork failed for JFFS2 garbage collect thread: %ld\n", -PTR_ERR(tsk));
> > complete(&c->gc_thread_exit);
> > - ret = pid;
> > + ret = PTR_ERR(tsk);
> > } else {
> > - /* Wait for it... */
> > - D1(printk(KERN_DEBUG "JFFS2: Garbage collect thread is pid %d\n", pid));
> > + D1(printk(KERN_DEBUG "JFFS2: Garbage collect thread is pid %d\n", tsk->pid));
> > + wake_up_process(tsk);
> > wait_for_completion(&c->gc_thread_start);
> > + ret = tsk->pid;
> > }
>
> A simple kthread_run() would be preferable here. The code presently
> sort-of open-codes it.
>
> > return ret;
>
> Also, manipulating kernel threads via their pids is atypical and
> inefficient. In-kernel it is better to refer to threads via their
> task_struct*.
>
> Fortunately all callers of this function ignore its return value so I
> expect we can simply change it to be void-returning. But that's a
> cleanup which would best be done in a spearate patch.
>
OK, I'll redo the previous patch with kthread_run() instead. I will also post
a different patch to cleanup the return value and use void.
next prev parent reply other threads:[~2009-06-02 11:32 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-29 8:19 [PATCH] [JFFS2] Move jffs2_gcd_mtd threads to the new kthread API Gerard Lledo
2009-05-29 8:19 ` Gerard Lledo
2009-05-29 8:19 ` Gerard Lledo
2009-06-01 23:20 ` [PATCH] [JFFS2] Move jffs2_gcd_mtd threads to the new kthread Andrew Morton
2009-06-01 23:20 ` [PATCH] [JFFS2] Move jffs2_gcd_mtd threads to the new kthread API Andrew Morton
2009-06-01 23:20 ` Andrew Morton
2009-06-02 11:32 ` Gerard Lledo [this message]
2009-06-02 11:32 ` Gerard Lledo
2009-06-02 11:32 ` Gerard Lledo
2009-06-02 12:11 ` Gerard Lledo
2009-06-02 12:11 ` Gerard Lledo
2009-06-02 12:11 ` [PATCH] [JFFS2] jffs2_start_garbage_collect_thread() return value cleanup Gerard Lledo
2009-06-02 12:11 ` Gerard Lledo
2009-06-02 22:11 ` Andrew Morton
2009-06-02 22:11 ` Andrew Morton
2009-06-03 6:09 ` Gerard Lledo
2009-06-03 6:09 ` Gerard Lledo
2009-06-24 10:09 ` David Woodhouse
2009-06-25 3:00 ` Andrew Morton
2009-06-25 3:00 ` Andrew Morton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090602113216.GA3513@tank \
--to=gerard.lledo@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=dwmw2@infradead.org \
--cc=kernel-janitors@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.