Browse Source

mount: return open status

pull/2756/head
chrislu 3 years ago
parent
commit
b20ddc57a7
  1. 7
      weed/mount/weedfs_file_io.go
  2. 10
      weed/mount/weedfs_filehandle.go

7
weed/mount/weedfs_file_io.go

@ -61,12 +61,13 @@ import (
* @param fi file information * @param fi file information
*/ */
func (wfs *WFS) Open(cancel <-chan struct{}, in *fuse.OpenIn, out *fuse.OpenOut) (status fuse.Status) { func (wfs *WFS) Open(cancel <-chan struct{}, in *fuse.OpenIn, out *fuse.OpenOut) (status fuse.Status) {
fileHandle, code := wfs.AcquireHandle(in.NodeId, in.Uid, in.Gid)
if code == fuse.OK {
var fileHandle *FileHandle
fileHandle, status = wfs.AcquireHandle(in.NodeId, in.Uid, in.Gid)
if status == fuse.OK {
out.Fh = uint64(fileHandle.fh) out.Fh = uint64(fileHandle.fh)
// TODO https://github.com/libfuse/libfuse/blob/master/include/fuse_common.h#L64 // TODO https://github.com/libfuse/libfuse/blob/master/include/fuse_common.h#L64
} }
return code
return status
} }
/** /**

10
weed/mount/weedfs_filehandle.go

@ -1,9 +1,13 @@
package mount package mount
import "github.com/hanwen/go-fuse/v2/fuse"
import (
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
"github.com/hanwen/go-fuse/v2/fuse"
)
func (wfs *WFS) AcquireHandle(inode uint64, uid, gid uint32) (fileHandle *FileHandle, code fuse.Status) {
_, _, entry, status := wfs.maybeReadEntry(inode)
func (wfs *WFS) AcquireHandle(inode uint64, uid, gid uint32) (fileHandle *FileHandle, status fuse.Status) {
var entry *filer_pb.Entry
_, _, entry, status = wfs.maybeReadEntry(inode)
if status == fuse.OK { if status == fuse.OK {
fileHandle = wfs.fhmap.AcquireFileHandle(wfs, inode, entry) fileHandle = wfs.fhmap.AcquireFileHandle(wfs, inode, entry)
fileHandle.entry = entry fileHandle.entry = entry

Loading…
Cancel
Save