ref: c1185991fa175c25b4ba47160784e64bc5deb4ce
parent: 4c155036f9ce3a74bc3eb3bb79725616d3b6c125
author: gkostka <[email protected]>
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)