Compare commits
6 Commits
v1.0.0-pre
...
v1.0.0-pre
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
176db5c7d1 | ||
|
|
19334034e0 | ||
|
|
3f94ad6838 | ||
|
|
2322591f88 | ||
|
|
b4a2ffc149 | ||
|
|
1f24141807 |
@@ -1,7 +1,13 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<AssemblyTitle>Mono.Fuse.NETStandard.dll</AssemblyTitle>
|
||||
<AssemblyName>Mono.Fuse.NETStandard</AssemblyName>
|
||||
<PackageId>Mono.Fuse.NETStandard</PackageId>
|
||||
<PackageVersion>1.0.0-pre1</PackageVersion>
|
||||
<PackageVersion>1.0.0-pre2</PackageVersion>
|
||||
<PackageLicenseUrl>https://raw.githubusercontent.com/alhimik45/Mono.Fuse.NETStandard/master/LICENSE</PackageLicenseUrl>
|
||||
<PackageProjectUrl>https://github.com/alhimik45/Mono.Fuse.NETStandard</PackageProjectUrl>
|
||||
<RepositoryUrl>https://github.com/alhimik45/Mono.Fuse.NETStandard</RepositoryUrl>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<Authors>Jonathan Pryor, Alexey Kolpakov</Authors>
|
||||
<Description>Port of Mono.Fuse package to NET Standart: C# bindings for FUSE</Description>
|
||||
<PackageTags>mono fuse filesystem linux unix</PackageTags>
|
||||
|
||||
88
README
88
README
@@ -1,88 +0,0 @@
|
||||
This is a Mono/.NET binding for FUSE.
|
||||
|
||||
Short HOWTO:
|
||||
|
||||
Within one terminal:
|
||||
sudo /sbin/modprobe fuse # need FUSE kernel module to use.
|
||||
./configure
|
||||
make
|
||||
cd example/HelloFS
|
||||
mkdir t
|
||||
./hellofs t
|
||||
|
||||
Within another terminal
|
||||
cd example/HelloFS
|
||||
ls t
|
||||
cat t/hello
|
||||
|
||||
This should display files controlled by HelloFS.exe.
|
||||
|
||||
To unmount the filesystem, you need to use the `fusermount' program:
|
||||
cd example/HelloFS
|
||||
fusermount -u t
|
||||
|
||||
KILLING THE FUSE PROGRAM IS NOT ENOUGH. The program will die, but
|
||||
FUSE and the kernel will still think that the directory is mounted.
|
||||
Result: you can't remount the directory, and trying to do anything
|
||||
with it will result in IO errors.
|
||||
|
||||
For full trace output, set the MONO_TRACE_LISTENER environment
|
||||
variable and add the -odebug command-line argument:
|
||||
|
||||
cd example/HelloFS
|
||||
MONO_TRACE_LISTENER=Console.Out### ./hellofs -odebug t
|
||||
|
||||
MONO_TRACE_LISTENER controls the Mono.Fuse trace output, while
|
||||
-odebug controls the libfuse-generated trace output.
|
||||
|
||||
`hellofs' also takes its own command-line aruments. By default,
|
||||
it exports two files, `data' and `hello'. `hello' contains the
|
||||
string "Hello World!", while `data' is a 100 MB (base 10) file that
|
||||
generates its content on-demand.
|
||||
|
||||
If you pass the --data.im-in-memory flag, a `data.im' file will be
|
||||
available which is a 100MB (base 10) file with the same contents as
|
||||
`data', but it is backed by a 100MB byte[] instead of generating its
|
||||
contents on demand:
|
||||
|
||||
cd example/HelloFS
|
||||
./hellofs --data.im-in-memory t
|
||||
|
||||
The 100MB byte[] is allocated the first time the contents of
|
||||
`data.im' are read.
|
||||
|
||||
`data.im' is useful to see the difference in performance between
|
||||
generate-on-demand and cached behaviors:
|
||||
|
||||
cd example/HelloFS
|
||||
./hellofs --data.im-in-memory t
|
||||
|
||||
# On-demand copy
|
||||
time cp t/data f.txt
|
||||
real 0m8.469s
|
||||
user 0m0.020s
|
||||
sys 0m1.128s
|
||||
|
||||
# In-memory copy
|
||||
# Note that the first `data.im' access is longer
|
||||
# because it needed to allocate the array.
|
||||
# Subsequent calls are shorter:
|
||||
time \cp -f t/data.im f.txt
|
||||
real 0m12.393s
|
||||
user 0m0.004s
|
||||
sys 0m1.172s
|
||||
time \cp -f t/data.im f.txt
|
||||
real 0m5.233s
|
||||
user 0m0.016s
|
||||
sys 0m1.136s
|
||||
|
||||
# And for comparison, cp without FUSE:
|
||||
time cp f.txt f2.txt
|
||||
real 0m10.252s
|
||||
user 0m0.016s
|
||||
sys 0m1.000s
|
||||
|
||||
And yes, on my machine it's faster to go through FUSE than to go
|
||||
through the filesystem (though usually the filesystem outperforms
|
||||
the on-demand generation). My machine is probably misconfigured. :-/
|
||||
Your mileage will vary.
|
||||
7
README.md
Normal file
7
README.md
Normal file
@@ -0,0 +1,7 @@
|
||||
[](https://www.nuget.org/packages/Mono.Fuse.NETStandard/)
|
||||
|
||||
This is a .NET Standard binding for FUSE, port of [mono-fuse](https://github.com/jonpryor/mono-fuse) library.
|
||||
|
||||
For documentation see [here](http://www.jprl.com/Projects/mono-fuse/docs/).
|
||||
|
||||
To run examples clone this repository, run `build-libs.sh` and then run projects from `examples/` folder.
|
||||
@@ -4,6 +4,11 @@
|
||||
<RootNamespace>Mono.Fuse.NETStandard.Samples</RootNamespace>
|
||||
<TargetFramework>netcoreapp2.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\..\nativelibs\linux-x64\libMonoFuseHelper.so">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Mono.Fuse.NETStandard\Mono.Fuse.NETStandard.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -10,6 +10,11 @@
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\..\nativelibs\linux-x64\libMonoFuseHelper.so">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Mono.Fuse.NETStandard\Mono.Fuse.NETStandard.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -10,6 +10,11 @@
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\..\nativelibs\linux-x64\libMonoFuseHelper.so">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Mono.Fuse.NETStandard\Mono.Fuse.NETStandard.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
Reference in New Issue
Block a user