xfs: clean up xfs_inactive() error handling, kill VN_INACTIVE_[NO]CACHE
The xfs_inactive() return value is meaningless. Turn xfs_inactive() into a void function and clean up the error handling appropriately. Kill the VN_INACTIVE_[NO]CACHE directives as they are not relevant to Linux. Signed-off-by: Brian Foster <bfoster@redhat.com> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Ben Myers <bpm@sgi.com>
This commit is contained in:
@@ -1790,7 +1790,7 @@ xfs_inactive_ifree(
|
|||||||
* now be truncated. Also, we clear all of the read-ahead state
|
* now be truncated. Also, we clear all of the read-ahead state
|
||||||
* kept for the inode here since the file is now closed.
|
* kept for the inode here since the file is now closed.
|
||||||
*/
|
*/
|
||||||
int
|
void
|
||||||
xfs_inactive(
|
xfs_inactive(
|
||||||
xfs_inode_t *ip)
|
xfs_inode_t *ip)
|
||||||
{
|
{
|
||||||
@@ -1805,16 +1805,14 @@ xfs_inactive(
|
|||||||
if (ip->i_d.di_mode == 0) {
|
if (ip->i_d.di_mode == 0) {
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
mp = ip->i_mount;
|
mp = ip->i_mount;
|
||||||
|
|
||||||
error = 0;
|
|
||||||
|
|
||||||
/* If this is a read-only mount, don't do this (would generate I/O) */
|
/* If this is a read-only mount, don't do this (would generate I/O) */
|
||||||
if (mp->m_flags & XFS_MOUNT_RDONLY)
|
if (mp->m_flags & XFS_MOUNT_RDONLY)
|
||||||
goto out;
|
return;
|
||||||
|
|
||||||
if (ip->i_d.di_nlink != 0) {
|
if (ip->i_d.di_nlink != 0) {
|
||||||
/*
|
/*
|
||||||
@@ -1822,12 +1820,10 @@ xfs_inactive(
|
|||||||
* cache. Post-eof blocks must be freed, lest we end up with
|
* cache. Post-eof blocks must be freed, lest we end up with
|
||||||
* broken free space accounting.
|
* broken free space accounting.
|
||||||
*/
|
*/
|
||||||
if (xfs_can_free_eofblocks(ip, true)) {
|
if (xfs_can_free_eofblocks(ip, true))
|
||||||
error = xfs_free_eofblocks(mp, ip, false);
|
xfs_free_eofblocks(mp, ip, false);
|
||||||
if (error)
|
|
||||||
return VN_INACTIVE_CACHE;
|
return;
|
||||||
}
|
|
||||||
goto out;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (S_ISREG(ip->i_d.di_mode) &&
|
if (S_ISREG(ip->i_d.di_mode) &&
|
||||||
@@ -1837,14 +1833,14 @@ xfs_inactive(
|
|||||||
|
|
||||||
error = xfs_qm_dqattach(ip, 0);
|
error = xfs_qm_dqattach(ip, 0);
|
||||||
if (error)
|
if (error)
|
||||||
return VN_INACTIVE_CACHE;
|
return;
|
||||||
|
|
||||||
if (S_ISLNK(ip->i_d.di_mode))
|
if (S_ISLNK(ip->i_d.di_mode))
|
||||||
error = xfs_inactive_symlink(ip);
|
error = xfs_inactive_symlink(ip);
|
||||||
else if (truncate)
|
else if (truncate)
|
||||||
error = xfs_inactive_truncate(ip);
|
error = xfs_inactive_truncate(ip);
|
||||||
if (error)
|
if (error)
|
||||||
goto out;
|
return;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If there are attributes associated with the file then blow them away
|
* If there are attributes associated with the file then blow them away
|
||||||
@@ -1857,7 +1853,7 @@ xfs_inactive(
|
|||||||
|
|
||||||
error = xfs_attr_inactive(ip);
|
error = xfs_attr_inactive(ip);
|
||||||
if (error)
|
if (error)
|
||||||
goto out;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ip->i_afp)
|
if (ip->i_afp)
|
||||||
@@ -1870,14 +1866,12 @@ xfs_inactive(
|
|||||||
*/
|
*/
|
||||||
error = xfs_inactive_ifree(ip);
|
error = xfs_inactive_ifree(ip);
|
||||||
if (error)
|
if (error)
|
||||||
goto out;
|
return;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Release the dquots held by inode, if any.
|
* Release the dquots held by inode, if any.
|
||||||
*/
|
*/
|
||||||
xfs_qm_dqdetach(ip);
|
xfs_qm_dqdetach(ip);
|
||||||
out:
|
|
||||||
return VN_INACTIVE_CACHE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -316,7 +316,7 @@ static inline int xfs_isiflocked(struct xfs_inode *ip)
|
|||||||
|
|
||||||
|
|
||||||
int xfs_release(struct xfs_inode *ip);
|
int xfs_release(struct xfs_inode *ip);
|
||||||
int xfs_inactive(struct xfs_inode *ip);
|
void xfs_inactive(struct xfs_inode *ip);
|
||||||
int xfs_lookup(struct xfs_inode *dp, struct xfs_name *name,
|
int xfs_lookup(struct xfs_inode *dp, struct xfs_name *name,
|
||||||
struct xfs_inode **ipp, struct xfs_name *ci_name);
|
struct xfs_inode **ipp, struct xfs_name *ci_name);
|
||||||
int xfs_create(struct xfs_inode *dp, struct xfs_name *name,
|
int xfs_create(struct xfs_inode *dp, struct xfs_name *name,
|
||||||
|
@@ -24,14 +24,6 @@ struct file;
|
|||||||
struct xfs_inode;
|
struct xfs_inode;
|
||||||
struct attrlist_cursor_kern;
|
struct attrlist_cursor_kern;
|
||||||
|
|
||||||
/*
|
|
||||||
* Return values for xfs_inactive. A return value of
|
|
||||||
* VN_INACTIVE_NOCACHE implies that the file system behavior
|
|
||||||
* has disassociated its state and bhv_desc_t from the vnode.
|
|
||||||
*/
|
|
||||||
#define VN_INACTIVE_CACHE 0
|
|
||||||
#define VN_INACTIVE_NOCACHE 1
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Flags for read/write calls - same values as IRIX
|
* Flags for read/write calls - same values as IRIX
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user