mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-25 11:47:43 +03:00
Add linux kernel memory support
Required kmem/vmem changes Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
This commit is contained in:
+17
-2
@@ -523,12 +523,13 @@ static boolean_t l2arc_write_eligible(uint64_t spa_guid, arc_buf_hdr_t *ab);
|
||||
* Hash table routines
|
||||
*/
|
||||
|
||||
#define HT_LOCK_PAD 64
|
||||
#define HT_LOCK_ALIGN 64
|
||||
#define HT_LOCK_PAD (P2NPHASE(sizeof (kmutex_t), (HT_LOCK_ALIGN)))
|
||||
|
||||
struct ht_lock {
|
||||
kmutex_t ht_lock;
|
||||
#ifdef _KERNEL
|
||||
unsigned char pad[(HT_LOCK_PAD - sizeof (kmutex_t))];
|
||||
unsigned char pad[HT_LOCK_PAD];
|
||||
#endif
|
||||
};
|
||||
|
||||
@@ -772,8 +773,15 @@ buf_fini(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
#if defined(_KERNEL) && defined(HAVE_SPL)
|
||||
/* Large allocations which do not require contiguous pages
|
||||
* should be using vmem_free() in the linux kernel */
|
||||
vmem_free(buf_hash_table.ht_table,
|
||||
(buf_hash_table.ht_mask + 1) * sizeof (void *));
|
||||
#else
|
||||
kmem_free(buf_hash_table.ht_table,
|
||||
(buf_hash_table.ht_mask + 1) * sizeof (void *));
|
||||
#endif
|
||||
for (i = 0; i < BUF_LOCKS; i++)
|
||||
mutex_destroy(&buf_hash_table.ht_locks[i].ht_lock);
|
||||
kmem_cache_destroy(hdr_cache);
|
||||
@@ -875,8 +883,15 @@ buf_init(void)
|
||||
hsize <<= 1;
|
||||
retry:
|
||||
buf_hash_table.ht_mask = hsize - 1;
|
||||
#if defined(_KERNEL) && defined(HAVE_SPL)
|
||||
/* Large allocations which do not require contiguous pages
|
||||
* should be using vmem_alloc() in the linux kernel */
|
||||
buf_hash_table.ht_table =
|
||||
vmem_zalloc(hsize * sizeof (void*), KM_SLEEP);
|
||||
#else
|
||||
buf_hash_table.ht_table =
|
||||
kmem_zalloc(hsize * sizeof (void*), KM_NOSLEEP);
|
||||
#endif
|
||||
if (buf_hash_table.ht_table == NULL) {
|
||||
ASSERT(hsize > (1ULL << 8));
|
||||
hsize >>= 1;
|
||||
|
||||
Reference in New Issue
Block a user