summaryrefslogtreecommitdiffstats
path: root/fs/orangefs/namei.c
diff options
context:
space:
mode:
authorLinus Torvalds2018-06-07 18:23:12 +0200
committerLinus Torvalds2018-06-07 18:23:12 +0200
commit091a0f278510696f3f573618cc7381c6f35659cb (patch)
tree553dd9152797a46afc14d2bc1ca633b6c653f9e9 /fs/orangefs/namei.c
parentMerge tag 'ovl-fixes-4.18' of git://git.kernel.org/pub/scm/linux/kernel/git/m... (diff)
parentorangefs: use sparse annotations for holding locks across function calls. (diff)
downloadkernel-qcow2-linux-091a0f278510696f3f573618cc7381c6f35659cb.tar.gz
kernel-qcow2-linux-091a0f278510696f3f573618cc7381c6f35659cb.tar.xz
kernel-qcow2-linux-091a0f278510696f3f573618cc7381c6f35659cb.zip
Merge tag 'for-linus-4.18-ofs' of git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux
Pull orangefs updates from Mike Marshall: "Fixes and cleanups: - fix some sparse warnings - cleanup some code formatting - fix up some attribute/meta-data related code" * tag 'for-linus-4.18-ofs' of git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux: orangefs: use sparse annotations for holding locks across function calls. orangefs: make debug_help_fops static orangefs: remove unused function orangefs_get_bufmap_init orangefs: specify user pointers when using dev_map_desc and bufmap orangefs: formatting cleanups orangefs: set i_size on new symlink orangefs: report attributes_mask and attributes for statx orangefs: make struct orangefs_file_vm_ops static orangefs: revamp block sizes
Diffstat (limited to 'fs/orangefs/namei.c')
-rw-r--r--fs/orangefs/namei.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/orangefs/namei.c b/fs/orangefs/namei.c
index 365cd73d9109..625b0580f9be 100644
--- a/fs/orangefs/namei.c
+++ b/fs/orangefs/namei.c
@@ -278,6 +278,13 @@ static int orangefs_symlink(struct inode *dir,
ret = PTR_ERR(inode);
goto out;
}
+ /*
+ * This is necessary because orangefs_inode_getattr will not
+ * re-read symlink size as it is impossible for it to change.
+ * Invalidating the cache does not help. orangefs_new_inode
+ * does not set the correct size (it does not know symname).
+ */
+ inode->i_size = strlen(symname);
gossip_debug(GOSSIP_NAME_DEBUG,
"Assigned symlink inode new number of %pU\n",