Mike Marshall | 1182fca | 2015-07-17 10:38:15 -0400 | [diff] [blame] | 1 | /* |
| 2 | * (C) 2001 Clemson University and The University of Chicago |
| 3 | * |
| 4 | * See COPYING in top-level directory. |
| 5 | */ |
| 6 | |
| 7 | #include "protocol.h" |
Mike Marshall | 575e946 | 2015-12-04 12:56:14 -0500 | [diff] [blame] | 8 | #include "orangefs-kernel.h" |
| 9 | #include "orangefs-bufmap.h" |
Mike Marshall | 1182fca | 2015-07-17 10:38:15 -0400 | [diff] [blame] | 10 | |
Yi Liu | 8bb8aef | 2015-11-24 15:12:14 -0500 | [diff] [blame] | 11 | static const char *orangefs_follow_link(struct dentry *dentry, void **cookie) |
Mike Marshall | 1182fca | 2015-07-17 10:38:15 -0400 | [diff] [blame] | 12 | { |
Yi Liu | 8bb8aef | 2015-11-24 15:12:14 -0500 | [diff] [blame] | 13 | char *target = ORANGEFS_I(dentry->d_inode)->link_target; |
Mike Marshall | 1182fca | 2015-07-17 10:38:15 -0400 | [diff] [blame] | 14 | |
| 15 | gossip_debug(GOSSIP_INODE_DEBUG, |
| 16 | "%s: called on %s (target is %p)\n", |
| 17 | __func__, (char *)dentry->d_name.name, target); |
| 18 | |
| 19 | *cookie = target; |
| 20 | |
| 21 | return target; |
| 22 | } |
| 23 | |
Yi Liu | 8bb8aef | 2015-11-24 15:12:14 -0500 | [diff] [blame] | 24 | struct inode_operations orangefs_symlink_inode_operations = { |
Mike Marshall | 1182fca | 2015-07-17 10:38:15 -0400 | [diff] [blame] | 25 | .readlink = generic_readlink, |
Yi Liu | 8bb8aef | 2015-11-24 15:12:14 -0500 | [diff] [blame] | 26 | .follow_link = orangefs_follow_link, |
| 27 | .setattr = orangefs_setattr, |
| 28 | .getattr = orangefs_getattr, |
| 29 | .listxattr = orangefs_listxattr, |
Mike Marshall | 1182fca | 2015-07-17 10:38:15 -0400 | [diff] [blame] | 30 | .setxattr = generic_setxattr, |
Martin Brandenburg | 933287d | 2016-01-30 13:46:54 -0500 | [diff] [blame^] | 31 | .permission = orangefs_permission, |
Mike Marshall | 1182fca | 2015-07-17 10:38:15 -0400 | [diff] [blame] | 32 | }; |