[PATCH] libfs/jffs2: Force the inode size to a non-zero value if a directory.

Sebastian Huber sebastian.huber at embedded-brains.de
Tue Mar 13 06:18:05 UTC 2018


On 13/03/18 00:49, Chris Johns wrote:
> Set the inode size to 256 to work around a newlib scandir check where a
> directory has to have a non-zero size to work. Set the size to greater than
> 24 bytes, a small dirent size so the allocator in scandir works.
>
> The newlib scandir code should be updated to a more recent scandir from
> FreeBSD where these checks have been removed. This change is a work
> around to avoid new tools on the release branch.
>
> With this change scandir works on IMFS, RFS and JFFS2.

I cannot find a scandir() test in the fstests for all file systems.

>
> Closes #3332
> ---
>   cpukit/libfs/src/jffs2/src/fs-rtems.c | 3 +++
>   1 file changed, 3 insertions(+)
>
> diff --git a/cpukit/libfs/src/jffs2/src/fs-rtems.c b/cpukit/libfs/src/jffs2/src/fs-rtems.c
> index ce84d44470..790929d856 100644
> --- a/cpukit/libfs/src/jffs2/src/fs-rtems.c
> +++ b/cpukit/libfs/src/jffs2/src/fs-rtems.c
> @@ -1512,6 +1512,9 @@ static int jffs2_read_inode (struct _inode *inode)
>   	inode->i_mtime = je32_to_cpu(latest_node.mtime);
>   	inode->i_ctime = je32_to_cpu(latest_node.ctime);
>   
> +	if (S_ISDIR(inode->i_mode))
> +		inode->i_size = 256;
> +
>   	inode->i_nlink = f->inocache->pino_nlink;
>   	mutex_unlock(&f->sem);
>   

This code is from the original JFFS2 support for eCos. Which 
side-effects has this i_size change for directories? Why can't you place 
this hack in rtems_jffs2_fstat()? This would reduce the impact area of 
this change.

-- 
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.huber at embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.




More information about the devel mailing list