diff --git a/doc/api/fs.md b/doc/api/fs.md index a44bbd368eef44..ce29e3348538f2 100644 --- a/doc/api/fs.md +++ b/doc/api/fs.md @@ -2808,6 +2808,11 @@ The following constants are meant for use with `fs.open()`. O_SYNC Flag indicating that the file is opened for synchronous I/O. + + O_DSYNC + Flag indicating that the file is opened for synchronous I/O + with write operations waiting for data integrity. + O_SYMLINK Flag indicating to open the symbolic link itself rather than the diff --git a/src/node_constants.cc b/src/node_constants.cc index 7fd303dd32fed0..787f44a1f1643e 100644 --- a/src/node_constants.cc +++ b/src/node_constants.cc @@ -1089,6 +1089,11 @@ void DefineSystemConstants(Local target) { NODE_DEFINE_CONSTANT(target, O_SYNC); #endif +#ifdef O_DSYNC + NODE_DEFINE_CONSTANT(target, O_DSYNC); +#endif + + #ifdef O_SYMLINK NODE_DEFINE_CONSTANT(target, O_SYMLINK); #endif diff --git a/test/parallel/test-fs-open-flags.js b/test/parallel/test-fs-open-flags.js index 873bd7112828eb..f480ede4e368e6 100644 --- a/test/parallel/test-fs-open-flags.js +++ b/test/parallel/test-fs-open-flags.js @@ -22,6 +22,7 @@ // Flags: --expose_internals 'use strict'; const common = require('../common'); +const fixtures = require('../common/fixtures'); const assert = require('assert'); const fs = require('fs'); @@ -32,6 +33,7 @@ const O_EXCL = fs.constants.O_EXCL || 0; const O_RDONLY = fs.constants.O_RDONLY || 0; const O_RDWR = fs.constants.O_RDWR || 0; const O_SYNC = fs.constants.O_SYNC || 0; +const O_DSYNC = fs.constants.O_DSYNC || 0; const O_TRUNC = fs.constants.O_TRUNC || 0; const O_WRONLY = fs.constants.O_WRONLY || 0; @@ -78,3 +80,11 @@ common.expectsError( () => stringToFlags(null), { code: 'ERR_INVALID_OPT_VALUE', type: TypeError } ); + +if (common.isLinux === true) { + const file = fixtures.path('a.js'); + + fs.open(file, O_DSYNC, common.mustCall(function(err, fd) { + assert.ifError(err); + })); +}