Project

General

Profile

Actions

Bug #13380

closed

Proxied write of lock.lock class method results in incorrect locker

Added by Jason Dillaman over 8 years ago. Updated over 8 years ago.

Status:
Resolved
Priority:
High
Assignee:
Jason Dillaman
Category:
-
Target version:
-
% Done:

0%

Source:
other
Tags:
Backport:
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

When a "lock.lock" class method is proxied, the end result is that the OSD is listed as the locker instead of the client.

# rados -p rbd lock info rbd_object_map.12d323e2e3c0 rbd_lock
{"name":"rbd_lock","type":"exclusive","tag":"","lockers":[{"name":"osd.0","cookie":"","description":"","expiration":"0.000000","addr":"10.214.134.32:0\/12881"}]}
ceph-osd.0.log:2015-10-05 16:53:12.754302 7fcfe69dd700  1 -- 10.214.134.32:6800/12881 <== client.4819 10.214.134.32:0/3469838287 15 ==== osd_op(client.4819.0:35 rbd_object_map.12d323e2e3c0 [call lock.lock] 1.df47cdb2 ondisk+write+known_if_redirected e21) v6 ==== 213+0+48 (3203225993 0 2451665491) 0x7fd015055180 con 0x7fd014cca840
ceph-osd.0.log:2015-10-05 16:53:12.754361 7fcfe69dd700 15 osd.0 21 enqueue_op 0x7fd014985f00 prio 63 cost 48 latency 0.000087 osd_op(client.4819.0:35 rbd_object_map.12d323e2e3c0 [call lock.lock] 1.df47cdb2 ondisk+write+known_if_redirected e21) v6
ceph-osd.0.log:2015-10-05 16:53:12.762658 7fcfeef07700 10 osd.0 21 dequeue_op 0x7fd014985f00 prio 63 cost 48 latency 0.008384 osd_op(client.4819.0:35 rbd_object_map.12d323e2e3c0 [call lock.lock] 1.df47cdb2 ondisk+write+known_if_redirected e21) v6 pg pg[1.2( v 21'1741 (0'0,21'1741] local-les=6 n=53 ec=5 les/c/f 6/6/0 5/5/5) [0,1] r=0 lpr=5 crt=21'1736 lcod 21'1740 mlcod 21'1740 active+clean]
ceph-osd.0.log:2015-10-05 16:53:12.762700 7fcfeef07700 10 osd.0 pg_epoch: 21 pg[1.2( v 21'1741 (0'0,21'1741] local-les=6 n=53 ec=5 les/c/f 6/6/0 5/5/5) [0,1] r=0 lpr=5 crt=21'1736 lcod 21'1740 mlcod 21'1740 active+clean] do_op osd_op(client.4819.0:35 rbd_object_map.12d323e2e3c0 [call lock.lock] 1.df47cdb2 ondisk+write+known_if_redirected e21) v6 may_write may_read -> write-ordered flags ondisk+write+known_if_redirected
ceph-osd.0.log:2015-10-05 16:53:12.762769 7fcfeef07700 10 osd.0 pg_epoch: 21 pg[1.2( v 21'1741 (0'0,21'1741] local-les=6 n=53 ec=5 les/c/f 6/6/0 5/5/5) [0,1] r=0 lpr=5 crt=21'1736 lcod 21'1740 mlcod 21'1740 active+clean] do_proxy_write Start proxy write for osd_op(client.4819.0:35 rbd_object_map.12d323e2e3c0 [call lock.lock] 1.df47cdb2 ondisk+write+known_if_redirected e21) v6

The locker is retrieved via the local cls_method_context_t provided to the method, which explains why the OSD proxying the write ends up as the locker.

Actions #1

Updated by Jason Dillaman over 8 years ago

  • Status changed from New to In Progress
  • Assignee set to Jason Dillaman
Actions #2

Updated by Jason Dillaman over 8 years ago

  • Status changed from In Progress to Fix Under Review
Actions #3

Updated by Loïc Dachary over 8 years ago

  • Status changed from Fix Under Review to Resolved
Actions

Also available in: Atom PDF