fix dep, impl nonempty
This commit is contained in:
parent
c8c18403e4
commit
a5d237df2a
24 changed files with 286 additions and 215 deletions
48
vendor/github.com/hanwen/go-fuse/fuse/nodefs/handle.go
generated
vendored
48
vendor/github.com/hanwen/go-fuse/fuse/nodefs/handle.go
generated
vendored
|
|
@ -35,9 +35,9 @@ type handleMap interface {
|
|||
}
|
||||
|
||||
type handled struct {
|
||||
check uint32
|
||||
handle uint64
|
||||
count int
|
||||
handle uint64
|
||||
generation uint64
|
||||
count int
|
||||
}
|
||||
|
||||
func (h *handled) verify() {
|
||||
|
|
@ -76,29 +76,29 @@ func newPortableHandleMap() *portableHandleMap {
|
|||
|
||||
func (m *portableHandleMap) Register(obj *handled) (handle, generation uint64) {
|
||||
m.Lock()
|
||||
if obj.count == 0 {
|
||||
if obj.check != 0 {
|
||||
panic(_ALREADY_MSG)
|
||||
}
|
||||
|
||||
if len(m.freeIds) == 0 {
|
||||
handle = uint64(len(m.handles))
|
||||
m.handles = append(m.handles, obj)
|
||||
} else {
|
||||
handle = m.freeIds[len(m.freeIds)-1]
|
||||
m.freeIds = m.freeIds[:len(m.freeIds)-1]
|
||||
m.generation++
|
||||
m.handles[handle] = obj
|
||||
}
|
||||
m.used++
|
||||
obj.handle = handle
|
||||
} else {
|
||||
handle = obj.handle
|
||||
defer m.Unlock()
|
||||
// Reuse existing handle
|
||||
if obj.count != 0 {
|
||||
obj.count++
|
||||
return obj.handle, obj.generation
|
||||
}
|
||||
// Create a new handle number or recycle one on from the free list
|
||||
if len(m.freeIds) == 0 {
|
||||
obj.handle = uint64(len(m.handles))
|
||||
m.handles = append(m.handles, obj)
|
||||
} else {
|
||||
obj.handle = m.freeIds[len(m.freeIds)-1]
|
||||
m.freeIds = m.freeIds[:len(m.freeIds)-1]
|
||||
m.handles[obj.handle] = obj
|
||||
}
|
||||
// Increment generation number to guarantee the (handle, generation) tuple
|
||||
// is unique
|
||||
m.generation++
|
||||
m.used++
|
||||
obj.generation = m.generation
|
||||
obj.count++
|
||||
generation = m.generation
|
||||
m.Unlock()
|
||||
return
|
||||
|
||||
return obj.handle, obj.generation
|
||||
}
|
||||
|
||||
func (m *portableHandleMap) Handle(obj *handled) (h uint64) {
|
||||
|
|
|
|||
6
vendor/github.com/hanwen/go-fuse/fuse/nodefs/inode.go
generated
vendored
6
vendor/github.com/hanwen/go-fuse/fuse/nodefs/inode.go
generated
vendored
|
|
@ -24,10 +24,6 @@ type parentData struct {
|
|||
type Inode struct {
|
||||
handled handled
|
||||
|
||||
// Generation number of the inode. Each (re)use of an inode
|
||||
// should have a unique generation number.
|
||||
generation uint64
|
||||
|
||||
// Number of open files and its protection.
|
||||
openFilesMutex sync.Mutex
|
||||
openFiles []*openedFile
|
||||
|
|
@ -94,6 +90,8 @@ func (n *Inode) Parent() (parent *Inode, name string) {
|
|||
if n.mountPoint != nil {
|
||||
return nil, ""
|
||||
}
|
||||
n.mount.treeLock.RLock()
|
||||
defer n.mount.treeLock.RUnlock()
|
||||
for k := range n.parents {
|
||||
return k.parent, k.name
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue