]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
kclient: be more careful about putting cap on rdcaps in ceph_add_cap()
authorSage Weil <sage@newdream.net>
Wed, 4 Mar 2009 22:14:22 +0000 (14:14 -0800)
committerSage Weil <sage@newdream.net>
Wed, 4 Mar 2009 22:14:22 +0000 (14:14 -0800)
Namely, remove it if it doesn't belong there anymore.  This needs
to happen when we release caps, too...

src/kernel/caps.c

index 64b9059b0e0f28e5478cd404fffca9cbbc1b86c5..5f5b92f2109972f361d770d5237eb760b6441f38 100644 (file)
@@ -227,12 +227,13 @@ retry:
                session->s_nr_caps++;
                INIT_LIST_HEAD(&cap->session_rdcaps);
        }
-       if ((cap->issued & ~CEPH_CAP_EXPIREABLE) == 0) {
-               /* move to tail of session rdcaps lru */
-               if (!list_empty(&cap->session_rdcaps))
-                   list_del(&cap->session_rdcaps);
+
+       /* move to tail of session rdcaps lru? */
+       if (!list_empty(&cap->session_rdcaps))
+               list_del(&cap->session_rdcaps);
+       if ((cap->issued & ~CEPH_CAP_EXPIREABLE) == 0)
                list_add_tail(&cap->session_rdcaps, &session->s_rdcaps);
-       }
+
        if (!ci->i_snap_realm) {
                struct ceph_snap_realm *realm = ceph_get_snap_realm(mdsc,
                                                                    realmino);