shithub: lwext4

Download patch

ref: c1185991fa175c25b4ba47160784e64bc5deb4ce
parent: 4c155036f9ce3a74bc3eb3bb79725616d3b6c125
author: gkostka <kostka.grzegorz@gmail.com>
date: Wed Jan 18 17:35:36 EST 2017

ext4: add ext4_cache_flush for explicit cache flush

--- a/include/ext4.h
+++ b/include/ext4.h
@@ -234,6 +234,14 @@
  * @return  standard error code */
 int ext4_cache_write_back(const char *path, bool on);
 
+
+/**@brief   Force cache flush.
+ *
+ * @param   path mount point path
+ *
+ * @return  standard error code */
+int ext4_cache_flush(const char *path);
+
 /********************************FILE OPERATIONS*****************************/
 
 /**@brief   Remove file by path.
--- a/src/ext4.c
+++ b/src/ext4.c
@@ -1387,14 +1387,29 @@
 int ext4_cache_write_back(const char *path, bool on)
 {
 	struct ext4_mountpoint *mp = ext4_get_mount(path);
+	int ret;
 
 	if (!mp)
 		return ENOENT;
 
 	EXT4_MP_LOCK(mp);
-	ext4_block_cache_write_back(mp->fs.bdev, on);
+	ret = ext4_block_cache_write_back(mp->fs.bdev, on);
 	EXT4_MP_UNLOCK(mp);
-	return EOK;
+	return ret;
+}
+
+int ext4_cache_flush(const char *path)
+{
+	struct ext4_mountpoint *mp = ext4_get_mount(path);
+	int ret;
+
+	if (!mp)
+		return ENOENT;
+
+	EXT4_MP_LOCK(mp);
+	ret = ext4_block_cache_flush(mp->fs.bdev);
+	EXT4_MP_UNLOCK(mp);
+	return ret;
 }
 
 int ext4_fremove(const char *path)