From: Richard Weinberger <richard@nod.at> To: linux-mtd@lists.infradead.org Cc: linux-kernel@vger.kernel.org, dedekind1@gmail.com, boris.brezillon@free-electrons.com, Richard Weinberger <richard@nod.at> Subject: [PATCH 2/4] UBI: Introduce prepare_erase_work() Date: Sun, 29 Mar 2015 14:13:15 +0200 [thread overview] Message-ID: <1427631197-23610-3-git-send-email-richard@nod.at> (raw) In-Reply-To: <1427631197-23610-1-git-send-email-richard@nod.at> Split ubi_work creation and scheduling code such that we can re-use the creation code where we schedule ubi work on our own. Signed-off-by: Richard Weinberger <richard@nod.at> --- drivers/mtd/ubi/wl.c | 40 +++++++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/drivers/mtd/ubi/wl.c b/drivers/mtd/ubi/wl.c index cefc767..13594e9 100644 --- a/drivers/mtd/ubi/wl.c +++ b/drivers/mtd/ubi/wl.c @@ -569,29 +569,26 @@ static int erase_worker(struct ubi_device *ubi, struct ubi_work *wl_wrk, int shutdown); /** - * schedule_erase - schedule an erase work. + * prepare_erase_work - prepare an erase work. * @ubi: UBI device description object * @e: the WL entry of the physical eraseblock to erase * @vol_id: the volume ID that last used this PEB * @lnum: the last used logical eraseblock number for the PEB * @torture: if the physical eraseblock has to be tortured * - * This function returns zero in case of success and a %-ENOMEM in case of - * failure. + * This function returns a struct ubi_work in case of success + * and an ERR_PTR(%-ENOMEM) in case of failure. */ -static int schedule_erase(struct ubi_device *ubi, struct ubi_wl_entry *e, - int vol_id, int lnum, int torture) +static struct ubi_work *prepare_erase_work(struct ubi_wl_entry *e, int vol_id, + int lnum, int torture) { struct ubi_work *wl_wrk; ubi_assert(e); - dbg_wl("schedule erasure of PEB %d, EC %d, torture %d", - e->pnum, e->ec, torture); - wl_wrk = kmalloc(sizeof(struct ubi_work), GFP_NOFS); if (!wl_wrk) - return -ENOMEM; + return ERR_PTR(-ENOMEM); wl_wrk->func = &erase_worker; wl_wrk->e = e; @@ -599,6 +596,31 @@ static int schedule_erase(struct ubi_device *ubi, struct ubi_wl_entry *e, wl_wrk->lnum = lnum; wl_wrk->torture = torture; + return wl_wrk; +} + +/** + * schedule_erase - schedule an erase work. + * @ubi: UBI device description object + * @e: the WL entry of the physical eraseblock to erase + * @vol_id: the volume ID that last used this PEB + * @lnum: the last used logical eraseblock number for the PEB + * @torture: if the physical eraseblock has to be tortured + * + * This function returns zero in case of success and a %-ENOMEM in case of + * failure. + */ +static int schedule_erase(struct ubi_device *ubi, struct ubi_wl_entry *e, + int vol_id, int lnum, int torture) +{ + struct ubi_work *wl_wrk = prepare_erase_work(e, vol_id, lnum, torture); + + dbg_wl("schedule erasure of PEB %d, EC %d, torture %d", + e->pnum, e->ec, torture); + + if (IS_ERR(wl_wrk)) + return PTR_ERR(wl_wrk); + schedule_ubi_work(ubi, wl_wrk); return 0; } -- 1.8.4.5
WARNING: multiple messages have this Message-ID (diff)
From: Richard Weinberger <richard@nod.at> To: linux-mtd@lists.infradead.org Cc: Richard Weinberger <richard@nod.at>, boris.brezillon@free-electrons.com, linux-kernel@vger.kernel.org, dedekind1@gmail.com Subject: [PATCH 2/4] UBI: Introduce prepare_erase_work() Date: Sun, 29 Mar 2015 14:13:15 +0200 [thread overview] Message-ID: <1427631197-23610-3-git-send-email-richard@nod.at> (raw) In-Reply-To: <1427631197-23610-1-git-send-email-richard@nod.at> Split ubi_work creation and scheduling code such that we can re-use the creation code where we schedule ubi work on our own. Signed-off-by: Richard Weinberger <richard@nod.at> --- drivers/mtd/ubi/wl.c | 40 +++++++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/drivers/mtd/ubi/wl.c b/drivers/mtd/ubi/wl.c index cefc767..13594e9 100644 --- a/drivers/mtd/ubi/wl.c +++ b/drivers/mtd/ubi/wl.c @@ -569,29 +569,26 @@ static int erase_worker(struct ubi_device *ubi, struct ubi_work *wl_wrk, int shutdown); /** - * schedule_erase - schedule an erase work. + * prepare_erase_work - prepare an erase work. * @ubi: UBI device description object * @e: the WL entry of the physical eraseblock to erase * @vol_id: the volume ID that last used this PEB * @lnum: the last used logical eraseblock number for the PEB * @torture: if the physical eraseblock has to be tortured * - * This function returns zero in case of success and a %-ENOMEM in case of - * failure. + * This function returns a struct ubi_work in case of success + * and an ERR_PTR(%-ENOMEM) in case of failure. */ -static int schedule_erase(struct ubi_device *ubi, struct ubi_wl_entry *e, - int vol_id, int lnum, int torture) +static struct ubi_work *prepare_erase_work(struct ubi_wl_entry *e, int vol_id, + int lnum, int torture) { struct ubi_work *wl_wrk; ubi_assert(e); - dbg_wl("schedule erasure of PEB %d, EC %d, torture %d", - e->pnum, e->ec, torture); - wl_wrk = kmalloc(sizeof(struct ubi_work), GFP_NOFS); if (!wl_wrk) - return -ENOMEM; + return ERR_PTR(-ENOMEM); wl_wrk->func = &erase_worker; wl_wrk->e = e; @@ -599,6 +596,31 @@ static int schedule_erase(struct ubi_device *ubi, struct ubi_wl_entry *e, wl_wrk->lnum = lnum; wl_wrk->torture = torture; + return wl_wrk; +} + +/** + * schedule_erase - schedule an erase work. + * @ubi: UBI device description object + * @e: the WL entry of the physical eraseblock to erase + * @vol_id: the volume ID that last used this PEB + * @lnum: the last used logical eraseblock number for the PEB + * @torture: if the physical eraseblock has to be tortured + * + * This function returns zero in case of success and a %-ENOMEM in case of + * failure. + */ +static int schedule_erase(struct ubi_device *ubi, struct ubi_wl_entry *e, + int vol_id, int lnum, int torture) +{ + struct ubi_work *wl_wrk = prepare_erase_work(e, vol_id, lnum, torture); + + dbg_wl("schedule erasure of PEB %d, EC %d, torture %d", + e->pnum, e->ec, torture); + + if (IS_ERR(wl_wrk)) + return PTR_ERR(wl_wrk); + schedule_ubi_work(ubi, wl_wrk); return 0; } -- 1.8.4.5
next prev parent reply other threads:[~2015-03-29 12:13 UTC|newest] Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-03-29 12:13 UBI: Bitrot checking Richard Weinberger 2015-03-29 12:13 ` Richard Weinberger 2015-03-29 12:13 ` [PATCH 1/4] UBI: Introduce ubi_schedule_fm_work() Richard Weinberger 2015-03-29 12:13 ` Richard Weinberger 2015-03-29 12:13 ` Richard Weinberger [this message] 2015-03-29 12:13 ` [PATCH 2/4] UBI: Introduce prepare_erase_work() Richard Weinberger 2015-03-29 12:13 ` [PATCH 3/4] UBI: Introduce in_pq() Richard Weinberger 2015-03-29 12:13 ` Richard Weinberger 2015-03-29 12:13 ` [PATCH 4/4] UBI: Implement bitrot checking Richard Weinberger 2015-03-29 12:13 ` Richard Weinberger 2015-04-02 17:34 ` Andrea Scian 2015-04-02 17:34 ` Andrea Scian 2015-04-02 17:54 ` Richard Weinberger 2015-04-02 17:54 ` Richard Weinberger 2015-04-02 19:19 ` Andrea Scian 2015-04-02 19:19 ` Andrea Scian 2015-04-08 10:34 ` Richard Weinberger 2015-04-08 10:34 ` Richard Weinberger 2015-04-08 21:02 ` Andrea Scian 2015-04-08 21:02 ` Andrea Scian 2015-04-08 11:48 ` David Oberhollenzer 2015-04-12 14:12 ` Boris Brezillon 2015-04-12 16:09 ` Richard Weinberger 2015-04-12 16:43 ` Boris Brezillon 2015-04-12 16:55 ` Richard Weinberger 2015-04-12 20:42 ` [PATCH 4/4] UBI: Implement bitrot checking (linux-mtd Digest, Vol 145, Issue 24) Andrea Scian 2015-04-12 20:42 ` Andrea Scian 2015-04-12 21:01 ` Richard Weinberger 2015-04-12 21:01 ` Richard Weinberger 2015-04-12 21:30 ` Boris Brezillon 2015-04-12 21:37 ` Richard Weinberger 2015-04-12 21:33 ` Andrea Scian 2015-04-12 21:33 ` Andrea Scian 2015-04-12 21:42 ` Richard Weinberger 2015-04-12 21:42 ` Richard Weinberger 2015-04-13 17:17 ` linux-mtd digest emails (was Re: [PATCH 4/4] UBI: Implement bitrot checking) Brian Norris 2015-04-13 17:17 ` Brian Norris 2015-04-12 15:14 ` [PATCH 4/4] UBI: Implement bitrot checking Boris Brezillon 2015-04-12 16:14 ` Richard Weinberger 2015-04-12 16:31 ` Boris Brezillon 2015-04-12 16:32 ` Richard Weinberger 2015-04-12 17:01 ` Boris Brezillon 2015-04-12 17:09 ` Richard Weinberger 2015-04-12 19:20 ` Boris Brezillon 2015-04-12 19:53 ` Richard Weinberger 2015-04-12 21:24 ` Boris Brezillon 2015-04-12 21:34 ` Richard Weinberger 2015-04-13 3:36 ` nick 2015-04-12 17:36 ` Richard Weinberger [not found] <mailman.40253.1428858576.22890.linux-mtd@lists.infradead.org> [not found] <mailman.38750.1427638218.22890.linux-mtd@lists.infradead.org>
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=1427631197-23610-3-git-send-email-richard@nod.at \ --to=richard@nod.at \ --cc=boris.brezillon@free-electrons.com \ --cc=dedekind1@gmail.com \ --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: linkBe 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.