Merge tag 'ceph-for-6.7-rc1' of https://github.com/ceph/ceph-client
[sfrench/cifs-2.6.git] / fs / ceph / crypto.c
index e3b1c3fab4127f94d8d4177ad0f431afebff40cf..3b3c4d8d401ece05205609eddeb4b4a230238300 100644 (file)
@@ -113,7 +113,7 @@ static int ceph_crypt_set_context(struct inode *inode, const void *ctx,
 
        cia.fscrypt_auth = cfa;
 
-       ret = __ceph_setattr(inode, &attr, &cia);
+       ret = __ceph_setattr(&nop_mnt_idmap, inode, &attr, &cia);
        if (ret == 0)
                inode_set_flags(inode, S_ENCRYPTED, S_ENCRYPTED);
        kfree(cia.fscrypt_auth);
@@ -129,7 +129,7 @@ static bool ceph_crypt_empty_dir(struct inode *inode)
 
 static const union fscrypt_policy *ceph_get_dummy_policy(struct super_block *sb)
 {
-       return ceph_sb_to_client(sb)->fsc_dummy_enc_policy.policy;
+       return ceph_sb_to_fs_client(sb)->fsc_dummy_enc_policy.policy;
 }
 
 static struct fscrypt_operations ceph_fscrypt_ops = {
@@ -212,6 +212,7 @@ void ceph_fscrypt_as_ctx_to_req(struct ceph_mds_request *req,
 static struct inode *parse_longname(const struct inode *parent,
                                    const char *name, int *name_len)
 {
+       struct ceph_client *cl = ceph_inode_to_client(parent);
        struct inode *dir = NULL;
        struct ceph_vino vino = { .snap = CEPH_NOSNAP };
        char *inode_number;
@@ -223,12 +224,12 @@ static struct inode *parse_longname(const struct inode *parent,
        name++;
        name_end = strrchr(name, '_');
        if (!name_end) {
-               dout("Failed to parse long snapshot name: %s\n", name);
+               doutc(cl, "failed to parse long snapshot name: %s\n", name);
                return ERR_PTR(-EIO);
        }
        *name_len = (name_end - name);
        if (*name_len <= 0) {
-               pr_err("Failed to parse long snapshot name\n");
+               pr_err_client(cl, "failed to parse long snapshot name\n");
                return ERR_PTR(-EIO);
        }
 
@@ -240,7 +241,7 @@ static struct inode *parse_longname(const struct inode *parent,
                return ERR_PTR(-ENOMEM);
        ret = kstrtou64(inode_number, 10, &vino.ino);
        if (ret) {
-               dout("Failed to parse inode number: %s\n", name);
+               doutc(cl, "failed to parse inode number: %s\n", name);
                dir = ERR_PTR(ret);
                goto out;
        }
@@ -251,7 +252,7 @@ static struct inode *parse_longname(const struct inode *parent,
                /* This can happen if we're not mounting cephfs on the root */
                dir = ceph_get_inode(parent->i_sb, vino, NULL);
                if (IS_ERR(dir))
-                       dout("Can't find inode %s (%s)\n", inode_number, name);
+                       doutc(cl, "can't find inode %s (%s)\n", inode_number, name);
        }
 
 out:
@@ -262,6 +263,7 @@ out:
 int ceph_encode_encrypted_dname(struct inode *parent, struct qstr *d_name,
                                char *buf)
 {
+       struct ceph_client *cl = ceph_inode_to_client(parent);
        struct inode *dir = parent;
        struct qstr iname;
        u32 len;
@@ -330,7 +332,7 @@ int ceph_encode_encrypted_dname(struct inode *parent, struct qstr *d_name,
 
        /* base64 encode the encrypted name */
        elen = ceph_base64_encode(cryptbuf, len, buf);
-       dout("base64-encoded ciphertext name = %.*s\n", elen, buf);
+       doutc(cl, "base64-encoded ciphertext name = %.*s\n", elen, buf);
 
        /* To understand the 240 limit, see CEPH_NOHASH_NAME_MAX comments */
        WARN_ON(elen > 240);
@@ -505,7 +507,10 @@ int ceph_fscrypt_decrypt_block_inplace(const struct inode *inode,
                                  struct page *page, unsigned int len,
                                  unsigned int offs, u64 lblk_num)
 {
-       dout("%s: len %u offs %u blk %llu\n", __func__, len, offs, lblk_num);
+       struct ceph_client *cl = ceph_inode_to_client(inode);
+
+       doutc(cl, "%p %llx.%llx len %u offs %u blk %llu\n", inode,
+             ceph_vinop(inode), len, offs, lblk_num);
        return fscrypt_decrypt_block_inplace(inode, page, len, offs, lblk_num);
 }
 
@@ -514,7 +519,10 @@ int ceph_fscrypt_encrypt_block_inplace(const struct inode *inode,
                                  unsigned int offs, u64 lblk_num,
                                  gfp_t gfp_flags)
 {
-       dout("%s: len %u offs %u blk %llu\n", __func__, len, offs, lblk_num);
+       struct ceph_client *cl = ceph_inode_to_client(inode);
+
+       doutc(cl, "%p %llx.%llx len %u offs %u blk %llu\n", inode,
+             ceph_vinop(inode), len, offs, lblk_num);
        return fscrypt_encrypt_block_inplace(inode, page, len, offs, lblk_num,
                                             gfp_flags);
 }
@@ -583,6 +591,7 @@ int ceph_fscrypt_decrypt_extents(struct inode *inode, struct page **page,
                                 u64 off, struct ceph_sparse_extent *map,
                                 u32 ext_cnt)
 {
+       struct ceph_client *cl = ceph_inode_to_client(inode);
        int i, ret = 0;
        struct ceph_inode_info *ci = ceph_inode(inode);
        u64 objno, objoff;
@@ -590,7 +599,8 @@ int ceph_fscrypt_decrypt_extents(struct inode *inode, struct page **page,
 
        /* Nothing to do for empty array */
        if (ext_cnt == 0) {
-               dout("%s: empty array, ret 0\n", __func__);
+               doutc(cl, "%p %llx.%llx empty array, ret 0\n", inode,
+                     ceph_vinop(inode));
                return 0;
        }
 
@@ -604,14 +614,17 @@ int ceph_fscrypt_decrypt_extents(struct inode *inode, struct page **page,
                int fret;
 
                if ((ext->off | ext->len) & ~CEPH_FSCRYPT_BLOCK_MASK) {
-                       pr_warn("%s: bad encrypted sparse extent idx %d off %llx len %llx\n",
-                               __func__, i, ext->off, ext->len);
+                       pr_warn_client(cl,
+                               "%p %llx.%llx bad encrypted sparse extent "
+                               "idx %d off %llx len %llx\n",
+                               inode, ceph_vinop(inode), i, ext->off,
+                               ext->len);
                        return -EIO;
                }
                fret = ceph_fscrypt_decrypt_pages(inode, &page[pgidx],
                                                 off + pgsoff, ext->len);
-               dout("%s: [%d] 0x%llx~0x%llx fret %d\n", __func__, i,
-                               ext->off, ext->len, fret);
+               doutc(cl, "%p %llx.%llx [%d] 0x%llx~0x%llx fret %d\n", inode,
+                     ceph_vinop(inode), i, ext->off, ext->len, fret);
                if (fret < 0) {
                        if (ret == 0)
                                ret = fret;
@@ -619,7 +632,7 @@ int ceph_fscrypt_decrypt_extents(struct inode *inode, struct page **page,
                }
                ret = pgsoff + fret;
        }
-       dout("%s: ret %d\n", __func__, ret);
+       doutc(cl, "ret %d\n", ret);
        return ret;
 }