blob: 45a58c01456c04e0075c7e7f62cb0bcb1ea0157a [file] [log] [blame]
// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef STORAGE_COMMON_FILE_SYSTEM_FILE_SYSTEM_MOUNT_OPTION_H_
#define STORAGE_COMMON_FILE_SYSTEM_FILE_SYSTEM_MOUNT_OPTION_H_
namespace storage {
// Option for specifying if flush or disk sync operation is wanted after
// writing.
enum class FlushPolicy {
// Specify this policy if flushing (with FlushMode::kEndOfFile) is required
// in order to commit written data.
//
// Note that syncing is only invoked via FileStreamWriter::Flush() and via
// base::File::Flush() for native files. Hence, syncing will not be performed
// for copying within non-native file systems as well as for non-native
// copies performed with snapshots.
FLUSH_ON_COMPLETION,
// Specify this policy if no flushing is required after a writing operation is
// completed.
NO_FLUSH_ON_COMPLETION
};
// Conveys options for a mounted file systems.
class FileSystemMountOption {
public:
// Constructs with the default options.
FileSystemMountOption()
: flush_policy_(FlushPolicy::NO_FLUSH_ON_COMPLETION) {}
// Constructs with the specified component.
explicit FileSystemMountOption(FlushPolicy flush_policy)
: flush_policy_(flush_policy) {}
FlushPolicy flush_policy() const { return flush_policy_; }
private:
FlushPolicy flush_policy_;
};
} // namespace storage
#endif // STORAGE_COMMON_FILE_SYSTEM_FILE_SYSTEM_MOUNT_OPTION_H_