Messages in this thread | | | From | Richard Weinberger <> | Date | Wed, 3 Jun 2020 09:03:42 +0200 | Subject | Re: [PATCH v2] jffs2: fix jffs2 mounting failure |
| |
On Thu, Apr 23, 2020 at 4:58 AM Zhe Li <lizhe67@huawei.com> wrote: > > Mounting jffs2 on nand flash will get message "failed: I/O error" > with the steps listed below. > 1.erase nand flash > 2.mount jffs2 on it (this mounting operation will be successful) > 3.do chown or chmod to the mount point directory > 4.umount jffs2 > 5.mount jffs2 on nand flash > After step 5, we will get message "mount ... failed: I/O error".
The important step is missing. You need to unmount before jffs2 is done with erasing.
> if (c->nr_erasing_blocks) { > - if ( !c->used_size && ((c->nr_free_blocks+empty_blocks+bad_blocks)!= c->nr_blocks || bad_blocks == c->nr_blocks) ) { > + if (!c->used_size && ((c->nr_free_blocks+empty_blocks+bad_blocks) != c->nr_blocks || bad_blocks == c->nr_blocks) && > + !(has_root_inode(c) && !has_other_inode(c))) {
I see the problem but I don't think it is wise to implement such a workaround. IIUC the real issue is that c->used_size being zero but c->nr_free_blocks+empty_blocks+bad_blocks does not sum up correctly in this situation.
-- Thanks, //richard
| |