From: Sage Weil Date: Thu, 21 Aug 2008 18:21:38 +0000 (-0700) Subject: kclient: fix i_lock/snap_rwsem lock inversion (read, not write) X-Git-Tag: v0.4~189 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5614170e6eb0a512dd9b15db81e6ff84438748cd;p=ceph.git kclient: fix i_lock/snap_rwsem lock inversion (read, not write) --- diff --git a/src/kernel/caps.c b/src/kernel/caps.c index dc563aaf1fd2..83351b7092a5 100644 --- a/src/kernel/caps.c +++ b/src/kernel/caps.c @@ -454,7 +454,7 @@ ack: dout(10, "inverting snap/in locks on %p\n", inode); spin_unlock(&inode->i_lock); - down_write(&mdsc->snap_rwsem); + down_read(&mdsc->snap_rwsem); took_snap_rwsem = 1; goto retry; } @@ -492,7 +492,7 @@ ack: if (session) mutex_unlock(&session->s_mutex); if (took_snap_rwsem) - up_write(&mdsc->snap_rwsem); + up_read(&mdsc->snap_rwsem); }