Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
go-fuse
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Levin Zimmermann
go-fuse
Commits
d0f58fe6
Commit
d0f58fe6
authored
May 28, 2012
by
Han-Wen Nienhuys
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Gofmt.
parent
3aed656d
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
38 additions
and
44 deletions
+38
-44
benchmark/benchmark.go
benchmark/benchmark.go
+4
-4
fuse/api.go
fuse/api.go
+0
-1
fuse/copy.go
fuse/copy.go
+1
-1
fuse/files.go
fuse/files.go
+4
-4
fuse/fsconnector.go
fuse/fsconnector.go
+1
-1
fuse/fsetattr_test.go
fuse/fsetattr_test.go
+4
-6
fuse/inode.go
fuse/inode.go
+2
-2
fuse/loopback_test.go
fuse/loopback_test.go
+13
-13
fuse/mountstate.go
fuse/mountstate.go
+3
-2
fuse/pressure_test.go
fuse/pressure_test.go
+1
-1
fuse/read.go
fuse/read.go
+1
-4
fuse/request.go
fuse/request.go
+1
-1
fuse/types.go
fuse/types.go
+0
-1
raw/print.go
raw/print.go
+0
-1
splice/pool.go
splice/pool.go
+3
-2
No files found.
benchmark/benchmark.go
View file @
d0f58fe6
...
...
@@ -106,11 +106,11 @@ func AnalyzeBenchmarkRuns(label string, times []float64) {
fmt
.
Printf
(
"%s: %d samples
\n
"
+
"avg %.3fms +/- %.0f%% "
+
"median %.3fms, 10%%tiles: [-%.0f%%, +%.0f%%]
\n
"
,
"avg %.3fms +/- %.0f%% "
+
"median %.3fms, 10%%tiles: [-%.0f%%, +%.0f%%]
\n
"
,
label
,
len
(
times
),
avg
,
100.0
*
2
*
stddev
/
avg
,
median
,
100
*
(
median
-
perc10
)
/
median
,
100
*
(
perc90
-
median
)
/
median
)
len
(
times
),
avg
,
100.0
*
2
*
stddev
/
avg
,
median
,
100
*
(
median
-
perc10
)
/
median
,
100
*
(
perc90
-
median
)
/
median
)
}
func
RunBulkStat
(
runs
int
,
threads
int
,
sleepTime
time
.
Duration
,
files
[]
string
)
(
results
[]
float64
)
{
...
...
fuse/api.go
View file @
d0f58fe6
...
...
@@ -144,7 +144,6 @@ type PathNodeFsOptions struct {
ClientInodes
bool
}
// A File object should be returned from FileSystem.Open and
// FileSystem.Create. Include DefaultFile into the struct to inherit
// a default null implementation.
...
...
fuse/copy.go
View file @
d0f58fe6
...
...
@@ -17,7 +17,7 @@ func CopyFile(srcFs, destFs FileSystem, srcFile, destFile string, context *Conte
return
code
}
dst
,
code
:=
destFs
.
Create
(
destFile
,
uint32
(
os
.
O_WRONLY
|
os
.
O_CREATE
|
os
.
O_TRUNC
),
attr
.
Mode
,
context
)
dst
,
code
:=
destFs
.
Create
(
destFile
,
uint32
(
os
.
O_WRONLY
|
os
.
O_CREATE
|
os
.
O_TRUNC
),
attr
.
Mode
,
context
)
if
!
code
.
Ok
()
{
return
code
}
...
...
fuse/files.go
View file @
d0f58fe6
...
...
@@ -44,7 +44,7 @@ func (f *DataFile) Read(buf []byte, off int64) (res ReadResult, code Status) {
if
end
>
len
(
f
.
data
)
{
end
=
len
(
f
.
data
)
}
return
&
ReadResultData
{
f
.
data
[
off
:
end
]},
OK
}
...
...
@@ -100,9 +100,9 @@ func (f *LoopbackFile) String() string {
func
(
f
*
LoopbackFile
)
Read
(
buf
[]
byte
,
off
int64
)
(
res
ReadResult
,
code
Status
)
{
return
&
ReadResultFd
{
Fd
:
f
.
File
.
Fd
(),
Off
:
off
,
Sz
:
len
(
buf
),
Fd
:
f
.
File
.
Fd
(),
Off
:
off
,
Sz
:
len
(
buf
),
},
OK
}
...
...
fuse/fsconnector.go
View file @
d0f58fe6
...
...
@@ -74,7 +74,7 @@ func NewFileSystemConnector(nodeFs NodeFileSystem, opts *FileSystemOptions) (c *
// FUSE does not issue a LOOKUP for 1 (obviously), but it does
// issue a forget. This lookupUpdate is to make the counts match.
c
.
lookupUpdate
(
c
.
rootNode
)
return
c
}
...
...
fuse/fsetattr_test.go
View file @
d0f58fe6
...
...
@@ -23,11 +23,11 @@ func (f *MutableDataFile) String() string {
}
func
(
f
*
MutableDataFile
)
Read
(
buf
[]
byte
,
off
int64
)
(
ReadResult
,
Status
)
{
end
:=
int
(
off
)
+
len
(
buf
)
end
:=
int
(
off
)
+
len
(
buf
)
if
end
>
len
(
f
.
data
)
{
end
=
len
(
f
.
data
)
}
return
&
ReadResultData
{
Data
:
f
.
data
[
off
:
end
]},
OK
}
...
...
@@ -40,7 +40,7 @@ func (f *MutableDataFile) Write(d []byte, off int64) (uint32, Status) {
}
copy
(
f
.
data
[
off
:
end
],
d
)
f
.
Attr
.
Size
=
uint64
(
len
(
f
.
data
))
return
uint32
(
end
-
off
),
OK
}
...
...
@@ -158,7 +158,7 @@ func TestDataReadLarge(t *testing.T) {
dir
,
clean
:=
setupFAttrTest
(
t
,
fs
)
defer
clean
()
content
:=
RandomData
(
385
*
1023
)
content
:=
RandomData
(
385
*
1023
)
fn
:=
dir
+
"/file"
err
:=
ioutil
.
WriteFile
(
fn
,
[]
byte
(
content
),
0644
)
CheckSuccess
(
err
)
...
...
@@ -168,7 +168,6 @@ func TestDataReadLarge(t *testing.T) {
CompareSlices
(
t
,
back
,
content
)
}
func
TestFSetAttr
(
t
*
testing
.
T
)
{
fs
:=
&
FSetAttrFs
{}
dir
,
clean
:=
setupFAttrTest
(
t
,
fs
)
...
...
@@ -215,4 +214,3 @@ func TestFSetAttr(t *testing.T) {
}
// TODO - test chown if run as root.
}
fuse/inode.go
View file @
d0f58fe6
...
...
@@ -15,8 +15,8 @@ type Inode struct {
// Generation number of the inode. Each (re)use of an inode
// should have a unique generation number.
generation
uint64
generation
uint64
// Number of open files and its protection.
openFilesMutex
sync
.
Mutex
openFiles
[]
*
openedFile
...
...
fuse/loopback_test.go
View file @
d0f58fe6
...
...
@@ -121,7 +121,7 @@ func TestTouch(t *testing.T) {
ts
:=
NewTestCase
(
t
)
defer
ts
.
Cleanup
()
contents
:=
[]
byte
{
1
,
2
,
3
}
contents
:=
[]
byte
{
1
,
2
,
3
}
err
:=
ioutil
.
WriteFile
(
ts
.
origFile
,
[]
byte
(
contents
),
0700
)
CheckSuccess
(
err
)
err
=
os
.
Chtimes
(
ts
.
mountFile
,
time
.
Unix
(
42
,
0
),
time
.
Unix
(
43
,
0
))
...
...
@@ -167,7 +167,7 @@ func TestRemove(t *testing.T) {
tc
:=
NewTestCase
(
t
)
defer
tc
.
Cleanup
()
contents
:=
[]
byte
{
1
,
2
,
3
}
contents
:=
[]
byte
{
1
,
2
,
3
}
err
:=
ioutil
.
WriteFile
(
tc
.
origFile
,
[]
byte
(
contents
),
0700
)
CheckSuccess
(
err
)
...
...
@@ -290,7 +290,7 @@ func TestLinkExisting(t *testing.T) {
back
,
err
:=
ioutil
.
ReadFile
(
tc
.
mnt
+
"/file1"
)
CheckSuccess
(
err
)
CompareSlices
(
t
,
back
,
c
)
CompareSlices
(
t
,
back
,
c
)
}
// Deal correctly with hard links implied by matching client inode
...
...
@@ -324,7 +324,7 @@ func TestSymlink(t *testing.T) {
defer
tc
.
Cleanup
()
t
.
Log
(
"testing symlink/readlink."
)
contents
:=
[]
byte
{
1
,
2
,
3
}
contents
:=
[]
byte
{
1
,
2
,
3
}
err
:=
ioutil
.
WriteFile
(
tc
.
origFile
,
[]
byte
(
contents
),
0700
)
CheckSuccess
(
err
)
...
...
@@ -355,7 +355,7 @@ func TestRename(t *testing.T) {
tc
:=
NewTestCase
(
t
)
defer
tc
.
Cleanup
()
contents
:=
[]
byte
{
1
,
2
,
3
}
contents
:=
[]
byte
{
1
,
2
,
3
}
err
:=
ioutil
.
WriteFile
(
tc
.
origFile
,
[]
byte
(
contents
),
0700
)
CheckSuccess
(
err
)
sd
:=
tc
.
mnt
+
"/testRename"
...
...
@@ -434,7 +434,7 @@ func TestAccess(t *testing.T) {
tc
:=
NewTestCase
(
t
)
defer
tc
.
Cleanup
()
contents
:=
[]
byte
{
1
,
2
,
3
}
contents
:=
[]
byte
{
1
,
2
,
3
}
err
:=
ioutil
.
WriteFile
(
tc
.
origFile
,
[]
byte
(
contents
),
0700
)
CheckSuccess
(
err
)
err
=
os
.
Chmod
(
tc
.
origFile
,
0
)
...
...
@@ -473,7 +473,7 @@ func TestReaddir(t *testing.T) {
tc
:=
NewTestCase
(
t
)
defer
tc
.
Cleanup
()
contents
:=
[]
byte
{
1
,
2
,
3
}
contents
:=
[]
byte
{
1
,
2
,
3
}
err
:=
ioutil
.
WriteFile
(
tc
.
origFile
,
[]
byte
(
contents
),
0700
)
CheckSuccess
(
err
)
err
=
os
.
Mkdir
(
tc
.
origSubdir
,
0777
)
...
...
@@ -506,7 +506,7 @@ func TestFSync(t *testing.T) {
tc
:=
NewTestCase
(
t
)
defer
tc
.
Cleanup
()
contents
:=
[]
byte
{
1
,
2
,
3
}
contents
:=
[]
byte
{
1
,
2
,
3
}
err
:=
ioutil
.
WriteFile
(
tc
.
origFile
,
[]
byte
(
contents
),
0700
)
CheckSuccess
(
err
)
...
...
@@ -549,7 +549,7 @@ func RandomData(size int) []byte {
if
left
<
len
(
block
)
{
block
=
block
[
:
left
]
}
copy
(
content
[
start
:
],
block
)
start
+=
len
(
block
)
}
...
...
@@ -565,7 +565,7 @@ func CompareSlices(t *testing.T, got, want []byte) {
break
}
if
want
[
i
]
!=
got
[
i
]
{
t
.
Errorf
(
"content mismatch byte %d, got %d want %d."
,
i
,
got
[
i
],
want
[
i
])
t
.
Errorf
(
"content mismatch byte %d, got %d want %d."
,
i
,
got
[
i
],
want
[
i
])
break
}
}
...
...
@@ -576,7 +576,7 @@ func TestReadLargeMemCheck(t *testing.T) {
ts
:=
NewTestCase
(
t
)
defer
ts
.
Cleanup
()
content
:=
RandomData
(
385
*
1023
)
content
:=
RandomData
(
385
*
1023
)
err
:=
ioutil
.
WriteFile
(
ts
.
origFile
,
[]
byte
(
content
),
0644
)
CheckSuccess
(
err
)
...
...
@@ -598,7 +598,7 @@ func TestReadLargeMemCheck(t *testing.T) {
}
runtime
.
ReadMemStats
(
&
after
)
delta
:=
int
((
after
.
TotalAlloc
-
before
.
TotalAlloc
))
delta
=
(
delta
-
40000
)
/
N
delta
=
(
delta
-
40000
)
/
N
limit
:=
5000
if
delta
>
limit
{
...
...
@@ -610,7 +610,7 @@ func TestReadLarge(t *testing.T) {
ts
:=
NewTestCase
(
t
)
defer
ts
.
Cleanup
()
content
:=
RandomData
(
385
*
1023
)
content
:=
RandomData
(
385
*
1023
)
err
:=
ioutil
.
WriteFile
(
ts
.
origFile
,
[]
byte
(
content
),
0644
)
CheckSuccess
(
err
)
...
...
fuse/mountstate.go
View file @
d0f58fe6
...
...
@@ -408,9 +408,9 @@ func (ms *MountState) TrySplice(header []byte, req *request, fdData *ReadResultF
header
=
req
.
serializeHeader
(
n
)
newFd
:=
ReadResultFd
{
Fd
:
pair
.
ReadFd
(),
Fd
:
pair
.
ReadFd
(),
Off
:
-
1
,
Sz
:
n
,
Sz
:
n
,
}
return
ms
.
TrySplice
(
header
,
req
,
&
newFd
)
}
...
...
@@ -477,6 +477,7 @@ func (ms *MountState) writeEntryNotify(parent uint64, name string) Status {
}
var
defaultBufferPool
BufferPool
func
init
()
{
defaultBufferPool
=
NewBufferPool
()
}
fuse/pressure_test.go
View file @
d0f58fe6
...
...
@@ -37,7 +37,7 @@ func TestMemoryPressure(t *testing.T) {
conn
:=
NewFileSystemConnector
(
nfs
,
o
)
state
:=
NewMountState
(
conn
)
bufs
:=
NewBufferPool
()
err
=
state
.
Mount
(
dir
,
&
MountOptions
{
Buffers
:
bufs
})
if
err
!=
nil
{
t
.
Fatalf
(
"mount failed: %v"
,
err
)
...
...
fuse/read.go
View file @
d0f58fe6
...
...
@@ -5,8 +5,6 @@ import (
"syscall"
)
// ReadResultData is the read return for returning bytes directly.
type
ReadResultData
struct
{
// Raw bytes for the read.
...
...
@@ -27,7 +25,7 @@ type ReadResultFd struct {
Fd
uintptr
// Offset within Fd, or -1 to use current offset.
Off
int64
Off
int64
// Size of data to be loaded. Actual data available may be
// less at the EOF.
...
...
@@ -53,4 +51,3 @@ func (r *ReadResultFd) Bytes(buf []byte) []byte {
func
(
r
*
ReadResultFd
)
Size
()
int
{
return
r
.
Sz
}
fuse/request.go
View file @
d0f58fe6
...
...
@@ -108,7 +108,7 @@ func (r *request) OutputDebug() string {
flatStr
=
fmt
.
Sprintf
(
" %q"
,
s
)
}
else
{
spl
:=
""
if
r
.
fdData
!=
nil
{
if
r
.
fdData
!=
nil
{
spl
=
" (splice)"
}
flatStr
=
fmt
.
Sprintf
(
" %d bytes data%s
\n
"
,
r
.
flatDataSize
(),
spl
)
...
...
fuse/types.go
View file @
d0f58fe6
...
...
@@ -48,4 +48,3 @@ type Owner raw.Owner
type
Context
raw
.
Context
type
StatfsOut
raw
.
StatfsOut
raw/print.go
View file @
d0f58fe6
...
...
@@ -15,7 +15,6 @@ var accessFlagName map[int]string
var
writeFlagNames
map
[
int
]
string
var
readFlagNames
map
[
int
]
string
func
init
()
{
writeFlagNames
=
map
[
int
]
string
{
WRITE_CACHE
:
"CACHE"
,
...
...
splice/pool.go
View file @
d0f58fe6
...
...
@@ -63,7 +63,8 @@ func (me *pairPool) get() (p *Pair, err error) {
return
newSplicePair
()
}
var
discardBuffer
[
32
*
1024
]
byte
var
discardBuffer
[
32
*
1024
]
byte
func
DiscardAll
(
r
io
.
Reader
)
{
buf
:=
discardBuffer
[
:
]
for
{
...
...
@@ -76,7 +77,7 @@ func DiscardAll(r io.Reader) {
func
(
me
*
pairPool
)
done
(
p
*
Pair
)
{
DiscardAll
(
p
.
r
)
me
.
Lock
()
defer
me
.
Unlock
()
me
.
usedCount
--
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment