diff options
-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 7fda4b82271..ed14c673b51 100644 --- a/source3/modules/vfs_default.c +++ b/source3/modules/vfs_default.c @@ -1530,6 +1530,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 |