|
@@ -2835,6 +2835,27 @@ corrupt_out:
|
|
|
return XFS_ERROR(EFSCORRUPTED);
|
|
|
}
|
|
|
|
|
|
+void
|
|
|
+xfs_promote_inode(
|
|
|
+ struct xfs_inode *ip)
|
|
|
+{
|
|
|
+ struct xfs_buf *bp;
|
|
|
+
|
|
|
+ ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL|XFS_ILOCK_SHARED));
|
|
|
+
|
|
|
+ bp = xfs_incore(ip->i_mount->m_ddev_targp, ip->i_imap.im_blkno,
|
|
|
+ ip->i_imap.im_len, XBF_TRYLOCK);
|
|
|
+ if (!bp)
|
|
|
+ return;
|
|
|
+
|
|
|
+ if (XFS_BUF_ISDELAYWRITE(bp)) {
|
|
|
+ xfs_buf_delwri_promote(bp);
|
|
|
+ wake_up_process(ip->i_mount->m_ddev_targp->bt_task);
|
|
|
+ }
|
|
|
+
|
|
|
+ xfs_buf_relse(bp);
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* Return a pointer to the extent record at file index idx.
|
|
|
*/
|