Commit 913eca1a authored by Anna Schumaker's avatar Anna Schumaker Committed by Trond Myklebust

NFS: Fallocate should use the nfs4_fattr_bitmap

Changing a sparse file could have an effect not only on the file size,
but also on the number of blocks used by the file in the underlying
filesystem. The server's cache_consistency_bitmap doesn't update the
SPACE_USED attribute, so let's switch to the nfs4_fattr_bitmap to catch
this update whenever we do an ALLOCATE or DEALLOCATE.

This patch fixes xfstests generic/568, which tests that fallocating an
unaligned range allocates all blocks touched by that range. Without this
patch, `stat` reports 0 bytes used immediately after the fallocate.
Adding a `sleep 5` to the test also catches the update, but it's better
to do so when we know something has changed.
Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent 89658c4d
...@@ -49,7 +49,7 @@ static int _nfs42_proc_fallocate(struct rpc_message *msg, struct file *filep, ...@@ -49,7 +49,7 @@ static int _nfs42_proc_fallocate(struct rpc_message *msg, struct file *filep,
.falloc_fh = NFS_FH(inode), .falloc_fh = NFS_FH(inode),
.falloc_offset = offset, .falloc_offset = offset,
.falloc_length = len, .falloc_length = len,
.falloc_bitmask = server->cache_consistency_bitmask, .falloc_bitmask = nfs4_fattr_bitmap,
}; };
struct nfs42_falloc_res res = { struct nfs42_falloc_res res = {
.falloc_server = server, .falloc_server = server,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment