diff options
author | Björn Baumbach <bb@sernet.de> | 2014-03-27 11:17:30 +0100 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2014-04-05 03:09:00 +0200 |
commit | c35b31f45244a8339684c3b83a7d86eefb80e0da (patch) | |
tree | edc56d90b399b109279023e8a3f0e34a565f2a82 | |
parent | 69b7631ca712046eab2bf4d8dae666718c46cb82 (diff) | |
download | samba-c35b31f45244a8339684c3b83a7d86eefb80e0da.tar.gz samba-c35b31f45244a8339684c3b83a7d86eefb80e0da.tar.xz samba-c35b31f45244a8339684c3b83a7d86eefb80e0da.zip |
s3: enforce a positive allocation_file_size for non-empty files
Some file systems do not allocate a block for very
small files. But for non-empty file should report a
positive size.
Pair-Programmed-With: Michael Adam <obnox@samba.org>
Signed-off-by: Björn Baumbach <bb@sernet.de>
Reviewed-by: Jeremy Allison <jra@samba.org>
Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Sat Apr 5 03:09:00 CEST 2014 on sn-devel-104
-rw-r--r-- | source3/modules/vfs_default.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c index 673ebfe35b..a129d81d43 100644 --- a/source3/modules/vfs_default.c +++ b/source3/modules/vfs_default.c @@ -1538,6 +1538,18 @@ static uint64_t vfswrap_get_alloc_size(vfs_handle_struct *handle, #else #error SIZEOF_BLKCNT_T_NOT_A_SUPPORTED_VALUE #endif + if (result == 0) { + /* + * Some file systems do not allocate a block for very + * small files. But for non-empty file should report a + * positive size. + */ + + uint64_t filesize = get_file_size_stat(sbuf); + if (filesize > 0) { + result = MIN((uint64_t)STAT_ST_BLOCKSIZE, filesize); + } + } #else result = get_file_size_stat(sbuf); #endif |