Limits to size of sparse bundles, and bugs fixed in Spundle 1.2

I am very grateful to Bjoern, who reported a bug in Spundle 1.1 when trying to use it to create very large sparse bundles. As is common, when I investigated this I discovered other bugs both in bundle sizing and resizing. These are now fixed in version 1.2, which is capable of creating and resizing sparse bundles from 1 MB to 858 TB in size. Let me explain a bit more.

When setting the size of a new sparse bundle, or changing the size of an existing one, you can now enter any number between 1 and 999 inclusive, and for any size unit from MB to TB. The number you enter can be integer or decimal as you wish. Note that this is the maximum size to which the sparse bundle can grow, and initially it may appear smaller.

One potentially confusing sitation with sizing is when the maximum size of the sparse bundle is greater than the free space on the volume on which it’s stored. Say, for example, that you create a sparse bundle with a maximum size of 2.2 TB on a volume which only has 400 GB free space at the time. When you mount that sparse bundle, it won’t show all 2.2 TB as free space, as it can’t store any more than the free space on the host volume, which will be rather less than 400 GB. Move that sparse bundle to a volume on which you have 3.5 TB free, though, and it can there accommodate up to its set maximum of 2.2 TB. Sparse bundles are neat, but they can’t create free space where it doesn’t exist.

Following further testing, I have also discovered that the size setting isn’t given in ‘new’ units, in which 1 KB = 1,000 bytes, but in traditional ones, in which 1 KB = 1,024 bytes. I have updated the documentation to make that clear.

spundle113

I have also reviewed band sizing, to check that code for bugs and establish clearer rules. Although you can here enter any number from 1 to 1,000, including decimal numbers such as 50.3, these will be converted to integers (whole numbers) to set the band size. Entering a 0 is also allowed, and results in the default band size (currently 8.4 MB) being used. Units can be MB or GB, but there’s a limit imposed by macOS that band size can’t exceed 8.59 GB which Spundle respects. If you were to try setting band size any greater than that, Spundle should limit that setting so that it is no greater than 8.59 GB.

This in turn imposes a limit on the practical size of sparse bundles: because they start to malfunction when the number of band files exceeds 100,000, and band files cannot be larger than 8.59 GB, the largest sparse bundle which will function properly is 858 TB, rather than the 999 TB currently available in Spundle. That doesn’t appear to have been documented anywhere, and I suspect that won’t be a limit that anyone approaches!

Spundle version 1.2 is now available from here: spundle12
from Downloads above, from its Product Page, and through its auto-update mechanism.

Thanks again to Bjoern for taking Spundle into these huge bundle sizes, and for correctly working out what my bug was. My apologies for that and the others.