mirror of https://github.com/trapexit/mergerfs.git
40 changed files with 796 additions and 969 deletions
-
2src/fs_lremovexattr.hpp
-
18src/fuse_fgetattr.cpp
-
140src/fuse_getxattr.cpp
-
32src/fuse_listxattr.cpp
-
31src/fuse_mknod.cpp
-
169src/fuse_open.cpp
-
6src/fuse_opendir.cpp
-
19src/fuse_readdir.cpp
-
50src/fuse_readdir_policy.hpp
-
39src/fuse_readdir_policy_base.hpp
-
39src/fuse_readdir_policy_factory.cpp
-
30src/fuse_readdir_policy_factory.hpp
-
33src/fuse_readdir_policy_posix.cpp
-
42src/fuse_readdir_policy_posix.hpp
-
1src/fuse_readlink.cpp
-
19src/fuse_release.cpp
-
1src/fuse_releasedir.cpp
-
115src/fuse_removexattr.cpp
-
155src/fuse_rename.cpp
-
97src/fuse_rmdir.cpp
-
24src/fuse_statfs.cpp
-
7src/fuse_statfs.hpp
-
46src/fuse_statfs_policy.hpp
-
39src/fuse_statfs_policy_base.hpp
-
42src/fuse_statfs_policy_branch.hpp
-
41src/fuse_statfs_policy_factory.cpp
-
30src/fuse_statfs_policy_factory.hpp
-
33src/fuse_statfs_policy_full.cpp
-
38src/fuse_statfs_policy_full.hpp
-
86src/fuse_truncate.cpp
-
12src/fuse_write.cpp
-
84src/fuse_write_buf.cpp
-
51src/fuse_write_policy.hpp
-
38src/fuse_write_policy_base.hpp
-
38src/fuse_write_policy_factory.cpp
-
30src/fuse_write_policy_factory.hpp
-
33src/fuse_write_policy_null.cpp
-
38src/fuse_write_policy_null.hpp
-
4src/state.cpp
-
11src/state.hpp
@ -0,0 +1,50 @@ |
|||||
|
/*
|
||||
|
ISC License |
||||
|
|
||||
|
Copyright (c) 2022, Antonio SJ Musumeci <trapexit@spawn.link> |
||||
|
|
||||
|
Permission to use, copy, modify, and/or distribute this software for any |
||||
|
purpose with or without fee is hereby granted, provided that the above |
||||
|
copyright notice and this permission notice appear in all copies. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||||
|
*/ |
||||
|
|
||||
|
#pragma once
|
||||
|
|
||||
|
#include "fuse_readdir_policy_base.hpp"
|
||||
|
#include "fuse_readdir_policy_factory.hpp"
|
||||
|
|
||||
|
#include "fuse.h"
|
||||
|
|
||||
|
#include <memory>
|
||||
|
|
||||
|
|
||||
|
namespace FUSE::READDIR |
||||
|
{ |
||||
|
class Policy |
||||
|
{ |
||||
|
public: |
||||
|
Policy(const toml::value &toml_) |
||||
|
{ |
||||
|
_readdir = POLICY::factory(toml_); |
||||
|
} |
||||
|
|
||||
|
public: |
||||
|
int |
||||
|
operator()(const fuse_file_info_t *ffi_, |
||||
|
fuse_dirents_t *buf_) |
||||
|
{ |
||||
|
return (*_readdir)(ffi_,buf_); |
||||
|
} |
||||
|
|
||||
|
private: |
||||
|
POLICY::Base::Ptr _readdir; |
||||
|
}; |
||||
|
} |
@ -0,0 +1,39 @@ |
|||||
|
/*
|
||||
|
ISC License |
||||
|
|
||||
|
Copyright (c) 2022, Antonio SJ Musumeci <trapexit@spawn.link> |
||||
|
|
||||
|
Permission to use, copy, modify, and/or distribute this software for any |
||||
|
purpose with or without fee is hereby granted, provided that the above |
||||
|
copyright notice and this permission notice appear in all copies. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||||
|
*/ |
||||
|
|
||||
|
#pragma once
|
||||
|
|
||||
|
#include "fs_path.hpp"
|
||||
|
|
||||
|
#include "fuse.h"
|
||||
|
|
||||
|
#include <memory>
|
||||
|
|
||||
|
|
||||
|
namespace FUSE::READDIR::POLICY |
||||
|
{ |
||||
|
class Base |
||||
|
{ |
||||
|
public: |
||||
|
typedef std::shared_ptr<Base> Ptr; |
||||
|
|
||||
|
public: |
||||
|
virtual int operator()(const fuse_file_info_t *ffi, |
||||
|
fuse_dirents_t *buf) = 0; |
||||
|
}; |
||||
|
} |
@ -0,0 +1,39 @@ |
|||||
|
/*
|
||||
|
ISC License |
||||
|
|
||||
|
Copyright (c) 2022, Antonio SJ Musumeci <trapexit@spawn.link> |
||||
|
|
||||
|
Permission to use, copy, modify, and/or distribute this software for any |
||||
|
purpose with or without fee is hereby granted, provided that the above |
||||
|
copyright notice and this permission notice appear in all copies. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||||
|
*/ |
||||
|
|
||||
|
#include "fuse_readdir_policy_factory.hpp"
|
||||
|
|
||||
|
#include "fuse_readdir_policy_posix.hpp"
|
||||
|
|
||||
|
#include <stdexcept>
|
||||
|
|
||||
|
|
||||
|
namespace FUSE::READDIR::POLICY |
||||
|
{ |
||||
|
Base::Ptr |
||||
|
factory(const toml::value &toml_) |
||||
|
{ |
||||
|
std::string str; |
||||
|
|
||||
|
str = toml::find_or(toml_,"func","readdir","policy","posix"); |
||||
|
if(str == "posix") |
||||
|
return std::make_shared<POSIX>(toml_); |
||||
|
|
||||
|
throw std::runtime_error("readdir"); |
||||
|
} |
||||
|
} |
@ -0,0 +1,30 @@ |
|||||
|
/*
|
||||
|
ISC License |
||||
|
|
||||
|
Copyright (c) 2022, Antonio SJ Musumeci <trapexit@spawn.link> |
||||
|
|
||||
|
Permission to use, copy, modify, and/or distribute this software for any |
||||
|
purpose with or without fee is hereby granted, provided that the above |
||||
|
copyright notice and this permission notice appear in all copies. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||||
|
*/ |
||||
|
|
||||
|
#pragma once
|
||||
|
|
||||
|
#include "fuse_readdir_policy_base.hpp"
|
||||
|
|
||||
|
#include "toml.hpp"
|
||||
|
|
||||
|
|
||||
|
namespace FUSE::READDIR::POLICY |
||||
|
{ |
||||
|
Base::Ptr |
||||
|
factory(const toml::value &); |
||||
|
} |
@ -0,0 +1,33 @@ |
|||||
|
/*
|
||||
|
ISC License |
||||
|
|
||||
|
Copyright (c) 2022, Antonio SJ Musumeci <trapexit@spawn.link> |
||||
|
|
||||
|
Permission to use, copy, modify, and/or distribute this software for any |
||||
|
purpose with or without fee is hereby granted, provided that the above |
||||
|
copyright notice and this permission notice appear in all copies. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||||
|
*/ |
||||
|
|
||||
|
#include "fuse_readdir_policy_posix.hpp"
|
||||
|
|
||||
|
|
||||
|
FUSE::READDIR::POLICY::POSIX::POSIX(const toml::value &toml_) |
||||
|
: _branches(toml_) |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
|
||||
|
int |
||||
|
FUSE::READDIR::POLICY::POSIX::operator()(const fuse_file_info_t *ffi_, |
||||
|
fuse_dirents_t *buf_) |
||||
|
{ |
||||
|
return -ENOENT; |
||||
|
} |
@ -0,0 +1,42 @@ |
|||||
|
/*
|
||||
|
ISC License |
||||
|
|
||||
|
Copyright (c) 2022, Antonio SJ Musumeci <trapexit@spawn.link> |
||||
|
|
||||
|
Permission to use, copy, modify, and/or distribute this software for any |
||||
|
purpose with or without fee is hereby granted, provided that the above |
||||
|
copyright notice and this permission notice appear in all copies. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||||
|
*/ |
||||
|
|
||||
|
#pragma once
|
||||
|
|
||||
|
#include "fuse_readdir_policy_base.hpp"
|
||||
|
|
||||
|
#include "branches.hpp"
|
||||
|
|
||||
|
#include "toml.hpp"
|
||||
|
|
||||
|
|
||||
|
namespace FUSE::READDIR::POLICY |
||||
|
{ |
||||
|
class POSIX : public Base |
||||
|
{ |
||||
|
public: |
||||
|
POSIX(const toml::value &); |
||||
|
|
||||
|
public: |
||||
|
int operator()(const fuse_file_info_t *ffi, |
||||
|
fuse_dirents_t *buf) final; |
||||
|
|
||||
|
private: |
||||
|
Branches2 _branches; |
||||
|
}; |
||||
|
} |
@ -0,0 +1,46 @@ |
|||||
|
/*
|
||||
|
ISC License |
||||
|
|
||||
|
Copyright (c) 2022, Antonio SJ Musumeci <trapexit@spawn.link> |
||||
|
|
||||
|
Permission to use, copy, modify, and/or distribute this software for any |
||||
|
purpose with or without fee is hereby granted, provided that the above |
||||
|
copyright notice and this permission notice appear in all copies. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||||
|
*/ |
||||
|
|
||||
|
#pragma once
|
||||
|
|
||||
|
#include "fuse_statfs_policy_base.hpp"
|
||||
|
#include "fuse_statfs_policy_factory.hpp"
|
||||
|
|
||||
|
|
||||
|
namespace FUSE::STATFS |
||||
|
{ |
||||
|
class Policy |
||||
|
{ |
||||
|
public: |
||||
|
Policy(const toml::value &toml_) |
||||
|
{ |
||||
|
_statfs = POLICY::factory(toml_); |
||||
|
} |
||||
|
|
||||
|
public: |
||||
|
int |
||||
|
operator()(const gfs::path &fusepath_, |
||||
|
struct statvfs *fsstat_) |
||||
|
{ |
||||
|
return (*_statfs)(fusepath_,fsstat_); |
||||
|
} |
||||
|
|
||||
|
private: |
||||
|
POLICY::Base::Ptr _statfs; |
||||
|
}; |
||||
|
} |
@ -0,0 +1,39 @@ |
|||||
|
/*
|
||||
|
ISC License |
||||
|
|
||||
|
Copyright (c) 2022, Antonio SJ Musumeci <trapexit@spawn.link> |
||||
|
|
||||
|
Permission to use, copy, modify, and/or distribute this software for any |
||||
|
purpose with or without fee is hereby granted, provided that the above |
||||
|
copyright notice and this permission notice appear in all copies. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||||
|
*/ |
||||
|
|
||||
|
#pragma once
|
||||
|
|
||||
|
#include "fs_path.hpp"
|
||||
|
|
||||
|
#include <memory>
|
||||
|
|
||||
|
#include <sys/statvfs.h>
|
||||
|
|
||||
|
|
||||
|
namespace FUSE::STATFS::POLICY |
||||
|
{ |
||||
|
class Base |
||||
|
{ |
||||
|
public: |
||||
|
typedef std::shared_ptr<Base> Ptr; |
||||
|
|
||||
|
public: |
||||
|
virtual int operator()(const gfs::path &fusepath, |
||||
|
struct statvfs *fsstat) = 0; |
||||
|
}; |
||||
|
} |
@ -0,0 +1,42 @@ |
|||||
|
/*
|
||||
|
ISC License |
||||
|
|
||||
|
Copyright (c) 2022, Antonio SJ Musumeci <trapexit@spawn.link> |
||||
|
|
||||
|
Permission to use, copy, modify, and/or distribute this software for any |
||||
|
purpose with or without fee is hereby granted, provided that the above |
||||
|
copyright notice and this permission notice appear in all copies. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||||
|
*/ |
||||
|
|
||||
|
#pragma once
|
||||
|
|
||||
|
#include "fuse_statfs_policy_base.hpp"
|
||||
|
|
||||
|
#include "branches.hpp"
|
||||
|
|
||||
|
#include "toml.hpp"
|
||||
|
|
||||
|
|
||||
|
namespace FUSE::STATFS::POLICY |
||||
|
{ |
||||
|
class Branch : public Base |
||||
|
{ |
||||
|
public: |
||||
|
Branch(const toml::value &); |
||||
|
|
||||
|
public: |
||||
|
int operator()(const gfs::path &fusepath, |
||||
|
struct statvfs *fsstat) final; |
||||
|
|
||||
|
private: |
||||
|
Branches2 _branches; |
||||
|
}; |
||||
|
} |
@ -0,0 +1,41 @@ |
|||||
|
/*
|
||||
|
ISC License |
||||
|
|
||||
|
Copyright (c) 2022, Antonio SJ Musumeci <trapexit@spawn.link> |
||||
|
|
||||
|
Permission to use, copy, modify, and/or distribute this software for any |
||||
|
purpose with or without fee is hereby granted, provided that the above |
||||
|
copyright notice and this permission notice appear in all copies. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||||
|
*/ |
||||
|
|
||||
|
#include "fuse_statfs_policy_factory.hpp"
|
||||
|
#include "fuse_statfs_policy_branch.hpp"
|
||||
|
#include "fuse_statfs_policy_full.hpp"
|
||||
|
|
||||
|
#include <stdexcept>
|
||||
|
|
||||
|
|
||||
|
namespace FUSE::STATFS::POLICY |
||||
|
{ |
||||
|
Base::Ptr |
||||
|
factory(const toml::value &toml_) |
||||
|
{ |
||||
|
std::string str; |
||||
|
|
||||
|
str = toml::find_or(toml_,"func","readlink","policy","branch"); |
||||
|
if(str == "branch") |
||||
|
return std::make_shared<Branch>(toml_); |
||||
|
if(str == "full") |
||||
|
return std::make_shared<Full>(toml_); |
||||
|
|
||||
|
throw std::runtime_error("statfs"); |
||||
|
} |
||||
|
} |
@ -0,0 +1,30 @@ |
|||||
|
/*
|
||||
|
ISC License |
||||
|
|
||||
|
Copyright (c) 2022, Antonio SJ Musumeci <trapexit@spawn.link> |
||||
|
|
||||
|
Permission to use, copy, modify, and/or distribute this software for any |
||||
|
purpose with or without fee is hereby granted, provided that the above |
||||
|
copyright notice and this permission notice appear in all copies. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||||
|
*/ |
||||
|
|
||||
|
#pragma once
|
||||
|
|
||||
|
#include "fuse_statfs_policy_base.hpp"
|
||||
|
|
||||
|
#include "toml.hpp"
|
||||
|
|
||||
|
|
||||
|
namespace FUSE::STATFS::POLICY |
||||
|
{ |
||||
|
Base::Ptr |
||||
|
factory(const toml::value &); |
||||
|
} |
@ -0,0 +1,33 @@ |
|||||
|
/*
|
||||
|
ISC License |
||||
|
|
||||
|
Copyright (c) 2022, Antonio SJ Musumeci <trapexit@spawn.link> |
||||
|
|
||||
|
Permission to use, copy, modify, and/or distribute this software for any |
||||
|
purpose with or without fee is hereby granted, provided that the above |
||||
|
copyright notice and this permission notice appear in all copies. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||||
|
*/ |
||||
|
|
||||
|
#include "fuse_statfs_policy_full.hpp"
|
||||
|
|
||||
|
|
||||
|
FUSE::STATFS::POLICY::Full::Full(const toml::value &toml_) |
||||
|
: _branches(toml_) |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
|
||||
|
int |
||||
|
FUSE::STATFS::POLICY::Full::operator()(const gfs::path &fusepath_, |
||||
|
struct statvfs *fsstat) |
||||
|
{ |
||||
|
return 0; |
||||
|
} |
@ -0,0 +1,38 @@ |
|||||
|
/*
|
||||
|
ISC License |
||||
|
|
||||
|
Copyright (c) 2022, Antonio SJ Musumeci <trapexit@spawn.link> |
||||
|
|
||||
|
Permission to use, copy, modify, and/or distribute this software for any |
||||
|
purpose with or without fee is hereby granted, provided that the above |
||||
|
copyright notice and this permission notice appear in all copies. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||||
|
*/ |
||||
|
|
||||
|
#pragma once
|
||||
|
|
||||
|
#include "fuse_statfs_policy_full.hpp"
|
||||
|
|
||||
|
|
||||
|
namespace FUSE::STATFS::POLICY |
||||
|
{ |
||||
|
class Full : public Base |
||||
|
{ |
||||
|
public: |
||||
|
Full(const toml::value &); |
||||
|
|
||||
|
public: |
||||
|
int operator()(const gfs::path &fusepath, |
||||
|
struct statvfs *fsstat) final; |
||||
|
|
||||
|
private: |
||||
|
Branches2 _branches; |
||||
|
}; |
||||
|
} |
@ -0,0 +1,51 @@ |
|||||
|
/*
|
||||
|
ISC License |
||||
|
|
||||
|
Copyright (c) 2022, Antonio SJ Musumeci <trapexit@spawn.link> |
||||
|
|
||||
|
Permission to use, copy, modify, and/or distribute this software for any |
||||
|
purpose with or without fee is hereby granted, provided that the above |
||||
|
copyright notice and this permission notice appear in all copies. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||||
|
*/ |
||||
|
|
||||
|
#pragma once
|
||||
|
|
||||
|
#include "fuse_write_policy_base.hpp"
|
||||
|
#include "fuse_write_policy_factory.hpp"
|
||||
|
|
||||
|
#include "fuse_timeouts.h"
|
||||
|
|
||||
|
#include <memory>
|
||||
|
|
||||
|
|
||||
|
namespace FUSE::WRITE |
||||
|
{ |
||||
|
class Policy |
||||
|
{ |
||||
|
public: |
||||
|
Policy(const toml::value &toml_) |
||||
|
{ |
||||
|
_write = POLICY::factory(toml_); |
||||
|
} |
||||
|
|
||||
|
public: |
||||
|
int |
||||
|
operator()(const fuse_file_info_t *ffi_, |
||||
|
struct fuse_bufvec *buf_, |
||||
|
const off_t offset_) |
||||
|
{ |
||||
|
return (*_write)(ffi_,buf_,offset_); |
||||
|
} |
||||
|
|
||||
|
private: |
||||
|
POLICY::Base::Ptr _write; |
||||
|
}; |
||||
|
} |
@ -0,0 +1,38 @@ |
|||||
|
/*
|
||||
|
ISC License |
||||
|
|
||||
|
Copyright (c) 2022, Antonio SJ Musumeci <trapexit@spawn.link> |
||||
|
|
||||
|
Permission to use, copy, modify, and/or distribute this software for any |
||||
|
purpose with or without fee is hereby granted, provided that the above |
||||
|
copyright notice and this permission notice appear in all copies. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||||
|
*/ |
||||
|
|
||||
|
#pragma once
|
||||
|
|
||||
|
#include "fuse.h"
|
||||
|
|
||||
|
#include <memory>
|
||||
|
|
||||
|
|
||||
|
namespace FUSE::WRITE::POLICY |
||||
|
{ |
||||
|
class Base |
||||
|
{ |
||||
|
public: |
||||
|
typedef std::shared_ptr<Base> Ptr; |
||||
|
|
||||
|
public: |
||||
|
virtual int operator()(const fuse_file_info_t *ffi, |
||||
|
struct fuse_bufvec *buf, |
||||
|
const off_t offset) = 0; |
||||
|
}; |
||||
|
} |
@ -0,0 +1,38 @@ |
|||||
|
/*
|
||||
|
ISC License |
||||
|
|
||||
|
Copyright (c) 2022, Antonio SJ Musumeci <trapexit@spawn.link> |
||||
|
|
||||
|
Permission to use, copy, modify, and/or distribute this software for any |
||||
|
purpose with or without fee is hereby granted, provided that the above |
||||
|
copyright notice and this permission notice appear in all copies. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||||
|
*/ |
||||
|
|
||||
|
#include "fuse_write_policy_factory.hpp"
|
||||
|
#include "fuse_write_policy_null.hpp"
|
||||
|
|
||||
|
#include <stdexcept>
|
||||
|
|
||||
|
|
||||
|
namespace FUSE::WRITE::POLICY |
||||
|
{ |
||||
|
Base::Ptr |
||||
|
factory(const toml::value &toml_) |
||||
|
{ |
||||
|
std::string str; |
||||
|
|
||||
|
str = toml::find_or(toml_,"func","write","policy","null"); |
||||
|
if(str == "null") |
||||
|
return std::make_shared<null>(toml_); |
||||
|
|
||||
|
throw std::runtime_error("write"); |
||||
|
} |
||||
|
} |
@ -0,0 +1,30 @@ |
|||||
|
/*
|
||||
|
ISC License |
||||
|
|
||||
|
Copyright (c) 2022, Antonio SJ Musumeci <trapexit@spawn.link> |
||||
|
|
||||
|
Permission to use, copy, modify, and/or distribute this software for any |
||||
|
purpose with or without fee is hereby granted, provided that the above |
||||
|
copyright notice and this permission notice appear in all copies. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||||
|
*/ |
||||
|
|
||||
|
#pragma once
|
||||
|
|
||||
|
#include "fuse_write_policy_base.hpp"
|
||||
|
|
||||
|
#include "toml.hpp"
|
||||
|
|
||||
|
|
||||
|
namespace FUSE::WRITE::POLICY |
||||
|
{ |
||||
|
Base::Ptr |
||||
|
factory(const toml::value &); |
||||
|
} |
@ -0,0 +1,33 @@ |
|||||
|
/*
|
||||
|
ISC License |
||||
|
|
||||
|
Copyright (c) 2022, Antonio SJ Musumeci <trapexit@spawn.link> |
||||
|
|
||||
|
Permission to use, copy, modify, and/or distribute this software for any |
||||
|
purpose with or without fee is hereby granted, provided that the above |
||||
|
copyright notice and this permission notice appear in all copies. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||||
|
*/ |
||||
|
|
||||
|
#include "fuse_write_policy_null.hpp"
|
||||
|
|
||||
|
|
||||
|
FUSE::WRITE::POLICY::null::null(const toml::value &toml_) |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
|
||||
|
int |
||||
|
FUSE::WRITE::POLICY::null::operator()(const fuse_file_info_t *ffi_, |
||||
|
struct fuse_bufvec *buf_, |
||||
|
off_t offset_) |
||||
|
{ |
||||
|
return buf_->buf[0].size; |
||||
|
} |
@ -0,0 +1,38 @@ |
|||||
|
/*
|
||||
|
ISC License |
||||
|
|
||||
|
Copyright (c) 2022, Antonio SJ Musumeci <trapexit@spawn.link> |
||||
|
|
||||
|
Permission to use, copy, modify, and/or distribute this software for any |
||||
|
purpose with or without fee is hereby granted, provided that the above |
||||
|
copyright notice and this permission notice appear in all copies. |
||||
|
|
||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
||||
|
*/ |
||||
|
|
||||
|
#pragma once
|
||||
|
|
||||
|
#include "fuse_write_policy_base.hpp"
|
||||
|
|
||||
|
#include "toml.hpp"
|
||||
|
|
||||
|
|
||||
|
namespace FUSE::WRITE::POLICY |
||||
|
{ |
||||
|
class null : public Base |
||||
|
{ |
||||
|
public: |
||||
|
null(const toml::value &); |
||||
|
|
||||
|
public: |
||||
|
int operator()(const fuse_file_info_t *ffi, |
||||
|
struct fuse_bufvec *buf, |
||||
|
const off_t offset) final; |
||||
|
}; |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue