diff --git a/fs/inode/fs_inodereserve.c b/fs/inode/fs_inodereserve.c index ffbf509fde5..aca557913c6 100644 --- a/fs/inode/fs_inodereserve.c +++ b/fs/inode/fs_inodereserve.c @@ -32,6 +32,12 @@ #include "inode/inode.h" +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static ino_t g_ino; + /**************************************************************************** * Private Functions ****************************************************************************/ @@ -78,6 +84,7 @@ static FAR struct inode *inode_alloc(FAR const char *name, mode_t mode) node = (FAR struct inode *)kmm_zalloc(FSNODE_SIZE(namelen)); if (node) { + node->i_ino = g_ino++; #ifdef CONFIG_PSEUDOFS_ATTRIBUTES node->i_mode = mode; clock_gettime(CLOCK_REALTIME, &node->i_atime); diff --git a/fs/vfs/fs_stat.c b/fs/vfs/fs_stat.c index e4048f89339..06b9afff069 100644 --- a/fs/vfs/fs_stat.c +++ b/fs/vfs/fs_stat.c @@ -438,6 +438,7 @@ int inode_stat(FAR struct inode *inode, FAR struct stat *buf, int resolve) buf->st_mtim = inode->i_mtime; buf->st_ctim = inode->i_ctime; #endif + buf->st_ino = inode->i_ino; return OK; } diff --git a/include/nuttx/fs/fs.h b/include/nuttx/fs/fs.h index 92ffdc432ee..05cd0c7fe1f 100644 --- a/include/nuttx/fs/fs.h +++ b/include/nuttx/fs/fs.h @@ -393,6 +393,7 @@ struct inode int16_t i_crefs; /* References to inode */ uint16_t i_flags; /* Flags for inode */ union inode_ops_u u; /* Inode operations */ + ino_t i_ino; /* Inode serial number */ #ifdef CONFIG_PSEUDOFS_ATTRIBUTES mode_t i_mode; /* Access mode flags */ uid_t i_owner; /* Owner */