Skip to main content

libfuse_fs/overlayfs/
config.rs

1// Copyright (C) 2023 Ant Group. All rights reserved.
2//  2024 From [fuse_backend_rs](https://github.com/cloud-hypervisor/fuse-backend-rs)
3// SPDX-License-Identifier: Apache-2.0
4
5use self::super::CachePolicy;
6use std::{fmt, path::PathBuf};
7
8#[derive(Default, Clone, Debug)]
9pub struct Config {
10    pub mountpoint: PathBuf,
11    pub do_import: bool,
12    // Filesystem options.
13    pub writeback: bool,
14    pub no_open: bool,
15    pub no_opendir: bool,
16    pub killpriv_v2: bool,
17    pub no_readdir: bool,
18    pub perfile_dax: bool,
19    pub cache_policy: CachePolicy,
20}
21
22impl Clone for CachePolicy {
23    fn clone(&self) -> Self {
24        match *self {
25            CachePolicy::Never => CachePolicy::Never,
26            CachePolicy::Always => CachePolicy::Always,
27            CachePolicy::Auto => CachePolicy::Auto,
28        }
29    }
30}
31
32impl fmt::Debug for CachePolicy {
33    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
34        let policy = match *self {
35            CachePolicy::Never => "Never",
36            CachePolicy::Always => "Always",
37            CachePolicy::Auto => "Auto",
38        };
39
40        write!(f, "CachePolicy: {policy}")
41    }
42}