[PATCH] libfs/jffs2: Force the inode size to a non-zero value if a directory.
Chris Johns
chrisj at rtems.org
Mon Mar 12 23:49:14 UTC 2018
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.
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);
--
2.14.1
More information about the devel
mailing list