]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
kclient: try to carry CAP_EXCL when we buffer data, even if file is now closed
authorSage Weil <sage@newdream.net>
Mon, 7 Apr 2008 23:40:52 +0000 (16:40 -0700)
committerSage Weil <sage@newdream.net>
Mon, 7 Apr 2008 23:40:52 +0000 (16:40 -0700)
src/kernel/super.h

index 1ff8093b5013fb765c9ecf97703795d84ceb84b3..d0b83cf841c4d4174904b0a591babfd42e8a4a4f 100644 (file)
@@ -277,7 +277,10 @@ static inline int __ceph_caps_file_wanted(struct ceph_inode_info *ci)
 
 static inline int __ceph_caps_wanted(struct ceph_inode_info *ci)
 {
-       return __ceph_caps_file_wanted(ci) | __ceph_caps_used(ci);
+       int w = __ceph_caps_file_wanted(ci) | __ceph_caps_used(ci);
+       if (w & CEPH_CAP_WRBUFFER)
+               w |= CEPH_CAP_EXCL;  /* want EXCL if we have dirty data */
+       return w;
 }
 
 static inline int ceph_file_mode(int flags)