v2 [PATCH BUG:1050] protocol/server Convert-OS-specific-lock-value-to-Glusterfs-lock
server/protocol's getlk implementation needs to convert the flock on the system to glfs own flock before returning it to the client to prevent misinterpretation of the flock structure. Signed-off-by: Pranith Kumar K <pranithk@gluster.com> Signed-off-by: Anand V. Avati <avati@dev.gluster.com> BUG: 1050 (fcntl F_GETLK lock calls do not return correct flock on non-linux systems) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1050
This commit is contained in:
parent
32451a4dd0
commit
e73a856e92
@ -189,6 +189,22 @@ server_lk_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
|
||||
state = CALL_STATE(frame);
|
||||
|
||||
if (op_ret == 0) {
|
||||
switch (lock->l_type) {
|
||||
case F_RDLCK:
|
||||
lock->l_type = GF_LK_F_RDLCK;
|
||||
break;
|
||||
case F_WRLCK:
|
||||
lock->l_type = GF_LK_F_WRLCK;
|
||||
break;
|
||||
case F_UNLCK:
|
||||
lock->l_type = GF_LK_F_UNLCK;
|
||||
break;
|
||||
default:
|
||||
gf_log (this->name, GF_LOG_ERROR,
|
||||
"Unknown lock type: %"PRId32"!", lock->l_type);
|
||||
break;
|
||||
}
|
||||
|
||||
gf_flock_from_flock (&rsp.flock, lock);
|
||||
} else if (op_errno != ENOSYS) {
|
||||
gf_log (this->name, GF_LOG_TRACE,
|
||||
|
Loading…
x
Reference in New Issue
Block a user