GFS2: Add hints to directory leaf blocks
authorSteven Whitehouse <swhiteho@redhat.com>
Wed, 8 Jan 2014 12:14:57 +0000 (12:14 +0000)
committerSteven Whitehouse <swhiteho@redhat.com>
Wed, 8 Jan 2014 12:14:57 +0000 (12:14 +0000)
commit01bcb0dedbcd77a5ebb4f2dfd7d3196e3ad5cea5
treeef18400f34911ac88061334060ffb0c6f93f0fec
parent22b5a6c0c0cd5eb524d31c949d113c6683e37ec9
GFS2: Add hints to directory leaf blocks

This patch adds four new fields to directory leaf blocks.
The intent is not to use them in the kernel itself, although
perhaps we may be able to use them as hints at some later date,
but instead to provide more information for debug/fsck use.

One new field adds a pointer to the inode to which the leaf
belongs. This can be useful if the pointer to the leaf block
has become corrupt, as it will allow us to know which inode
this block should be associated with. This field is set when
the leaf is created and never changed over its lifetime.

The second field is a "distance from the hash table" field.
The meaning is as follows:
 0  = An old leaf in which this value has not been set
 1  = This leaf is pointed to directly from the hash table
 2+ = This leaf is part of a chain, pointed to by another leaf
      block, the value gives the position in the chain.

The third and fourth fields combine to give a time stamp of
the most recent directory insertion or deletion from this
leaf block. The time stamp is not updated when a new leaf
block is chained from the current one. The code is currently
written such that the timestamp on the dir inode will match
that of the leaf block for the most recent insertion/deletion.

For backwards compatibility, any of these new fields which is
zero should be considered to be "unknown".

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
fs/gfs2/dir.c
include/uapi/linux/gfs2_ondisk.h