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
Kirill Smelkov
go-fuse
Commits
ff77141e
Commit
ff77141e
authored
Sep 26, 2011
by
Han-Wen Nienhuys
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add String() to the File API.
parent
0c88a201
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
48 additions
and
16 deletions
+48
-16
fuse/api.go
fuse/api.go
+3
-0
fuse/defaultfile.go
fuse/defaultfile.go
+4
-0
fuse/files.go
fuse/files.go
+13
-0
fuse/memnode.go
fuse/memnode.go
+4
-0
unionfs/memunionfs.go
unionfs/memunionfs.go
+20
-16
unionfs/unionfs.go
unionfs/unionfs.go
+4
-0
No files found.
fuse/api.go
View file @
ff77141e
...
...
@@ -143,6 +143,9 @@ type File interface {
// Called upon registering the filehandle in the inode.
SetInode
(
*
Inode
)
// The String method is for debug printing.
String
()
string
// Wrappers around other File implementations, should return
// the inner file here.
InnerFile
()
File
...
...
fuse/defaultfile.go
View file @
ff77141e
...
...
@@ -14,6 +14,10 @@ func (me *DefaultFile) InnerFile() File {
return
nil
}
func
(
me
*
DefaultFile
)
String
()
string
{
return
"DefaultFile"
}
func
(
me
*
DefaultFile
)
Read
(
*
ReadIn
,
BufferPool
)
([]
byte
,
Status
)
{
return
[]
byte
(
""
),
ENOSYS
}
...
...
fuse/files.go
View file @
ff77141e
...
...
@@ -42,6 +42,11 @@ func NewDevNullFile() *DevNullFile {
return
new
(
DevNullFile
)
}
func
(
me
*
DevNullFile
)
String
()
string
{
return
"DevNullFile"
}
func
(
me
*
DevNullFile
)
Read
(
input
*
ReadIn
,
bp
BufferPool
)
([]
byte
,
Status
)
{
return
[]
byte
{},
OK
}
...
...
@@ -71,6 +76,10 @@ type LoopbackFile struct {
DefaultFile
}
func
(
me
*
LoopbackFile
)
String
()
string
{
return
fmt
.
Sprintf
(
"LoopbackFile(%s)"
,
me
.
File
.
Name
())
}
func
(
me
*
LoopbackFile
)
Read
(
input
*
ReadIn
,
buffers
BufferPool
)
([]
byte
,
Status
)
{
slice
:=
buffers
.
AllocBuffer
(
input
.
Size
)
...
...
@@ -124,6 +133,10 @@ type ReadOnlyFile struct {
File
}
func
(
me
*
ReadOnlyFile
)
String
()
string
{
return
fmt
.
Sprintf
(
"ReadOnlyFile(%s)"
,
me
.
File
.
String
())
}
func
(
me
*
ReadOnlyFile
)
Write
(
input
*
WriteIn
,
data
[]
byte
)
(
uint32
,
Status
)
{
return
0
,
EPERM
}
...
...
fuse/memnode.go
View file @
ff77141e
...
...
@@ -140,6 +140,10 @@ type memNodeFile struct {
node
*
memNode
}
func
(
me
*
memNodeFile
)
String
()
string
{
return
fmt
.
Sprintf
(
"memNodeFile(%s)"
,
me
.
LoopbackFile
.
String
())
}
func
(
me
*
memNodeFile
)
InnerFile
()
File
{
return
&
me
.
LoopbackFile
}
...
...
unionfs/memunionfs.go
View file @
ff77141e
...
...
@@ -23,7 +23,7 @@ type MemUnionFs struct {
mutex
sync
.
RWMutex
cond
*
sync
.
Cond
nextFree
int
readonly
fuse
.
FileSystem
openWritable
int
...
...
@@ -99,9 +99,9 @@ func (me *MemUnionFs) Reap() map[string]*Result {
for
me
.
openWritable
>
0
{
me
.
cond
.
Wait
()
}
m
:=
map
[
string
]
*
Result
{}
for
name
,
_
:=
range
me
.
deleted
{
fi
,
code
:=
me
.
readonly
.
GetAttr
(
name
,
nil
)
...
...
@@ -112,13 +112,13 @@ func (me *MemUnionFs) Reap() map[string]*Result {
if
!
fi
.
IsDirectory
()
{
continue
}
todo
:=
[]
string
{
name
}
for
len
(
todo
)
>
0
{
l
:=
len
(
todo
)
-
1
n
:=
todo
[
l
]
todo
=
todo
[
:
l
]
s
,
_
:=
me
.
readonly
.
OpenDir
(
n
,
nil
)
for
e
:=
range
s
{
full
:=
filepath
.
Join
(
n
,
e
.
Name
)
...
...
@@ -161,16 +161,16 @@ func (me *MemUnionFs) Update(results map[string]*Result) {
if
len
(
rest
)
>
0
{
continue
}
dirNode
.
RmChild
(
base
)
me
.
connector
.
EntryNotify
(
dirNode
,
base
)
}
me
.
mutex
.
Lock
()
notifyNodes
:=
[]
*
fuse
.
Inode
{}
enotifyNodes
:=
[]
*
fuse
.
Inode
{}
enotifyNames
:=
[]
string
{}
sort
.
Strings
(
add
)
for
_
,
n
:=
range
add
{
node
,
rest
:=
me
.
connector
.
Node
(
me
.
root
.
Inode
(),
n
)
...
...
@@ -189,7 +189,7 @@ func (me *MemUnionFs) Update(results map[string]*Result) {
mn
.
link
=
r
.
Link
}
me
.
mutex
.
Unlock
()
for
_
,
n
:=
range
notifyNodes
{
me
.
connector
.
FileNotify
(
n
,
0
,
0
)
}
...
...
@@ -202,7 +202,7 @@ func (me *MemUnionFs) getFilename() string {
id
:=
me
.
nextFree
me
.
nextFree
++
if
me
.
nextFree
%
1000
==
0
{
go
me
.
gc
()
//
go me.gc()
}
return
fmt
.
Sprintf
(
"%s/%d"
,
me
.
backingStore
,
id
)
}
...
...
@@ -236,7 +236,7 @@ func NewMemUnionFs(backingStore string, roFs fuse.FileSystem) *MemUnionFs {
me
.
root
=
me
.
newNode
(
true
)
me
.
root
.
info
.
Mode
=
fuse
.
S_IFDIR
|
0755
me
.
cond
=
sync
.
NewCond
(
&
me
.
mutex
)
return
me
}
...
...
@@ -282,7 +282,7 @@ func (me *memNode) lookup(name string, context *fuse.Context) (fi *os.FileInfo,
if
_
,
del
:=
me
.
fs
.
deleted
[
fn
];
del
{
return
nil
,
nil
,
fuse
.
ENOENT
}
fi
,
code
=
me
.
fs
.
readonly
.
GetAttr
(
fn
,
context
)
if
!
code
.
Ok
()
{
return
nil
,
nil
,
code
...
...
@@ -386,7 +386,7 @@ func (me *memNode) Rename(oldName string, newParent fuse.FsNode, newName string,
mn
.
materialize
()
mn
.
markChanged
()
}
newParent
.
Inode
()
.
RmChild
(
newName
)
newParent
.
Inode
()
.
AddChild
(
newName
,
ch
)
me
.
touch
()
...
...
@@ -435,6 +435,10 @@ type memNodeFile struct {
node
*
memNode
}
func
(
me
*
memNodeFile
)
String
()
string
{
return
fmt
.
Sprintf
(
"memUfsFile(%s)"
,
me
.
File
.
String
())
}
func
(
me
*
memNodeFile
)
InnerFile
()
fuse
.
File
{
return
me
.
File
}
...
...
@@ -593,7 +597,7 @@ func (me *memNode) OpenDir(context *fuse.Context) (stream chan fuse.DirEntry, co
}
}
}
for
k
,
n
:=
range
me
.
Inode
()
.
FsChildren
()
{
ch
[
k
]
=
n
.
FsNode
()
.
(
*
memNode
)
.
info
.
Mode
}
...
...
@@ -632,7 +636,7 @@ func (me *memNode) markUsed(seen map[string]bool) {
ch
.
FsNode
()
.
(
*
memNode
)
.
markUsed
(
seen
)
}
}
func
(
me
*
memNode
)
Clear
(
path
string
)
{
me
.
original
=
path
me
.
changed
=
false
...
...
@@ -643,4 +647,4 @@ func (me *memNode) Clear(path string) {
mn
.
Clear
(
p
)
}
}
unionfs/unionfs.go
View file @
ff77141e
...
...
@@ -971,6 +971,10 @@ type unionFsFile struct {
layer
int
}
func
(
me
*
unionFsFile
)
String
()
string
{
return
fmt
.
Sprintf
(
"unionFsFile(%s)"
,
me
.
File
.
String
())
}
func
(
me
*
UnionFs
)
newUnionFsFile
(
f
fuse
.
File
,
branch
int
)
*
unionFsFile
{
return
&
unionFsFile
{
File
:
f
,
...
...
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