Module Name: src Committed By: dholland Date: Wed Aug 12 18:23:16 UTC 2015
Modified Files: src/libexec/lfs_cleanerd: cleaner.h coalesce.c lfs_cleanerd.c src/sys/ufs/lfs: lfs.h lfs_extern.h lfs_syscalls.c Log Message: Fix assorted 64->32 truncations related to BLOCK_INFO. Also make note of a cleaner limitation: it seems that when it goes to coalesce discontiguous files, it mallocs an array with one BLOCK_INFO for every block in the file. Therefore, with 64-bit LFS, on a 32-bit platform it will be possible to have files large enough to overflow the cleaner's address space. Currently these will be skipped and cause warnings via syslog. At some point someone should rewrite the logic to coalesce files to use chunks of some reasonable size, as discontinuity between such chunks is immaterial and mallocing this much space is silly and fragile. Also, the kernel only accepts up to 65536 blocks at a time for bmapv and markv, so processing more than this at once probably isn't useful and may not even work currently. I don't want to change this around just now as it's not entirely trivial. To generate a diff of this commit: cvs rdiff -u -r1.11 -r1.12 src/libexec/lfs_cleanerd/cleaner.h cvs rdiff -u -r1.28 -r1.29 src/libexec/lfs_cleanerd/coalesce.c cvs rdiff -u -r1.44 -r1.45 src/libexec/lfs_cleanerd/lfs_cleanerd.c cvs rdiff -u -r1.172 -r1.173 src/sys/ufs/lfs/lfs.h cvs rdiff -u -r1.107 -r1.108 src/sys/ufs/lfs/lfs_extern.h cvs rdiff -u -r1.164 -r1.165 src/sys/ufs/lfs/lfs_syscalls.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.