ceph: fix dir_auth check in ceph_fill_dirfrag()
authorYan, Zheng <zyan@redhat.com>
Tue, 3 May 2016 14:33:20 +0000 (22:33 +0800)
committerIlya Dryomov <idryomov@gmail.com>
Wed, 25 May 2016 23:15:37 +0000 (01:15 +0200)
-1 is CDIR_AUTH_PARENT, it means dir's auth mds is the same as
inode's auth mds

Signed-off-by: Yan, Zheng <zyan@redhat.com>
fs/ceph/inode.c

index d91eb6b492593d214e96ab8481576ead864f76dc..562f57d15f46da29a687beabeafb205d6713c75a 100644 (file)
@@ -254,6 +254,9 @@ static int ceph_fill_dirfrag(struct inode *inode,
                diri_auth = ci->i_auth_cap->mds;
        spin_unlock(&ci->i_ceph_lock);
 
+       if (mds == -1) /* CDIR_AUTH_PARENT */
+               mds = diri_auth;
+
        mutex_lock(&ci->i_fragtree_mutex);
        if (ndist == 0 && mds == diri_auth) {
                /* no delegation info needed. */