Actions
Tasks #64691
closedTasks #63293: Implement fscrypt in libcephfs and cephfs-fuse
Symlink target not set correctly in unencrypted dir
% Done:
0%
Reviewed:
Affected Versions:
Component(FS):
Labels (FS):
Pull request ID:
Tags (freeform):
Merge Commit:
Fixed In:
Released In:
Upkeep Timestamp:
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
Updated by Christopher Hoffman about 2 years ago
- 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;
}
}
Updated by Christopher Hoffman about 2 years ago
- Subject changed from Symlink target not set correct in unencrypted dir to Symlink target not set correctly in unencrypted dir
- Description updated (diff)
Updated by Dhairya Parmar about 2 years ago
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?
Updated by Christopher Hoffman almost 2 years ago
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
Actions