]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
client: priority to verify the correctness of the "flag" 12897/head
authorhuanwen ren <ren.huanwen@zte.com.cn>
Wed, 21 Dec 2016 01:26:43 +0000 (01:26 +0000)
committerhuanwen ren <ren.huanwen@zte.com.cn>
Wed, 21 Dec 2016 01:26:43 +0000 (01:26 +0000)
Signed-off-by: huanwen ren <ren.huanwen@zte.com.cn>
src/client/Client.cc

index 5de2b22cbbc2b35d9176addf47c624077b648a89..27135705e1ad34a341a8028972aea01e1b776101 100644 (file)
@@ -7994,17 +7994,17 @@ void Client::_put_fh(Fh *f)
 int Client::_open(Inode *in, int flags, mode_t mode, Fh **fhp,
                  const UserPerm& perms)
 {
+  if (in->snapid != CEPH_NOSNAP &&
+      (flags & (O_WRONLY | O_RDWR | O_CREAT | O_TRUNC | O_APPEND))) {
+    return -EROFS;
+  }
+
   int cmode = ceph_flags_to_mode(flags);
   if (cmode < 0)
     return -EINVAL;
   int want = ceph_caps_for_mode(cmode);
   int result = 0;
 
-  if (in->snapid != CEPH_NOSNAP &&
-      (flags & (O_WRONLY | O_RDWR | O_CREAT | O_TRUNC | O_APPEND))) {
-    return -EROFS;
-  }
-
   in->get_open_ref(cmode);  // make note of pending open, since it effects _wanted_ caps.
 
   if ((flags & O_TRUNC) == 0 &&