ceph: fix flush_snap logic after putting caps
[linux-2.6-microblaze.git] / fs / ceph / caps.c
index 255a512..638d18c 100644 (file)
@@ -3093,10 +3093,12 @@ static void __ceph_put_cap_refs(struct ceph_inode_info *ci, int had,
        dout("put_cap_refs %p had %s%s%s\n", inode, ceph_cap_string(had),
             last ? " last" : "", put ? " put" : "");
 
-       if (last && !skip_checking_caps)
-               ceph_check_caps(ci, 0, NULL);
-       else if (flushsnaps)
-               ceph_flush_snaps(ci, NULL);
+       if (!skip_checking_caps) {
+               if (last)
+                       ceph_check_caps(ci, 0, NULL);
+               else if (flushsnaps)
+                       ceph_flush_snaps(ci, NULL);
+       }
        if (wake)
                wake_up_all(&ci->i_cap_wq);
        while (put-- > 0)