|
@@ -70,9 +70,8 @@ xfs_synchronize_times(
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
- * If the linux inode is valid, mark it dirty.
|
|
|
- * Used when committing a dirty inode into a transaction so that
|
|
|
- * the inode will get written back by the linux code
|
|
|
+ * If the linux inode is valid, mark it dirty, else mark the dirty state
|
|
|
+ * in the XFS inode to make sure we pick it up when reclaiming the inode.
|
|
|
*/
|
|
|
void
|
|
|
xfs_mark_inode_dirty_sync(
|
|
@@ -82,6 +81,10 @@ xfs_mark_inode_dirty_sync(
|
|
|
|
|
|
if (!(inode->i_state & (I_WILL_FREE|I_FREEING)))
|
|
|
mark_inode_dirty_sync(inode);
|
|
|
+ else {
|
|
|
+ barrier();
|
|
|
+ ip->i_update_core = 1;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void
|
|
@@ -92,6 +95,11 @@ xfs_mark_inode_dirty(
|
|
|
|
|
|
if (!(inode->i_state & (I_WILL_FREE|I_FREEING)))
|
|
|
mark_inode_dirty(inode);
|
|
|
+ else {
|
|
|
+ barrier();
|
|
|
+ ip->i_update_core = 1;
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/*
|