|
@@ -1160,7 +1160,6 @@ int
|
|
xfs_release(
|
|
xfs_release(
|
|
xfs_inode_t *ip)
|
|
xfs_inode_t *ip)
|
|
{
|
|
{
|
|
- bhv_vnode_t *vp = VFS_I(ip);
|
|
|
|
xfs_mount_t *mp = ip->i_mount;
|
|
xfs_mount_t *mp = ip->i_mount;
|
|
int error;
|
|
int error;
|
|
|
|
|
|
@@ -1195,13 +1194,13 @@ xfs_release(
|
|
* be exposed to that problem.
|
|
* be exposed to that problem.
|
|
*/
|
|
*/
|
|
truncated = xfs_iflags_test_and_clear(ip, XFS_ITRUNCATED);
|
|
truncated = xfs_iflags_test_and_clear(ip, XFS_ITRUNCATED);
|
|
- if (truncated && VN_DIRTY(vp) && ip->i_delayed_blks > 0)
|
|
|
|
|
|
+ if (truncated && VN_DIRTY(VFS_I(ip)) && ip->i_delayed_blks > 0)
|
|
xfs_flush_pages(ip, 0, -1, XFS_B_ASYNC, FI_NONE);
|
|
xfs_flush_pages(ip, 0, -1, XFS_B_ASYNC, FI_NONE);
|
|
}
|
|
}
|
|
|
|
|
|
if (ip->i_d.di_nlink != 0) {
|
|
if (ip->i_d.di_nlink != 0) {
|
|
if ((((ip->i_d.di_mode & S_IFMT) == S_IFREG) &&
|
|
if ((((ip->i_d.di_mode & S_IFMT) == S_IFREG) &&
|
|
- ((ip->i_size > 0) || (VN_CACHED(vp) > 0 ||
|
|
|
|
|
|
+ ((ip->i_size > 0) || (VN_CACHED(VFS_I(ip)) > 0 ||
|
|
ip->i_delayed_blks > 0)) &&
|
|
ip->i_delayed_blks > 0)) &&
|
|
(ip->i_df.if_flags & XFS_IFEXTENTS)) &&
|
|
(ip->i_df.if_flags & XFS_IFEXTENTS)) &&
|
|
(!(ip->i_d.di_flags &
|
|
(!(ip->i_d.di_flags &
|
|
@@ -1227,7 +1226,6 @@ int
|
|
xfs_inactive(
|
|
xfs_inactive(
|
|
xfs_inode_t *ip)
|
|
xfs_inode_t *ip)
|
|
{
|
|
{
|
|
- bhv_vnode_t *vp = VFS_I(ip);
|
|
|
|
xfs_bmap_free_t free_list;
|
|
xfs_bmap_free_t free_list;
|
|
xfs_fsblock_t first_block;
|
|
xfs_fsblock_t first_block;
|
|
int committed;
|
|
int committed;
|
|
@@ -1242,7 +1240,7 @@ xfs_inactive(
|
|
* If the inode is already free, then there can be nothing
|
|
* If the inode is already free, then there can be nothing
|
|
* to clean up here.
|
|
* to clean up here.
|
|
*/
|
|
*/
|
|
- if (ip->i_d.di_mode == 0 || VN_BAD(vp)) {
|
|
|
|
|
|
+ if (ip->i_d.di_mode == 0 || VN_BAD(VFS_I(ip))) {
|
|
ASSERT(ip->i_df.if_real_bytes == 0);
|
|
ASSERT(ip->i_df.if_real_bytes == 0);
|
|
ASSERT(ip->i_df.if_broot_bytes == 0);
|
|
ASSERT(ip->i_df.if_broot_bytes == 0);
|
|
return VN_INACTIVE_CACHE;
|
|
return VN_INACTIVE_CACHE;
|
|
@@ -1272,7 +1270,7 @@ xfs_inactive(
|
|
|
|
|
|
if (ip->i_d.di_nlink != 0) {
|
|
if (ip->i_d.di_nlink != 0) {
|
|
if ((((ip->i_d.di_mode & S_IFMT) == S_IFREG) &&
|
|
if ((((ip->i_d.di_mode & S_IFMT) == S_IFREG) &&
|
|
- ((ip->i_size > 0) || (VN_CACHED(vp) > 0 ||
|
|
|
|
|
|
+ ((ip->i_size > 0) || (VN_CACHED(VFS_I(ip)) > 0 ||
|
|
ip->i_delayed_blks > 0)) &&
|
|
ip->i_delayed_blks > 0)) &&
|
|
(ip->i_df.if_flags & XFS_IFEXTENTS) &&
|
|
(ip->i_df.if_flags & XFS_IFEXTENTS) &&
|
|
(!(ip->i_d.di_flags &
|
|
(!(ip->i_d.di_flags &
|
|
@@ -2793,14 +2791,13 @@ int
|
|
xfs_reclaim(
|
|
xfs_reclaim(
|
|
xfs_inode_t *ip)
|
|
xfs_inode_t *ip)
|
|
{
|
|
{
|
|
- bhv_vnode_t *vp = VFS_I(ip);
|
|
|
|
|
|
|
|
xfs_itrace_entry(ip);
|
|
xfs_itrace_entry(ip);
|
|
|
|
|
|
- ASSERT(!VN_MAPPED(vp));
|
|
|
|
|
|
+ ASSERT(!VN_MAPPED(VFS_I(ip)));
|
|
|
|
|
|
/* bad inode, get out here ASAP */
|
|
/* bad inode, get out here ASAP */
|
|
- if (VN_BAD(vp)) {
|
|
|
|
|
|
+ if (VN_BAD(VFS_I(ip))) {
|
|
xfs_ireclaim(ip);
|
|
xfs_ireclaim(ip);
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
@@ -2837,7 +2834,7 @@ xfs_reclaim(
|
|
XFS_MOUNT_ILOCK(mp);
|
|
XFS_MOUNT_ILOCK(mp);
|
|
spin_lock(&ip->i_flags_lock);
|
|
spin_lock(&ip->i_flags_lock);
|
|
__xfs_iflags_set(ip, XFS_IRECLAIMABLE);
|
|
__xfs_iflags_set(ip, XFS_IRECLAIMABLE);
|
|
- vp->i_private = NULL;
|
|
|
|
|
|
+ VFS_I(ip)->i_private = NULL;
|
|
ip->i_vnode = NULL;
|
|
ip->i_vnode = NULL;
|
|
spin_unlock(&ip->i_flags_lock);
|
|
spin_unlock(&ip->i_flags_lock);
|
|
list_add_tail(&ip->i_reclaim, &mp->m_del_inodes);
|
|
list_add_tail(&ip->i_reclaim, &mp->m_del_inodes);
|
|
@@ -3241,7 +3238,6 @@ xfs_free_file_space(
|
|
xfs_off_t len,
|
|
xfs_off_t len,
|
|
int attr_flags)
|
|
int attr_flags)
|
|
{
|
|
{
|
|
- bhv_vnode_t *vp;
|
|
|
|
int committed;
|
|
int committed;
|
|
int done;
|
|
int done;
|
|
xfs_off_t end_dmi_offset;
|
|
xfs_off_t end_dmi_offset;
|
|
@@ -3261,7 +3257,6 @@ xfs_free_file_space(
|
|
xfs_trans_t *tp;
|
|
xfs_trans_t *tp;
|
|
int need_iolock = 1;
|
|
int need_iolock = 1;
|
|
|
|
|
|
- vp = VFS_I(ip);
|
|
|
|
mp = ip->i_mount;
|
|
mp = ip->i_mount;
|
|
|
|
|
|
xfs_itrace_entry(ip);
|
|
xfs_itrace_entry(ip);
|
|
@@ -3298,7 +3293,7 @@ xfs_free_file_space(
|
|
rounding = max_t(uint, 1 << mp->m_sb.sb_blocklog, PAGE_CACHE_SIZE);
|
|
rounding = max_t(uint, 1 << mp->m_sb.sb_blocklog, PAGE_CACHE_SIZE);
|
|
ioffset = offset & ~(rounding - 1);
|
|
ioffset = offset & ~(rounding - 1);
|
|
|
|
|
|
- if (VN_CACHED(vp) != 0) {
|
|
|
|
|
|
+ if (VN_CACHED(VFS_I(ip)) != 0) {
|
|
xfs_inval_cached_trace(ip, ioffset, -1, ioffset, -1);
|
|
xfs_inval_cached_trace(ip, ioffset, -1, ioffset, -1);
|
|
error = xfs_flushinval_pages(ip, ioffset, -1, FI_REMAPF_LOCKED);
|
|
error = xfs_flushinval_pages(ip, ioffset, -1, FI_REMAPF_LOCKED);
|
|
if (error)
|
|
if (error)
|