From: Sage Weil Date: Mon, 30 Mar 2009 20:34:58 +0000 (-0700) Subject: kclient: only request wanted caps if they aren't already issued X-Git-Tag: v0.7.3~311^2~51 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=ee2736e014924a59e89a1eab23c180dca75dd82c;p=ceph.git kclient: only request wanted caps if they aren't already issued We still probably want something here to avoid updating wanted on non-auth caps. --- diff --git a/src/kernel/caps.c b/src/kernel/caps.c index 17c7ebab3b332..d05651d4fad2f 100644 --- a/src/kernel/caps.c +++ b/src/kernel/caps.c @@ -966,7 +966,7 @@ retry_locked: goto ack; /* want more caps from mds? */ - if (want & ~cap->mds_wanted) + if (want & ~(cap->mds_wanted | cap->issued)) goto ack; if ((cap->issued & ~retain) == 0 && diff --git a/src/kernel/file.c b/src/kernel/file.c index d719233ae1e3e..d8b89f91a3eb3 100644 --- a/src/kernel/file.c +++ b/src/kernel/file.c @@ -126,8 +126,9 @@ int ceph_open(struct inode *inode, struct file *file) int mds_wanted = __ceph_caps_mds_wanted(ci); int issued = __ceph_caps_issued(ci, NULL); - dout(10, "open fmode %d caps %d using existing on %p\n", - fmode, new_want, inode); + dout(10, "open %p fmode %d want %s issued %s using existing\n", + inode, fmode, ceph_cap_string(new_want), + ceph_cap_string(issued)); __ceph_get_fmode(ci, fmode); spin_unlock(&inode->i_lock);