diff options
Diffstat (limited to 'fs/ocfs2/dlmglue.c')
-rw-r--r-- | fs/ocfs2/dlmglue.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/fs/ocfs2/dlmglue.c b/fs/ocfs2/dlmglue.c index 68728de12864..0ff424c6d17c 100644 --- a/fs/ocfs2/dlmglue.c +++ b/fs/ocfs2/dlmglue.c | |||
@@ -2140,6 +2140,7 @@ static void __ocfs2_stuff_meta_lvb(struct inode *inode) | |||
2140 | struct ocfs2_inode_info *oi = OCFS2_I(inode); | 2140 | struct ocfs2_inode_info *oi = OCFS2_I(inode); |
2141 | struct ocfs2_lock_res *lockres = &oi->ip_inode_lockres; | 2141 | struct ocfs2_lock_res *lockres = &oi->ip_inode_lockres; |
2142 | struct ocfs2_meta_lvb *lvb; | 2142 | struct ocfs2_meta_lvb *lvb; |
2143 | struct timespec ts; | ||
2143 | 2144 | ||
2144 | lvb = ocfs2_dlm_lvb(&lockres->l_lksb); | 2145 | lvb = ocfs2_dlm_lvb(&lockres->l_lksb); |
2145 | 2146 | ||
@@ -2160,12 +2161,15 @@ static void __ocfs2_stuff_meta_lvb(struct inode *inode) | |||
2160 | lvb->lvb_igid = cpu_to_be32(i_gid_read(inode)); | 2161 | lvb->lvb_igid = cpu_to_be32(i_gid_read(inode)); |
2161 | lvb->lvb_imode = cpu_to_be16(inode->i_mode); | 2162 | lvb->lvb_imode = cpu_to_be16(inode->i_mode); |
2162 | lvb->lvb_inlink = cpu_to_be16(inode->i_nlink); | 2163 | lvb->lvb_inlink = cpu_to_be16(inode->i_nlink); |
2164 | ts = timespec64_to_timespec(inode->i_atime); | ||
2163 | lvb->lvb_iatime_packed = | 2165 | lvb->lvb_iatime_packed = |
2164 | cpu_to_be64(ocfs2_pack_timespec(&inode->i_atime)); | 2166 | cpu_to_be64(ocfs2_pack_timespec(&ts)); |
2167 | ts = timespec64_to_timespec(inode->i_ctime); | ||
2165 | lvb->lvb_ictime_packed = | 2168 | lvb->lvb_ictime_packed = |
2166 | cpu_to_be64(ocfs2_pack_timespec(&inode->i_ctime)); | 2169 | cpu_to_be64(ocfs2_pack_timespec(&ts)); |
2170 | ts = timespec64_to_timespec(inode->i_mtime); | ||
2167 | lvb->lvb_imtime_packed = | 2171 | lvb->lvb_imtime_packed = |
2168 | cpu_to_be64(ocfs2_pack_timespec(&inode->i_mtime)); | 2172 | cpu_to_be64(ocfs2_pack_timespec(&ts)); |
2169 | lvb->lvb_iattr = cpu_to_be32(oi->ip_attr); | 2173 | lvb->lvb_iattr = cpu_to_be32(oi->ip_attr); |
2170 | lvb->lvb_idynfeatures = cpu_to_be16(oi->ip_dyn_features); | 2174 | lvb->lvb_idynfeatures = cpu_to_be16(oi->ip_dyn_features); |
2171 | lvb->lvb_igeneration = cpu_to_be32(inode->i_generation); | 2175 | lvb->lvb_igeneration = cpu_to_be32(inode->i_generation); |
@@ -2183,6 +2187,7 @@ static void ocfs2_unpack_timespec(struct timespec *spec, | |||
2183 | 2187 | ||
2184 | static void ocfs2_refresh_inode_from_lvb(struct inode *inode) | 2188 | static void ocfs2_refresh_inode_from_lvb(struct inode *inode) |
2185 | { | 2189 | { |
2190 | struct timespec ts; | ||
2186 | struct ocfs2_inode_info *oi = OCFS2_I(inode); | 2191 | struct ocfs2_inode_info *oi = OCFS2_I(inode); |
2187 | struct ocfs2_lock_res *lockres = &oi->ip_inode_lockres; | 2192 | struct ocfs2_lock_res *lockres = &oi->ip_inode_lockres; |
2188 | struct ocfs2_meta_lvb *lvb; | 2193 | struct ocfs2_meta_lvb *lvb; |
@@ -2210,12 +2215,15 @@ static void ocfs2_refresh_inode_from_lvb(struct inode *inode) | |||
2210 | i_gid_write(inode, be32_to_cpu(lvb->lvb_igid)); | 2215 | i_gid_write(inode, be32_to_cpu(lvb->lvb_igid)); |
2211 | inode->i_mode = be16_to_cpu(lvb->lvb_imode); | 2216 | inode->i_mode = be16_to_cpu(lvb->lvb_imode); |
2212 | set_nlink(inode, be16_to_cpu(lvb->lvb_inlink)); | 2217 | set_nlink(inode, be16_to_cpu(lvb->lvb_inlink)); |
2213 | ocfs2_unpack_timespec(&inode->i_atime, | 2218 | ocfs2_unpack_timespec(&ts, |
2214 | be64_to_cpu(lvb->lvb_iatime_packed)); | 2219 | be64_to_cpu(lvb->lvb_iatime_packed)); |
2215 | ocfs2_unpack_timespec(&inode->i_mtime, | 2220 | inode->i_atime = timespec_to_timespec64(ts); |
2221 | ocfs2_unpack_timespec(&ts, | ||
2216 | be64_to_cpu(lvb->lvb_imtime_packed)); | 2222 | be64_to_cpu(lvb->lvb_imtime_packed)); |
2217 | ocfs2_unpack_timespec(&inode->i_ctime, | 2223 | inode->i_mtime = timespec_to_timespec64(ts); |
2224 | ocfs2_unpack_timespec(&ts, | ||
2218 | be64_to_cpu(lvb->lvb_ictime_packed)); | 2225 | be64_to_cpu(lvb->lvb_ictime_packed)); |
2226 | inode->i_ctime = timespec_to_timespec64(ts); | ||
2219 | spin_unlock(&oi->ip_lock); | 2227 | spin_unlock(&oi->ip_lock); |
2220 | } | 2228 | } |
2221 | 2229 | ||