|
@@ -49,6 +49,7 @@
|
|
|
#include "xfs_rmap_item.h"
|
|
|
#include "xfs_refcount_item.h"
|
|
|
#include "xfs_bmap_item.h"
|
|
|
+#include "xfs_reflink.h"
|
|
|
|
|
|
#include <linux/namei.h>
|
|
|
#include <linux/init.h>
|
|
@@ -938,6 +939,7 @@ xfs_fs_destroy_inode(
|
|
|
struct inode *inode)
|
|
|
{
|
|
|
struct xfs_inode *ip = XFS_I(inode);
|
|
|
+ int error;
|
|
|
|
|
|
trace_xfs_destroy_inode(ip);
|
|
|
|
|
@@ -945,6 +947,12 @@ xfs_fs_destroy_inode(
|
|
|
XFS_STATS_INC(ip->i_mount, vn_rele);
|
|
|
XFS_STATS_INC(ip->i_mount, vn_remove);
|
|
|
|
|
|
+ error = xfs_reflink_cancel_cow_range(ip, 0, NULLFILEOFF);
|
|
|
+ if (error && !XFS_FORCED_SHUTDOWN(ip->i_mount))
|
|
|
+ xfs_warn(ip->i_mount, "Error %d while evicting CoW blocks "
|
|
|
+ "for inode %llu.",
|
|
|
+ error, ip->i_ino);
|
|
|
+
|
|
|
xfs_inactive(ip);
|
|
|
|
|
|
ASSERT(XFS_FORCED_SHUTDOWN(ip->i_mount) || ip->i_delayed_blks == 0);
|