[Top] [All Lists]

TAKE 969192: Default mount option "noikeep" makes the inode generation n

To: sgi.bugs.xfs@xxxxxxxxxxxx
Subject: TAKE 969192: Default mount option "noikeep" makes the inode generation number non-persistent
From: Vlad Apostolov <vapo@xxxxxxx>
Date: Fri, 24 Aug 2007 14:01:30 +1000
Cc: linux-xfs@xxxxxxxxxxx
Sender: xfs-bounce@xxxxxxxxxxx
User-agent: Thunderbird (X11/20070728)
XFS inodes are dynamically allocated on demand, rather than being allocated
at mkfs time. Chunks of 64 inodes are allocated at once, but they are
never freed. Over time, this can lead to filesystem fragmentation, clusters
of inodes and the btrees which point at them can be scattered around the

By freeing clusters as they are emptied, we reduce fragmentation of the
free space after removing files. This in turn allows us to make better
placement decisions when repopulating a filesystem. The XFSMNT_IDELETE
mount option enables freeing clusters when they get empty.

Unfortunately a side effect of freeing inode clusters is that the inode
generation numbers of such inodes would be reset to zero when the cluster
is reclaimed. This is a problem in particular for a DMAPI enabled filesystem
as the the DMAPI handles need to be unique and persistent in time. An unique
DMAPI handle is built with the help of the inode generation number. When the
last one is prematurely reset by an inode cluster reclaim, there is
a high probability of different generation inodes to end up having identical
DMAPI handles.

To avoid the problem with identical DMAPI handles, the XFSMNT_IDELETE mount
option should be set as default, only if the filesystem is not mounted with

Date:  Fri Aug 24 13:54:57 AEST 2007
Workarea:  soarer.melbourne.sgi.com:/home/vapo/isms/linux-xfs
Inspected by:  dgc, markgw
Author:  vapo

The following file(s) were checked into:

Modid:  xfs-linux-melb:xfs-kern:29486a
fs/xfs/xfs_vfsops.c - 1.527 - changed
- pv 969192, rv dgc, markgw - Imply "ikeep" default mount option for DMAPI enabled filestems.

<Prev in Thread] Current Thread [Next in Thread>