Messages in this thread | | | Date | Sun, 12 Apr 2015 19:01:19 +0200 | From | Boris Brezillon <> | Subject | Re: [PATCH 4/4] UBI: Implement bitrot checking |
| |
Hi Richard,
After the 'coding style related'/'useless' comments, now comes a real question related to the approach you've taken :-).
On Sun, 29 Mar 2015 14:13:17 +0200 Richard Weinberger <richard@nod.at> wrote:
[...] > + > +/** > + * ubi_wl_trigger_bitrot_check - triggers a re-read of all physical erase > + * blocks. > + * @ubi: UBI device description object > + */ > +void ubi_wl_trigger_bitrot_check(struct ubi_device *ubi) > +{ > + int i; > + struct ubi_wl_entry *e; > + > + ubi_msg(ubi, "Running a full read check"); > + > + for (i = 0; i < ubi->peb_count; i++) { > + spin_lock(&ubi->wl_lock); > + e = ubi->lookuptbl[i]; > + spin_unlock(&ubi->wl_lock); > + if (e) { > + atomic_inc(&ubi->bit_rot_work); > + schedule_bitrot_check(ubi, e); > + } > + }
Do we really need to create a ubi_work per PEB ? Couldn't we create a single work being rescheduled inside the worker function (after updating the ubi_wl_entry of course).
I'm pretty sure I'm missing something obvious that you'll probably point out ;-).
-- Boris Brezillon, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com
| |