xfs
[Top] [All Lists]

TAKE Implement deletion of inode clusters in XFS.

To: linux-xfs@xxxxxxxxxxx
Subject: TAKE Implement deletion of inode clusters in XFS.
From: Steve Lord <lord@xxxxxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 6 Oct 2003 13:13:12 -0500
Sender: linux-xfs-bounce@xxxxxxxxxxx
XFS dynamically allocates space for inodes as they are created,
this is different from many other filesystems where inode space
is statically allocated at mkfs time. While inode space is
dynamically allocated, it is never freed - up until now that is.

This non-freeing of space tends to lead to fragmentation on
filesystems where lots of files come and go. It can also lead
to inodes and their parent directories being scattered around
the disk more.

With this change, the default behavior is changed to free a
cluster of inodes once the last entry in the cluster is freed.
The old behavior is still available with the -o ikeep mount
option.


Date:  Mon Oct  6 11:11:55 PDT 2003
Workarea:  jen.americas.sgi.com:/src/lord/xfs-idelete

The following file(s) were checked into:
  bonnie.engr.sgi.com:/isms/slinx/2.4.x-xfs


Modid:  xfs-linux:slinx:159536a
linux/fs/xfs/xfsidbg.c - 1.239
        - add tracing flags for stale inode clusters.

linux/fs/xfs/xfs_ialloc.h - 1.44
        - changed prototype for xfs_difree

linux/fs/xfs/xfs_ialloc.c - 1.175
        - When freeing an inode, check to see if this is the last in use inode
          in the cluster. If it is, then remove the inode cluster from the
          inode btree and fix up the super block and agi inode counters.

linux/fs/xfs/xfs_buf_item.h - 1.40
        - Add XFS_BLI_STALE_INODE definition

linux/fs/xfs/xfs_buf_item.c - 1.143
        - when unpinning a stale buffer after a log write, add code to
          deal with it being an inode cluster, we execute the callbacks
          on the buffer directly, rather than just removing it from
          the AIL.

linux/fs/xfs/xfs_vnodeops.c - 1.613
        - extend the inactive path logic to deal with freeing the space 
          which could be removed with an inode cluster.

linux/fs/xfs/xfs_ialloc_btree.h - 1.25
        - turn on prototype for xfs_inobt_delete

linux/fs/xfs/xfs_ialloc_btree.c - 1.76
        - Turn on the inode btree free path and fix up several bugs in
          the implementation.

linux/fs/xfs/xfs_inode_item.c - 1.116
        - add logic for dealing with stale inode log items

linux/fs/xfs/xfs_inode_item.h - 1.45
        - prototype for xfs_istale_done

linux/fs/xfs/xfs_log_recover.c - 1.279
        - During log recovery, take into acount the fact that an inode write 
          in the log may be cancelled by a subsequent stale of the inode buffer.
          We need to prevent the inode log record from being replayed to disk
          in this case.

linux/fs/xfs/xfs_vfsops.c - 1.434
        - mount option parsing for freeing inode clusters

linux/fs/xfs/xfs_iget.c - 1.193
        - clear inode stale flag when reusing an inode

linux/fs/xfs/xfs_clnt.h - 1.41
        - add mount option to control freeing of inode clusters

linux/fs/xfs/xfs_mount.h - 1.183
        - define for mount option control of inode cluster freeing

linux/fs/xfs/xfs_inode.c - 1.389
        - Add xfs_ifree_cluster to free up an inode cluster. This has to
          synchronize with sync activity and make sure we have cleaned out
          the sync path on all the inodes in the cluster before we free
          the space.

linux/fs/xfs/xfs_inode.h - 1.186
        - Add XFS_ISTALE and change some prototypes for inode cluster freeing

linux/fs/xfs/xfs_trans.c - 1.153
        - remove assert that the inode count always increments

linux/fs/xfs/xfs_trans.h - 1.123
        - Change log reservation for deallocating an inode

linux/fs/xfs/xfs_trans_buf.c - 1.115
        - Add special handler for staling an inode buffer




Modid:  2.4.x-xfs:slinx:159536b
linux/Documentation/filesystems/xfs.txt - 1.15
        - Describe new ikeep mount option.



<Prev in Thread] Current Thread [Next in Thread>
  • TAKE Implement deletion of inode clusters in XFS., Steve Lord <=