|
@@ -6491,6 +6491,16 @@ static int ocfs2_reflink_xattr_inline(struct ocfs2_xattr_reflink *args)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
new_oi = OCFS2_I(args->new_inode);
|
|
new_oi = OCFS2_I(args->new_inode);
|
|
|
|
|
+ /*
|
|
|
|
|
+ * Adjust extent record count to reserve space for extended attribute.
|
|
|
|
|
+ * Inline data count had been adjusted in ocfs2_duplicate_inline_data().
|
|
|
|
|
+ */
|
|
|
|
|
+ if (!(new_oi->ip_dyn_features & OCFS2_INLINE_DATA_FL) &&
|
|
|
|
|
+ !(ocfs2_inode_is_fast_symlink(args->new_inode))) {
|
|
|
|
|
+ struct ocfs2_extent_list *el = &new_di->id2.i_list;
|
|
|
|
|
+ le16_add_cpu(&el->l_count, -(inline_size /
|
|
|
|
|
+ sizeof(struct ocfs2_extent_rec)));
|
|
|
|
|
+ }
|
|
|
spin_lock(&new_oi->ip_lock);
|
|
spin_lock(&new_oi->ip_lock);
|
|
|
new_oi->ip_dyn_features |= OCFS2_HAS_XATTR_FL | OCFS2_INLINE_XATTR_FL;
|
|
new_oi->ip_dyn_features |= OCFS2_HAS_XATTR_FL | OCFS2_INLINE_XATTR_FL;
|
|
|
new_di->i_dyn_features = cpu_to_le16(new_oi->ip_dyn_features);
|
|
new_di->i_dyn_features = cpu_to_le16(new_oi->ip_dyn_features);
|