summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2014-06-10 10:56:55 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2014-06-13 16:07:46 +0200
commit73bf499ce7710ff8e75833042f88d1ff5b3e84fa (patch)
tree96a60b16f8d9874bdf124ec1e7f935fcc08c6460
parent2ba2743f066742fe05b49707c86897b7ad9b247d (diff)
JFFS2: Add device identifier for the flash device
It is used in combination with the inode number to uniquely identify a file system node in the system.
-rw-r--r--cpukit/libfs/src/jffs2/include/rtems/jffs2.h11
-rw-r--r--cpukit/libfs/src/jffs2/src/fs-rtems.c7
2 files changed, 15 insertions, 3 deletions
diff --git a/cpukit/libfs/src/jffs2/include/rtems/jffs2.h b/cpukit/libfs/src/jffs2/include/rtems/jffs2.h
index e69fc20363..7b2f4d5de2 100644
--- a/cpukit/libfs/src/jffs2/include/rtems/jffs2.h
+++ b/cpukit/libfs/src/jffs2/include/rtems/jffs2.h
@@ -118,7 +118,8 @@ typedef struct rtems_jffs2_flash_control rtems_jffs2_flash_control;
* .flash_size = FLASH_SIZE,
* .read = flash_read,
* .write = flash_write,
- * .erase = flash_erase
+ * .erase = flash_erase,
+ * .device_identifier = 0xc01dc0fe
* }
* };
*
@@ -265,6 +266,14 @@ struct rtems_jffs2_flash_control {
* This operation is optional and the pointer may be @c NULL.
*/
rtems_jffs2_flash_destroy destroy;
+
+ /**
+ * @brief The device identifier of the flash device.
+ *
+ * It is used in combination with the inode number to uniquely identify a
+ * file system node in the system.
+ */
+ dev_t device_identifier;
};
typedef struct rtems_jffs2_compressor_control rtems_jffs2_compressor_control;
diff --git a/cpukit/libfs/src/jffs2/src/fs-rtems.c b/cpukit/libfs/src/jffs2/src/fs-rtems.c
index 85f9edef8f..00a52bd796 100644
--- a/cpukit/libfs/src/jffs2/src/fs-rtems.c
+++ b/cpukit/libfs/src/jffs2/src/fs-rtems.c
@@ -405,9 +405,12 @@ static int rtems_jffs2_fstat(
)
{
struct _inode *inode = rtems_jffs2_get_inode_by_location(loc);
+ struct super_block *sb = inode->i_sb;
+ rtems_jffs2_flash_control *fc = sb->s_flash_control;
- rtems_jffs2_do_lock(inode->i_sb);
+ rtems_jffs2_do_lock(sb);
+ buf->st_dev = fc->device_identifier;
buf->st_blksize = PAGE_SIZE;
buf->st_mode = inode->i_mode;
buf->st_ino = inode->i_ino;
@@ -419,7 +422,7 @@ static int rtems_jffs2_fstat(
buf->st_mtime = inode->i_mtime;
buf->st_ctime = inode->i_ctime;
- rtems_jffs2_do_unlock(inode->i_sb);
+ rtems_jffs2_do_unlock(sb);
return 0;
}