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:
Pranith Kumar K 2010-07-14 07:11:28 +00:00 committed by Anand V. Avati
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,