You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by ar...@apache.org on 2022/09/20 08:21:13 UTC

[incubator-nuttx] 02/03: fs: Allocate unique serial number for the root pseduo file system node

This is an automated email from the ASF dual-hosted git repository.

archer pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit db518bf0dfbaeae3d10d3c7656e4be39e6176ef9
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Fri Sep 16 14:24:55 2022 +0800

    fs: Allocate unique serial number for the root pseduo file system node
    
    Signed-off-by: Xiang Xiao <xi...@xiaomi.com>
---
 fs/inode/fs_inodereserve.c | 7 +++++++
 fs/vfs/fs_stat.c           | 1 +
 include/nuttx/fs/fs.h      | 1 +
 3 files changed, 9 insertions(+)

diff --git a/fs/inode/fs_inodereserve.c b/fs/inode/fs_inodereserve.c
index ffbf509fde..aca557913c 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 e4048f8933..06b9afff06 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 92ffdc432e..05cd0c7fe1 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 */