|
|
@ -115,7 +115,7 @@ func (l *lockServer) Lock(args *LockArgs, reply *bool) error { |
|
|
|
} |
|
|
|
} |
|
|
|
_, *reply = l.lockMap[args.Name] |
|
|
|
_, *reply = l.lockMap[args.Name] |
|
|
|
if !*reply { // No locks held on the given name, so claim write lock
|
|
|
|
if !*reply { // No locks held on the given name, so claim write lock
|
|
|
|
l.lockMap[args.Name] = []lockRequesterInfo{lockRequesterInfo{writer: true, node: args.Node, rpcPath: args.RPCPath, uid: args.UID, timestamp: time.Now(), timeLastCheck: time.Now()}} |
|
|
|
l.lockMap[args.Name] = []lockRequesterInfo{{writer: true, node: args.Node, rpcPath: args.RPCPath, uid: args.UID, timestamp: time.Now(), timeLastCheck: time.Now()}} |
|
|
|
} |
|
|
|
} |
|
|
|
*reply = !*reply // Negate *reply to return true when lock is granted or false otherwise
|
|
|
|
*reply = !*reply // Negate *reply to return true when lock is granted or false otherwise
|
|
|
|
return nil |
|
|
|
return nil |
|
|
@ -152,7 +152,7 @@ func (l *lockServer) RLock(args *LockArgs, reply *bool) error { |
|
|
|
var lri []lockRequesterInfo |
|
|
|
var lri []lockRequesterInfo |
|
|
|
lri, *reply = l.lockMap[args.Name] |
|
|
|
lri, *reply = l.lockMap[args.Name] |
|
|
|
if !*reply { // No locks held on the given name, so claim (first) read lock
|
|
|
|
if !*reply { // No locks held on the given name, so claim (first) read lock
|
|
|
|
l.lockMap[args.Name] = []lockRequesterInfo{lockRequesterInfo{writer: false, node: args.Node, rpcPath: args.RPCPath, uid: args.UID, timestamp: time.Now(), timeLastCheck: time.Now()}} |
|
|
|
l.lockMap[args.Name] = []lockRequesterInfo{{writer: false, node: args.Node, rpcPath: args.RPCPath, uid: args.UID, timestamp: time.Now(), timeLastCheck: time.Now()}} |
|
|
|
*reply = true |
|
|
|
*reply = true |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
if *reply = !isWriteLock(lri); *reply { // Unless there is a write lock
|
|
|
|
if *reply = !isWriteLock(lri); *reply { // Unless there is a write lock
|
|
|
|