summaryrefslogtreecommitdiffstats
path: root/cpukit/libfs/src/jffs2
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/libfs/src/jffs2')
-rw-r--r--cpukit/libfs/src/jffs2/include/rtems/jffs2.h8
-rw-r--r--cpukit/libfs/src/jffs2/src/fs-rtems.c3
2 files changed, 11 insertions, 0 deletions
diff --git a/cpukit/libfs/src/jffs2/include/rtems/jffs2.h b/cpukit/libfs/src/jffs2/include/rtems/jffs2.h
index 39c9420e62..11735cbb09 100644
--- a/cpukit/libfs/src/jffs2/include/rtems/jffs2.h
+++ b/cpukit/libfs/src/jffs2/include/rtems/jffs2.h
@@ -555,6 +555,14 @@ typedef struct {
*/
#define RTEMS_JFFS2_GET_INFO _IOR('F', 1, rtems_jffs2_info)
+/**
+ * @brief IO control to force a garbage collection in a JFFS2 filesystem
+ * instance.
+ *
+ * Use this operation with care since it may wear out your flash.
+ */
+#define RTEMS_JFFS2_FORCE_GARBAGE_COLLECTION _IO('F', 3)
+
/** @} */
#ifdef __cplusplus
diff --git a/cpukit/libfs/src/jffs2/src/fs-rtems.c b/cpukit/libfs/src/jffs2/src/fs-rtems.c
index c8045dbed7..5f57a16bcb 100644
--- a/cpukit/libfs/src/jffs2/src/fs-rtems.c
+++ b/cpukit/libfs/src/jffs2/src/fs-rtems.c
@@ -568,6 +568,9 @@ static int rtems_jffs2_ioctl(
rtems_jffs2_get_info(&inode->i_sb->jffs2_sb, buffer);
eno = 0;
break;
+ case RTEMS_JFFS2_FORCE_GARBAGE_COLLECTION:
+ eno = -jffs2_garbage_collect_pass(&inode->i_sb->jffs2_sb);
+ break;
default:
eno = EINVAL;
break;