From: Dave Chinner <dchinner@xxxxxxxxxx> Now that we have incore unlinked lists and try-lock capability for unlinked list removal operations, we can now switch the v3 inodes to use transactions that directly modify and log the in-core inode unlinked list pointers. To do this, we need to lock the inode that points to the current inode and update it's unlinked list pointer and log it. With that modification, the current inode has been removed from the unlinked list. If the current inode is at the head of the unlinked list, then instead of an inode modification we need to modify the AGI unlinked bucket pointer. This can all be contained within the .iunlink_remove() method for v3 inodes, but we have to be careful about locking the previous inode - it needs to use trylock semantics so we don't introduce deadlock problems, and that means we need to ensure that the xfs_ifree path handles EAGAIN errors correctly and passes it back to the caller so that it can be retried again at a later time. Signed-off-by: Dave Chinner <dchinner@xxxxxxxxxx> --- fs/xfs/xfs_inode.h | 1 + 1 file changed, 1 insertion(+) diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h index 2bb7060..4c10fa9 100644 --- a/fs/xfs/xfs_inode.h +++ b/fs/xfs/xfs_inode.h @@ -253,6 +253,7 @@ typedef struct xfs_inode { struct xfs_dquot *i_udquot; /* user dquot */ struct xfs_dquot *i_gdquot; /* group dquot */ struct xfs_dquot *i_pdquot; /* project dquot */ + struct list_head i_unlink_list; /* Inode location stuff */ xfs_ino_t i_ino; /* inode number (agno/agino)*/ -- 1.8.3.2 _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs