mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-11-27 20:59:42 +08:00
randomizing next file handle id
This commit is contained in:
parent
3e6ca6e706
commit
57dc39c451
@ -1,6 +1,7 @@
|
|||||||
package mount
|
package mount
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"github.com/seaweedfs/seaweedfs/weed/util"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/seaweedfs/seaweedfs/weed/pb/filer_pb"
|
"github.com/seaweedfs/seaweedfs/weed/pb/filer_pb"
|
||||||
@ -17,7 +18,7 @@ func NewFileHandleToInode() *FileHandleToInode {
|
|||||||
return &FileHandleToInode{
|
return &FileHandleToInode{
|
||||||
inode2fh: make(map[uint64]*FileHandle),
|
inode2fh: make(map[uint64]*FileHandle),
|
||||||
fh2inode: make(map[FileHandleId]uint64),
|
fh2inode: make(map[FileHandleId]uint64),
|
||||||
nextFh: 0,
|
nextFh: FileHandleId(util.RandomUint64()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,7 +45,7 @@ func (i *FileHandleToInode) AcquireFileHandle(wfs *WFS, inode uint64, entry *fil
|
|||||||
fh, found := i.inode2fh[inode]
|
fh, found := i.inode2fh[inode]
|
||||||
if !found {
|
if !found {
|
||||||
fh = newFileHandle(wfs, i.nextFh, inode, entry)
|
fh = newFileHandle(wfs, i.nextFh, inode, entry)
|
||||||
i.nextFh++
|
i.nextFh = FileHandleId(util.RandomUint64())
|
||||||
i.inode2fh[inode] = fh
|
i.inode2fh[inode] = fh
|
||||||
i.fh2inode[fh.fh] = inode
|
i.fh2inode[fh.fh] = inode
|
||||||
} else {
|
} else {
|
||||||
|
@ -6,6 +6,7 @@ import (
|
|||||||
"github.com/seaweedfs/seaweedfs/weed/filer"
|
"github.com/seaweedfs/seaweedfs/weed/filer"
|
||||||
"github.com/seaweedfs/seaweedfs/weed/glog"
|
"github.com/seaweedfs/seaweedfs/weed/glog"
|
||||||
"github.com/seaweedfs/seaweedfs/weed/mount/meta_cache"
|
"github.com/seaweedfs/seaweedfs/weed/mount/meta_cache"
|
||||||
|
"github.com/seaweedfs/seaweedfs/weed/util"
|
||||||
"math"
|
"math"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
@ -45,7 +46,7 @@ func NewDirectoryHandleToInode() *DirectoryHandleToInode {
|
|||||||
func (wfs *WFS) AcquireDirectoryHandle() (DirectoryHandleId, *DirectoryHandle) {
|
func (wfs *WFS) AcquireDirectoryHandle() (DirectoryHandleId, *DirectoryHandle) {
|
||||||
wfs.fhmap.Lock()
|
wfs.fhmap.Lock()
|
||||||
fh := wfs.fhmap.nextFh
|
fh := wfs.fhmap.nextFh
|
||||||
wfs.fhmap.nextFh++
|
wfs.fhmap.nextFh = FileHandleId(util.RandomUint64())
|
||||||
wfs.fhmap.Unlock()
|
wfs.fhmap.Unlock()
|
||||||
|
|
||||||
wfs.dhmap.Lock()
|
wfs.dhmap.Lock()
|
||||||
|
@ -148,6 +148,12 @@ func RandomInt32() int32 {
|
|||||||
return int32(BytesToUint32(buf))
|
return int32(BytesToUint32(buf))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func RandomUint64() int32 {
|
||||||
|
buf := make([]byte, 8)
|
||||||
|
rand.Read(buf)
|
||||||
|
return int32(BytesToUint64(buf))
|
||||||
|
}
|
||||||
|
|
||||||
func RandomBytes(byteCount int) []byte {
|
func RandomBytes(byteCount int) []byte {
|
||||||
buf := make([]byte, byteCount)
|
buf := make([]byte, byteCount)
|
||||||
rand.Read(buf)
|
rand.Read(buf)
|
||||||
|
Loading…
Reference in New Issue
Block a user