Tasks #64691
closed
Tasks #63293: Implement fscrypt in libcephfs and cephfs-fuse
Symlink target not set correctly in unencrypted dir
Added by Christopher Hoffman 2 months ago.
Updated about 2 months ago.
Description
Symlink does not work outside of an unencrypted dir. The target does not get set
[mycephfs]$ touch filea
[mycephfs]$ ln -s filea file1
[mycephfs]$ ls -l
total 1
lrwxrwxrwx. 1 choffman choffman 5 Mar 4 16:07 file1 -> ''
-rw-------. 1 choffman choffman 0 Mar 4 16:07 filea
[mycephfs]$ cat file1
cat: file1: Is a directory
- Status changed from In Progress to Resolved
in->symlink_plain wasn't being set in case of non-fscrypt.
diff --git a/src/client/Client.cc b/src/client/Client.cc
index 9d8ba1cdfda..93847da47b8 100644
--- a/src/client/Client.cc
+++ b/src/client/Client.cc
@@ -1635,13 +1635,17 @@ Inode* Client::insert_trace(MetaRequest *request, MetaSession *session)
request->perms);
auto fscrypt_denc = fscrypt->get_fname_denc(in->fscrypt_ctx, &in->fscrypt_key_validator, true);
- if (fscrypt_denc && in->is_symlink()) {
- string slname;
- int ret = fscrypt_denc->get_decrypted_symlink(in->symlink, &slname);
- if (ret < 0) {
- ldout(cct, 0) << __FILE__ << ":" << __LINE__ << ": failed to decrypt symlink (r=" << ret << ")" << dendl;
+ if (in->is_symlink()) {
+ if (fscrypt_denc) {
+ string slname;
+ int ret = fscrypt_denc->get_decrypted_symlink(in->symlink, &slname);
+ if (ret < 0) {
+ ldout(cct, 0) << __FILE__ << ":" << __LINE__ << ": failed to decrypt symlink (r=" << ret << ")" << dendl;
+ }
+ in->symlink_plain = slname;
+ } else {
+ in->symlink_plain = in->symlink;
}
- in->symlink_plain = slname;
}
}
- Subject changed from Symlink target not set correct in unencrypted dir to Symlink target not set correctly in unencrypted dir
- Description updated (diff)
Christopher Hoffman wrote:
in->symlink_plain wasn't being set in case of non-fscrypt.
[...]
is this patch going to be part of the master FSCrypt PR?
Dhairya Parmar wrote:
Christopher Hoffman wrote:
in->symlink_plain wasn't being set in case of non-fscrypt.
[...]
is this patch going to be part of the master FSCrypt PR?
Yeah it is. It's part of the wip-fscrypt branch here: https://github.com/chrisphoffman/ceph/tree/wip-fscrypt
Also available in: Atom
PDF