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
1e3f6cf9
Commit
1e3f6cf9
authored
May 04, 2011
by
Han-Wen Nienhuys
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix handling of unimplemented opcodes (include IOCTL).
Make MountState.write private.
parent
df2ff6a1
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
37 additions
and
33 deletions
+37
-33
fuse/fuse.go
fuse/fuse.go
+37
-33
No files found.
fuse/fuse.go
View file @
1e3f6cf9
...
@@ -68,29 +68,6 @@ func (me *MountState) Unmount() os.Error {
...
@@ -68,29 +68,6 @@ func (me *MountState) Unmount() os.Error {
return
result
return
result
}
}
func
(
me
*
MountState
)
Write
(
req
*
request
)
{
if
me
.
LatencyMap
!=
nil
{
req
.
preWriteNs
=
time
.
Nanoseconds
()
}
if
req
.
outHeaderBytes
==
nil
{
return
}
var
err
os
.
Error
if
req
.
flatData
==
nil
{
_
,
err
=
me
.
mountFile
.
Write
(
req
.
outHeaderBytes
)
}
else
{
_
,
err
=
Writev
(
me
.
mountFile
.
Fd
(),
[][]
byte
{
req
.
outHeaderBytes
,
req
.
flatData
})
}
if
err
!=
nil
{
log
.
Printf
(
"writer: Write/Writev %v failed, err: %v. opcode: %v"
,
req
.
outHeaderBytes
,
err
,
operationName
(
req
.
inHeader
.
opcode
))
}
}
func
NewMountState
(
fs
RawFileSystem
)
*
MountState
{
func
NewMountState
(
fs
RawFileSystem
)
*
MountState
{
me
:=
new
(
MountState
)
me
:=
new
(
MountState
)
me
.
mountPoint
=
""
me
.
mountPoint
=
""
...
@@ -207,29 +184,56 @@ func (me *MountState) handleRequest(req *request) {
...
@@ -207,29 +184,56 @@ func (me *MountState) handleRequest(req *request) {
req
.
parse
()
req
.
parse
()
if
req
.
handler
==
nil
{
if
req
.
handler
==
nil
{
re
turn
re
q
.
status
=
ENOSYS
}
}
if
me
.
Debug
{
if
req
.
status
.
Ok
()
&&
me
.
Debug
{
log
.
Println
(
req
.
InputDebug
())
log
.
Println
(
req
.
InputDebug
())
}
}
if
req
.
handler
.
Func
==
nil
{
if
req
.
status
.
Ok
()
&&
req
.
handler
.
Func
==
nil
{
log
.
Printf
(
"Unimplemented opcode %v"
,
req
.
inHeader
.
opcode
)
log
.
Printf
(
"Unimplemented opcode %v"
,
req
.
inHeader
.
opcode
)
req
.
status
=
ENOSYS
req
.
status
=
ENOSYS
return
}
}
if
req
.
status
.
Ok
()
{
if
req
.
status
.
Ok
()
{
req
.
handler
.
Func
(
me
,
req
)
req
.
handler
.
Func
(
me
,
req
)
}
}
me
.
write
(
req
)
}
func
(
me
*
MountState
)
write
(
req
*
request
)
{
// If we try to write OK, nil, we will get
// If we try to write OK, nil, we will get
// error: writer: Writev [[16 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0]]
// error: writer: Writev [[16 0 0 0 0 0 0 0 17 0 0 0 0 0 0 0]]
// failed, err: writev: no such file or directory
// failed, err: writev: no such file or directory
if
req
.
inHeader
.
opcode
!=
_OP_FORGET
{
if
req
.
inHeader
.
opcode
==
_OP_FORGET
{
return
}
req
.
serialize
()
req
.
serialize
()
if
me
.
Debug
{
if
me
.
Debug
{
log
.
Println
(
req
.
OutputDebug
())
log
.
Println
(
req
.
OutputDebug
())
}
}
me
.
Write
(
req
)
if
me
.
LatencyMap
!=
nil
{
req
.
preWriteNs
=
time
.
Nanoseconds
()
}
if
req
.
outHeaderBytes
==
nil
{
return
}
var
err
os
.
Error
if
req
.
flatData
==
nil
{
_
,
err
=
me
.
mountFile
.
Write
(
req
.
outHeaderBytes
)
}
else
{
_
,
err
=
Writev
(
me
.
mountFile
.
Fd
(),
[][]
byte
{
req
.
outHeaderBytes
,
req
.
flatData
})
}
if
err
!=
nil
{
log
.
Printf
(
"writer: Write/Writev %v failed, err: %v. opcode: %v"
,
req
.
outHeaderBytes
,
err
,
operationName
(
req
.
inHeader
.
opcode
))
}
}
}
}
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