Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jacobsa-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
jacobsa-fuse
Commits
d9c8d95d
Commit
d9c8d95d
authored
Jul 24, 2015
by
Aaron Jacobs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed a panic.
parent
0f1a471c
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
21 additions
and
12 deletions
+21
-12
fuseops/common_op.go
fuseops/common_op.go
+15
-10
fuseops/ops.go
fuseops/ops.go
+2
-1
internal/fuseshim/fuse.go
internal/fuseshim/fuse.go
+4
-1
No files found.
fuseops/common_op.go
View file @
d9c8d95d
...
...
@@ -34,6 +34,9 @@ type internalOp interface {
// Create a response message for the kernel, with leading pading for a
// fusekernel.OutHeader struct.
//
// Special case: a return value of nil means that the kernel is not expecting
// a response.
kernelResponse
()
[]
byte
}
...
...
@@ -147,17 +150,19 @@ func (o *commonOp) Respond(err error) {
msg
=
fuseshim
.
NewBuffer
(
0
)
}
// Fill in the header.
h
:=
(
*
fusekernel
.
OutHeader
)(
unsafe
.
Pointer
(
&
msg
[
0
]))
h
.
Unique
=
o
.
fuseID
h
.
Len
=
uint32
(
len
(
msg
))
if
err
!=
nil
{
errno
:=
fuseshim
.
EIO
if
ferr
,
ok
:=
err
.
(
fuseshim
.
ErrorNumber
);
ok
{
errno
=
ferr
.
Errno
()
// Fill in the header if a reply is needed.
if
msg
!=
nil
{
h
:=
(
*
fusekernel
.
OutHeader
)(
unsafe
.
Pointer
(
&
msg
[
0
]))
h
.
Unique
=
o
.
fuseID
h
.
Len
=
uint32
(
len
(
msg
))
if
err
!=
nil
{
errno
:=
fuseshim
.
EIO
if
ferr
,
ok
:=
err
.
(
fuseshim
.
ErrorNumber
);
ok
{
errno
=
ferr
.
Errno
()
}
h
.
Error
=
-
int32
(
errno
)
}
h
.
Error
=
-
int32
(
errno
)
}
// Reply.
...
...
fuseops/ops.go
View file @
d9c8d95d
...
...
@@ -217,7 +217,8 @@ type ForgetInodeOp struct {
}
func
(
o
*
ForgetInodeOp
)
kernelResponse
()
(
msg
[]
byte
)
{
panic
(
"TODO: Signal that no response should happen here."
)
// No response.
return
}
////////////////////////////////////////////////////////////////////////
...
...
internal/fuseshim/fuse.go
View file @
d9c8d95d
...
...
@@ -1061,10 +1061,13 @@ func errorString(err error) string {
return
err
.
Error
()
}
func
(
c
*
Conn
)
W
riteToKernel
(
msg
[]
byte
)
error
{
func
(
c
*
Conn
)
w
riteToKernel
(
msg
[]
byte
)
error
{
out
:=
(
*
fusekernel
.
OutHeader
)(
unsafe
.
Pointer
(
&
msg
[
0
]))
out
.
Len
=
uint32
(
len
(
msg
))
return
c
.
WriteToKernel
(
msg
)
}
func
(
c
*
Conn
)
WriteToKernel
(
msg
[]
byte
)
error
{
c
.
wio
.
RLock
()
defer
c
.
wio
.
RUnlock
()
_
,
err
:=
syscall
.
Write
(
c
.
fd
(),
msg
)
...
...
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