ВН
Size: a a a
ВН
ВН
Am
Am
ВН
ВН
ВН
Am
ВН
Am
ВН
ВН
ВН
ВН
/*
* This is the size of the cache, minus the amount used for
* flash-only devices
*/
uint64_t cache_sectors = c->nbuckets * c->sb.bucket_size - atomic_long_read(&c->flash_dev_dirty_sectors);
/*
* Unfortunately there is no control of global dirty data. If the
* user states that they want 10% dirty data in the cache, and has,
* e.g., 5 backing volumes of equal size, we try and ensure each
* backing volume uses about 2% of the cache for dirty data.
*/
uint32_t bdev_share = div64_u64(bdev_sectors(dc->bdev) << WRITEBACK_SHARE_SHIFT, c->cached_dev_sectors);
uint64_t cache_dirty_target = div_u64(cache_sectors * dc->writeback_percent, 100);
/* Ensure each backing dev gets at least one dirty share */
if (bdev_share < 1)
bdev_share = 1;
return (cache_dirty_target * bdev_share) >> WRITEBACK_SHARE_SHIFT;
Am
Am
Am
ВН