To make sure that data is not cached by the host os, we cannot drop
O_DSYNC when O_DIRECT is not set.

Signed-off-by: MORITA Kazutaka <[email protected]>
---
 sheep/plain_store.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/sheep/plain_store.c b/sheep/plain_store.c
index 9ff2fc3..57d4d79 100644
--- a/sheep/plain_store.c
+++ b/sheep/plain_store.c
@@ -139,7 +139,8 @@ int default_write(uint64_t oid, const struct siocb *iocb)
        }
 
        get_obj_path(oid, path);
-       if (iocb->flags & SD_FLAG_CMD_CACHE && is_disk_cache_enabled())
+       if (iocb->flags & SD_FLAG_CMD_CACHE && is_disk_cache_enabled() &&
+           flags & O_DIRECT)
                flags &= ~O_DSYNC;
        fd = open(path, flags, def_fmode);
        if (fd < 0)
@@ -302,7 +303,8 @@ int default_create_and_write(uint64_t oid, const struct 
siocb *iocb)
        get_obj_path(oid, path);
        get_tmp_obj_path(oid, tmp_path);
 
-       if (iocb->flags & SD_FLAG_CMD_CACHE && is_disk_cache_enabled())
+       if (iocb->flags & SD_FLAG_CMD_CACHE && is_disk_cache_enabled() &&
+           flags & O_DIRECT)
                flags &= ~O_DSYNC;
 
        fd = open(tmp_path, flags, def_fmode);
-- 
1.7.2.5

-- 
sheepdog mailing list
[email protected]
http://lists.wpkg.org/mailman/listinfo/sheepdog

Reply via email to