[PATCH] erofs-utils: introduce fsck.erofs

Daeho Jeong daeho43 at gmail.com
Fri Oct 29 09:25:50 AEDT 2021


On Thu, Oct 28, 2021 at 3:20 PM Gao Xiang <xiang at kernel.org> wrote:
>
> On Thu, Oct 28, 2021 at 10:10:03AM -0700, Daeho Jeong wrote:
> > > > In fact, I wanted to decompress the whole data here. We can't check
> > > > the data integrity,
> > > > so I just wanted to check the layout of the file and that is the
> > > > reason why I used z_erofs_map_blocks_iter() directly.
> > >
> > > Yeah, z_erofs_map_blocks_iter() here is good, yet I think we could
> > > add a follow-up z_erofs_decompress() as well, at least it can verify
> > > obvious compressed data corruption.
> >
> > Could you enlighten me what is wrong with the below flow?
> > z_erofs_decompress fails with -EIO or -EUCLEAN.
> >
> >         raw = malloc(pchunk_len);
> >         BUG_ON(!raw);
> >         buffer = malloc(inode->i_size);
> >         BUG_ON(!buffer);
> >
> >         ret = dev_read(raw, 0, pchunk_len);
> >         if (ret < 0) {
> >                 erofs_err("an error occurred when reading compressed data "
> >                           "of nid(%llu): errno(%d)", inode->nid | 0ULL, ret);
> >                 goto out;
> >         }
> >
> >         ret = z_erofs_decompress(&(struct z_erofs_decompress_req) {
> >                                 .in = raw,
> >                                 .out = buffer,
> >                                 .decodedskip = 0,
> >                                 .inputsize = pchunk_len,
> >                                 .decodedlength = inode->i_size,
>
> I guess try to pass map.m_llen here? since we need to decode pcluster
> one-by-one....

Oh, I had to decompress them by cluster, not the whole file. Got it.

Thanks,

>
> Thanks,
> Gao Xiang
>
> >                                 .alg = algorithmformat,
> >                                 .partial_decoding = 0
> >                                  });


More information about the Linux-erofs mailing list