mirror of
https://github.com/minio/minio.git
synced 2025-11-07 12:52:58 -05:00
Support bucket versioning (#9377)
- Implement a new xl.json 2.0.0 format to support, this moves the entire marshaling logic to POSIX layer, top layer always consumes a common FileInfo construct which simplifies the metadata reads. - Implement list object versions - Migrate to siphash from crchash for new deployments for object placements. Fixes #2111
This commit is contained in:
@@ -45,11 +45,11 @@ type RWLocker interface {
|
||||
}
|
||||
|
||||
// newNSLock - return a new name space lock map.
|
||||
func newNSLock(isDistXL bool) *nsLockMap {
|
||||
func newNSLock(isDistErasure bool) *nsLockMap {
|
||||
nsMutex := nsLockMap{
|
||||
isDistXL: isDistXL,
|
||||
isDistErasure: isDistErasure,
|
||||
}
|
||||
if isDistXL {
|
||||
if isDistErasure {
|
||||
return &nsMutex
|
||||
}
|
||||
nsMutex.lockMap = make(map[string]*nsLock)
|
||||
@@ -66,9 +66,9 @@ type nsLock struct {
|
||||
// Unlock, RLock and RUnlock.
|
||||
type nsLockMap struct {
|
||||
// Indicates if namespace is part of a distributed setup.
|
||||
isDistXL bool
|
||||
lockMap map[string]*nsLock
|
||||
lockMapMutex sync.Mutex
|
||||
isDistErasure bool
|
||||
lockMap map[string]*nsLock
|
||||
lockMapMutex sync.Mutex
|
||||
}
|
||||
|
||||
// Lock the namespace resource.
|
||||
@@ -190,7 +190,7 @@ type localLockInstance struct {
|
||||
// volume, path and operation ID.
|
||||
func (n *nsLockMap) NewNSLock(ctx context.Context, lockersFn func() []dsync.NetLocker, volume string, paths ...string) RWLocker {
|
||||
opsID := mustGetUUID()
|
||||
if n.isDistXL {
|
||||
if n.isDistErasure {
|
||||
drwmutex := dsync.NewDRWMutex(ctx, &dsync.Dsync{
|
||||
GetLockersFn: lockersFn,
|
||||
}, pathsJoinPrefix(volume, paths...)...)
|
||||
|
||||
Reference in New Issue
Block a user