summaryrefslogtreecommitdiffstats
path: root/include/uapi
diff options
context:
space:
mode:
authorSteven Whitehouse <swhiteho@redhat.com>2014-02-07 11:23:22 +0000
committerSteven Whitehouse <swhiteho@redhat.com>2014-02-07 11:23:22 +0000
commit44aaada9d144a46d3de48ad81093f69d17fae96f (patch)
treec3dbb51279c93ec2fad3464d1d93e115d9882599 /include/uapi
parenta0846a534c5fbc40a08e2960a24bd0b8d647a840 (diff)
downloadlinux-44aaada9d144a46d3de48ad81093f69d17fae96f.tar.gz
linux-44aaada9d144a46d3de48ad81093f69d17fae96f.tar.bz2
linux-44aaada9d144a46d3de48ad81093f69d17fae96f.zip
GFS2: Add meta readahead field in directory entries
The intent of this new field in the directory entry is to allow a subsequent lookup to know how many blocks, which are contiguous with the inode, contain metadata which relates to the inode. This will then allow the issuing of a single read to read these blocks, rather than reading the inode first, and then issuing a second read for the metadata. This only works under some fairly strict conditions, since we do not have back pointers from inodes to directory entries we must ensure that the blocks referenced in this way will always belong to the inode. This rules out being able to use this system for indirect blocks, as these can change as a result of truncate/rewrite. So the idea here is to restrict this to xattr blocks only for the time being. For most inodes, that means only a single block. Also, when using ACLs and/or SELinux or other LSMs, these will be added at inode creation time so that they will be contiguous with the inode on disk and also will almost always be needed when we read the inode in for permissions checks. Once an xattr block for an inode is allocated, it will never change until the inode is deallocated. This patch adds the new field, a further patch will add the readahead in due course. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'include/uapi')
-rw-r--r--include/uapi/linux/gfs2_ondisk.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/include/uapi/linux/gfs2_ondisk.h b/include/uapi/linux/gfs2_ondisk.h
index 310020816809..db3fdd083882 100644
--- a/include/uapi/linux/gfs2_ondisk.h
+++ b/include/uapi/linux/gfs2_ondisk.h
@@ -304,7 +304,13 @@ struct gfs2_dirent {
__be16 de_rec_len;
__be16 de_name_len;
__be16 de_type;
- __u8 __pad[14];
+ union {
+ __u8 __pad[14];
+ struct {
+ __be16 de_rahead;
+ __u8 pad2[12];
+ };
+ };
};
/*