GFS2: FITRIM ioctl support
authorSteven Whitehouse <swhiteho@redhat.com>
Wed, 8 Feb 2012 12:58:32 +0000 (12:58 +0000)
committerSteven Whitehouse <swhiteho@redhat.com>
Tue, 28 Feb 2012 17:10:21 +0000 (17:10 +0000)
commit66fc061bda3526650328b73f69985da3518c4256
tree350471fda86ebf60fee5436350d36ce9cedbea75
parent47ac5537a794fc71f89d51af492a945bd233f70c
GFS2: FITRIM ioctl support

The FITRIM ioctl provides an alternative way to send discard requests to
the underlying device. Using the discard mount option results in every
freed block generating a discard request to the block device. This can
be slow, since many block devices can only process discard requests of
larger sizes, and also such operations can be time consuming.

Rather than using the discard mount option, FITRIM allows a sweep of the
filesystem on an occasional basis, and also to optionally avoid sending
down discard requests for smaller regions.

In GFS2 FITRIM will work at resource group granularity. There is a flag
for each resource group which keeps track of which resource groups have
been trimmed. This flag is reset whenever a deallocation occurs in the
resource group, and set whenever a successful FITRIM of that resource
group has taken place. This helps to reduce repeated discard requests
for the same block ranges, again improving performance.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
fs/gfs2/file.c
fs/gfs2/inode.c
fs/gfs2/lops.c
fs/gfs2/rgrp.c
fs/gfs2/rgrp.h
fs/gfs2/super.c
fs/gfs2/xattr.c
include/linux/gfs2_ondisk.h