[XFS] remove the mount inode list
Now we've removed all users of the mount inode list, we can kill it. This reduces the size of the xfs_inode by 2 pointers. SGI-PV: 988139 SGI-Modid: xfs-linux-melb:xfs-kern:32293a Signed-off-by: David Chinner <david@fromorbit.com> Signed-off-by: Lachlan McIlroy <lachlan@sgi.com> Signed-off-by: Christoph Hellwig <hch@infradead.org>
This commit is contained in:
parent
60197e8df3
commit
6c7699c047
|
@ -76,7 +76,6 @@ xfs_iget_core(
|
|||
{
|
||||
struct inode *old_inode;
|
||||
xfs_inode_t *ip;
|
||||
xfs_inode_t *iq;
|
||||
int error;
|
||||
unsigned long first_index, mask;
|
||||
xfs_perag_t *pag;
|
||||
|
@ -255,24 +254,6 @@ finish_inode:
|
|||
|
||||
write_unlock(&pag->pag_ici_lock);
|
||||
radix_tree_preload_end();
|
||||
|
||||
/*
|
||||
* Link ip to its mount and thread it on the mount's inode list.
|
||||
*/
|
||||
XFS_MOUNT_ILOCK(mp);
|
||||
if ((iq = mp->m_inodes)) {
|
||||
ASSERT(iq->i_mprev->i_mnext == iq);
|
||||
ip->i_mprev = iq->i_mprev;
|
||||
iq->i_mprev->i_mnext = ip;
|
||||
iq->i_mprev = ip;
|
||||
ip->i_mnext = iq;
|
||||
} else {
|
||||
ip->i_mnext = ip;
|
||||
ip->i_mprev = ip;
|
||||
}
|
||||
mp->m_inodes = ip;
|
||||
|
||||
XFS_MOUNT_IUNLOCK(mp);
|
||||
xfs_put_perag(mp, pag);
|
||||
|
||||
return_ip:
|
||||
|
@ -493,36 +474,15 @@ xfs_iextract(
|
|||
{
|
||||
xfs_mount_t *mp = ip->i_mount;
|
||||
xfs_perag_t *pag = xfs_get_perag(mp, ip->i_ino);
|
||||
xfs_inode_t *iq;
|
||||
|
||||
write_lock(&pag->pag_ici_lock);
|
||||
radix_tree_delete(&pag->pag_ici_root, XFS_INO_TO_AGINO(mp, ip->i_ino));
|
||||
write_unlock(&pag->pag_ici_lock);
|
||||
xfs_put_perag(mp, pag);
|
||||
|
||||
/*
|
||||
* Remove from mount's inode list.
|
||||
*/
|
||||
XFS_MOUNT_ILOCK(mp);
|
||||
ASSERT((ip->i_mnext != NULL) && (ip->i_mprev != NULL));
|
||||
iq = ip->i_mnext;
|
||||
iq->i_mprev = ip->i_mprev;
|
||||
ip->i_mprev->i_mnext = iq;
|
||||
|
||||
/*
|
||||
* Fix up the head pointer if it points to the inode being deleted.
|
||||
*/
|
||||
if (mp->m_inodes == ip) {
|
||||
if (ip == iq) {
|
||||
mp->m_inodes = NULL;
|
||||
} else {
|
||||
mp->m_inodes = iq;
|
||||
}
|
||||
}
|
||||
|
||||
/* Deal with the deleted inodes list */
|
||||
XFS_MOUNT_ILOCK(mp);
|
||||
list_del_init(&ip->i_reclaim);
|
||||
|
||||
mp->m_ireclaims++;
|
||||
XFS_MOUNT_IUNLOCK(mp);
|
||||
}
|
||||
|
|
|
@ -233,16 +233,8 @@ typedef struct dm_attrs_s {
|
|||
__uint16_t da_pad; /* DMIG extra padding */
|
||||
} dm_attrs_t;
|
||||
|
||||
typedef struct {
|
||||
struct xfs_inode *ip_mnext; /* next inode in mount list */
|
||||
struct xfs_inode *ip_mprev; /* ptr to prev inode */
|
||||
struct xfs_mount *ip_mount; /* fs mount struct ptr */
|
||||
} xfs_iptr_t;
|
||||
|
||||
typedef struct xfs_inode {
|
||||
/* Inode linking and identification information. */
|
||||
struct xfs_inode *i_mnext; /* next inode in mount list */
|
||||
struct xfs_inode *i_mprev; /* ptr to prev inode */
|
||||
struct xfs_mount *i_mount; /* fs mount struct ptr */
|
||||
struct list_head i_reclaim; /* reclaim list */
|
||||
struct inode *i_vnode; /* vnode backpointer */
|
||||
|
|
|
@ -1282,11 +1282,6 @@ xfs_unmountfs(
|
|||
xfs_unmountfs_wait(mp); /* wait for async bufs */
|
||||
xfs_log_unmount(mp); /* Done! No more fs ops. */
|
||||
|
||||
/*
|
||||
* All inodes from this mount point should be freed.
|
||||
*/
|
||||
ASSERT(mp->m_inodes == NULL);
|
||||
|
||||
if ((mp->m_flags & XFS_MOUNT_NOUUID) == 0)
|
||||
uuid_table_remove(&mp->m_sb.sb_uuid);
|
||||
|
||||
|
|
|
@ -248,7 +248,6 @@ typedef struct xfs_mount {
|
|||
xfs_agnumber_t m_agirotor; /* last ag dir inode alloced */
|
||||
spinlock_t m_agirotor_lock;/* .. and lock protecting it */
|
||||
xfs_agnumber_t m_maxagi; /* highest inode alloc group */
|
||||
struct xfs_inode *m_inodes; /* active inode list */
|
||||
struct list_head m_del_inodes; /* inodes to reclaim */
|
||||
mutex_t m_ilock; /* inode list mutex */
|
||||
uint m_ireclaims; /* count of calls to reclaim*/
|
||||
|
|
Loading…
Reference in New Issue