problems writing an fs image to a disk partition

Sascha Hauer s.hauer at pengutronix.de
Wed Sep 12 00:12:57 PDT 2018


Hi Giorgio,

On Tue, Sep 11, 2018 at 10:33:52PM +0200, Giorgio Dal Molin wrote:
> Hi,
> 
> today I've tried barebox v2018.09.0 on an EFI system.
> It basically runs but I have problems when writing an fs image file
> to a disk partition:
> 
>  > cp rootfs.img /dev/disk1.userland
> 
> barebox v2018.09.0 returns a 'no space left on device' error.
> 
> First of all I must ask if this is still the proper way to
> write a content to a disk partition.

Yes, it is. You found a bug.

> 
> In case this should still work as expected here is a pseudo
> backtrace of how the error happens on my system:
> 
> commands/cp.c:do_cp() ret = copy_file(argv[i], argv[argc - 1], verbose);
> lib/libfile.c:copy_file() dstfd = open(dst, mode);
> fs/fs.c:open() error = fsdrv->truncate(&fsdev->dev, f, 0);
> fs/devfs.c: devfs_truncate()
> 
> in the call to devfs_truncate() I see cdev->ops->truncate == NULL
> and f->fsdev->dev.num_resources == 0 and this makes the function
> return -ENOSPC.
> 
> Hope the report helps identify a problem.

Yes, indeed, thanks. The problem was that with the switch to dentry
cache implementation the files in /dev/ no longer appear as character
devices but as regular files. the copy_file function then does a
truncate on the files which fails. I just sent out a patch addressing
this issue, please test. I would also recommend to take the second patch
although this fixes another issue.

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list