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
17f8f123
Commit
17f8f123
authored
Mar 14, 2019
by
Han-Wen Nienhuys
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
nodefs: more comments
parent
4f60fdad
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
10 additions
and
18 deletions
+10
-18
nodefs/README.md
nodefs/README.md
+4
-5
nodefs/api.go
nodefs/api.go
+5
-12
nodefs/default.go
nodefs/default.go
+1
-1
No files found.
nodefs/README.md
View file @
17f8f123
...
...
@@ -12,6 +12,10 @@ Decisions
because most filesystems will need to construct tree-like
structures.
*
Nodes contain references to their parents. As a result, we can
derive the path for each Inode, and there is no need for a
separate PathFS.
*
Nodes can be "persistent", meaning their lifetime is not under
control of the kernel. This is useful for constructing FS trees
in advance, rather than driven by LOOKUP.
...
...
@@ -52,9 +56,6 @@ To decide
*
Should we provide automatic fileID numbering?
*
One giant interface with many methods, or many one-method
interfaces? Or some interface (file, dir, symlink, etc).
*
function signatures, or types? The latter is easier to remember?
Easier to extend? The latter less efficient (indirections/copies)
...
...
@@ -83,6 +84,4 @@ or
*
Should bridge.Lookup() add the child, bridge.Unlink remove the child, etc.?
*
Merge Fsync/FsyncDir?
*
Merge Release/ReleaseDir? (others?)
nodefs/api.go
View file @
17f8f123
...
...
@@ -83,15 +83,6 @@ type DirStream interface {
Close
()
}
/*
NOSUBMIT: how to structure?
- one interface per method?
- one interface for files (getattr, read/write), one for dirs (lookup, opendir), one shared?
- one giant interface?
- use raw types as args rather than mimicking Golang signatures?
*/
// Operations is the interface that implements the filesystem. Each
// Operations instance must embed DefaultNode.
type
Operations
interface
{
...
...
@@ -112,7 +103,7 @@ type Operations interface {
// Access should return if the caller can access the file with
// the given mode. In this case, the context has data about
// the real UID. For example a root-SUID binary called by user
//
`susan` gets the UID and GID for `susan`
here.
//
susan gets the UID and GID for susan
here.
Access
(
ctx
context
.
Context
,
mask
uint32
)
fuse
.
Status
// Extended attributes
...
...
@@ -122,8 +113,8 @@ type Operations interface {
// small, it should return ERANGE and the size of the attribute.
GetXAttr
(
ctx
context
.
Context
,
attr
string
,
dest
[]
byte
)
(
uint32
,
fuse
.
Status
)
// SetXAttr should store data for the given attribute.
//
XXX
flags.
// SetXAttr should store data for the given attribute.
See
//
setxattr(2) for information about
flags.
SetXAttr
(
ctx
context
.
Context
,
attr
string
,
data
[]
byte
,
flags
uint32
)
fuse
.
Status
// RemoveXAttr should delete the given attribute.
...
...
@@ -134,8 +125,10 @@ type Operations interface {
// ERANGE and the correct size.
ListXAttr
(
ctx
context
.
Context
,
dest
[]
byte
)
(
uint32
,
fuse
.
Status
)
// GetAttr reads attributes for an Inode
GetAttr
(
ctx
context
.
Context
,
out
*
fuse
.
AttrOut
)
fuse
.
Status
// SetAttr sets attributes for an Inode
SetAttr
(
ctx
context
.
Context
,
in
*
fuse
.
SetAttrIn
,
out
*
fuse
.
AttrOut
)
fuse
.
Status
}
...
...
nodefs/default.go
View file @
17f8f123
...
...
@@ -14,7 +14,7 @@ import (
"github.com/hanwen/go-fuse/fuse"
)
// DefaultOperations provides
common base Node functionality.
// DefaultOperations provides
stubs that return ENOSYS for all functions
//
// It must be embedded in any Node implementation.
type
DefaultOperations
struct
{
...
...
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