summaryrefslogtreecommitdiffstats
path: root/source3
diff options
context:
space:
mode:
authorDavid Disseldorp <ddiss@samba.org>2015-02-19 16:46:56 +0100
committerJeremy Allison <jra@samba.org>2015-03-09 21:27:07 +0100
commit43e581188ab107e730ef0a232cc406963781bc5d (patch)
tree5ec8e65e66b9d60eef552955e45929ff2c0ed5f8 /source3
parent29531c55928aedc6f860555737cba99689a75d2c (diff)
downloadsamba-43e581188ab107e730ef0a232cc406963781bc5d.tar.gz
samba-43e581188ab107e730ef0a232cc406963781bc5d.tar.xz
samba-43e581188ab107e730ef0a232cc406963781bc5d.zip
s3/statvfs: expose FILE_SUPPORTS_SPARSE_FILES capability
Samba now supports: - FSCTL_SET_SPARSE - FSCTL_SET_ZERO_DATA, via FALLOC_FL_PUNCH_HOLE - FSCTL_QUERY_ALLOCATED_RANGES, via SEEK_DATA/SEEK_HOLE As such, flag support for sparse files, via the FILE_SUPPORTS_SPARSE_FILES capability flag if FALLOC_FL_PUNCH_HOLE and SEEK_DATA/SEEK_HOLE are present at configure time. Signed-off-by: David Disseldorp <ddiss@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'source3')
-rw-r--r--source3/smbd/statvfs.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/source3/smbd/statvfs.c b/source3/smbd/statvfs.c
index f9f2211030..d4bdf1629f 100644
--- a/source3/smbd/statvfs.c
+++ b/source3/smbd/statvfs.c
@@ -142,6 +142,15 @@ static int linux_statvfs(const char *path, vfs_statvfs_struct *statbuf)
#endif
if (statvfs_buf.f_flag & ST_RDONLY)
statbuf->FsCapabilities |= FILE_READ_ONLY_VOLUME;
+
+#if defined(HAVE_FALLOC_FL_PUNCH_HOLE) && defined(HAVE_LSEEK_HOLE_DATA)
+ /*
+ * Only flag sparse file support if ZERO_DATA can be used to
+ * deallocate blocks, and SEEK_HOLE / SEEK_DATA can be used
+ * to provide QUERY_ALLOCATED_RANGES information.
+ */
+ statbuf->FsCapabilities |= FILE_SUPPORTS_SPARSE_FILES;
+#endif
}
return result;
}