diff options
Diffstat (limited to 'fs/ceph/inode.c')
| -rw-r--r-- | fs/ceph/inode.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c index e7cca414da03..62377ec37edf 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c | |||
| @@ -845,7 +845,7 @@ static void ceph_set_dentry_offset(struct dentry *dn) | |||
| 845 | * the caller) if we fail. | 845 | * the caller) if we fail. |
| 846 | */ | 846 | */ |
| 847 | static struct dentry *splice_dentry(struct dentry *dn, struct inode *in, | 847 | static struct dentry *splice_dentry(struct dentry *dn, struct inode *in, |
| 848 | bool *prehash) | 848 | bool *prehash, bool set_offset) |
| 849 | { | 849 | { |
| 850 | struct dentry *realdn; | 850 | struct dentry *realdn; |
| 851 | 851 | ||
| @@ -877,7 +877,8 @@ static struct dentry *splice_dentry(struct dentry *dn, struct inode *in, | |||
| 877 | } | 877 | } |
| 878 | if ((!prehash || *prehash) && d_unhashed(dn)) | 878 | if ((!prehash || *prehash) && d_unhashed(dn)) |
| 879 | d_rehash(dn); | 879 | d_rehash(dn); |
| 880 | ceph_set_dentry_offset(dn); | 880 | if (set_offset) |
| 881 | ceph_set_dentry_offset(dn); | ||
| 881 | out: | 882 | out: |
| 882 | return dn; | 883 | return dn; |
| 883 | } | 884 | } |
| @@ -1062,7 +1063,7 @@ int ceph_fill_trace(struct super_block *sb, struct ceph_mds_request *req, | |||
| 1062 | d_delete(dn); | 1063 | d_delete(dn); |
| 1063 | goto done; | 1064 | goto done; |
| 1064 | } | 1065 | } |
| 1065 | dn = splice_dentry(dn, in, &have_lease); | 1066 | dn = splice_dentry(dn, in, &have_lease, true); |
| 1066 | if (IS_ERR(dn)) { | 1067 | if (IS_ERR(dn)) { |
| 1067 | err = PTR_ERR(dn); | 1068 | err = PTR_ERR(dn); |
| 1068 | goto done; | 1069 | goto done; |
| @@ -1105,7 +1106,7 @@ int ceph_fill_trace(struct super_block *sb, struct ceph_mds_request *req, | |||
| 1105 | goto done; | 1106 | goto done; |
| 1106 | } | 1107 | } |
| 1107 | dout(" linking snapped dir %p to dn %p\n", in, dn); | 1108 | dout(" linking snapped dir %p to dn %p\n", in, dn); |
| 1108 | dn = splice_dentry(dn, in, NULL); | 1109 | dn = splice_dentry(dn, in, NULL, true); |
| 1109 | if (IS_ERR(dn)) { | 1110 | if (IS_ERR(dn)) { |
| 1110 | err = PTR_ERR(dn); | 1111 | err = PTR_ERR(dn); |
| 1111 | goto done; | 1112 | goto done; |
| @@ -1237,7 +1238,7 @@ retry_lookup: | |||
| 1237 | err = PTR_ERR(in); | 1238 | err = PTR_ERR(in); |
| 1238 | goto out; | 1239 | goto out; |
| 1239 | } | 1240 | } |
| 1240 | dn = splice_dentry(dn, in, NULL); | 1241 | dn = splice_dentry(dn, in, NULL, false); |
| 1241 | if (IS_ERR(dn)) | 1242 | if (IS_ERR(dn)) |
| 1242 | dn = NULL; | 1243 | dn = NULL; |
| 1243 | } | 1244 | } |
