Hello Jesper,

Thanks for pointing this out. I was not aware that it did not work on FreeBSD.  Based on your input and the Solaris, Windows, and FreeBSD definitions of statvfs(), I have corrected the code to be correct for hopefully all those cases.

It will be committed to the repo later today and will appear in Bacula version 9.0.6.

Best regards,

Kern



On 11/12/2017 08:00 AM, Jesper Schmitz Mouridsen wrote:
Hello list.

On FreeBSD  f_bsize of  struct statvfs is not equal to the filesystems blocksize as on Linux, on FreeBSD f_bsize is statfs's f_iosize which is optimal transfer block size e.g can be much larger than fragment size and actual block size.

Therefore also use f_frsize for freeval calculation. This fixes the issue on FreeBSD
where the dir status storage reports Available Space incorrectly.
It applies both to Bacula 7 and Bacula 9. (I only tested on 9 but they seem to have bsys.c in common on this matter) I have only tested on my FreeBSD box and with the fix it reports Available Space correctly (tested with ufs and zfs)


--- src/lib/bsys.c.orig
+++ src/lib/bsys.c
@@ -1033,7 +1033,7 @@ int fs_get_free_space(const char *path, struct statvfs st;

   if (statvfs(path, &st) == 0) {
-     *freeval = (uint64_t)st.f_bsize * (uint64_t)st.f_bavail;
+    *freeval = (uint64_t)st.f_frsize * (uint64_t)st.f_bavail;
     *totalval = (uint64_t)st.f_blocks * (uint64_t)st.f_frsize;
      return 0;
   }
Or less confusing starting both calculations with the fs block size/fragment size:
    *freeval = (uint64_t)st.f_frsize * (uint64_t)st.f_bavail;
    *totalval =(uint64_t)st.f_frsize * (uint64_t)st.f_blocks;

Regards
/Jesper Schmitz Mouridsen.

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Bacula-devel mailing list
Bacula-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-devel



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Bacula-devel mailing list
Bacula-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-devel

Reply via email to