summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
0a2f7b3)
This warning indicates the incorrect use of KM_SLEEP in a call
path which must use KM_PUSHPAGE to avoid deadlocking in direct
reclaim. See commit
b8d06fca089fae4680c3a552fc55c512bfb02202
for additional details.
SPL: Fixing allocation for task txg_sync (6093) which
used GFP flags 0x297bda7c with PF_NOFS set
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #973
ddt_entry_t *dde;
/* XXX: Move to a slab */
ddt_entry_t *dde;
/* XXX: Move to a slab */
- dde = kmem_zalloc(sizeof (ddt_entry_t), KM_SLEEP);
+ dde = kmem_zalloc(sizeof (ddt_entry_t), KM_PUSHPAGE);
cv_init(&dde->dde_cv, NULL, CV_DEFAULT, NULL);
dde->dde_key = *ddk;
cv_init(&dde->dde_cv, NULL, CV_DEFAULT, NULL);
dde->dde_key = *ddk;
ddt_t *ddt;
/* XXX: Move to a slab */
ddt_t *ddt;
/* XXX: Move to a slab */
- ddt = kmem_zalloc(sizeof (*ddt), KM_SLEEP | KM_NODEBUG);
+ ddt = kmem_zalloc(sizeof (*ddt), KM_PUSHPAGE | KM_NODEBUG);
mutex_init(&ddt->ddt_lock, NULL, MUTEX_DEFAULT, NULL);
avl_create(&ddt->ddt_tree, ddt_entry_compare,
mutex_init(&ddt->ddt_lock, NULL, MUTEX_DEFAULT, NULL);
avl_create(&ddt->ddt_tree, ddt_entry_compare,
return (B_TRUE);
ddt = spa->spa_ddt[BP_GET_CHECKSUM(bp)];
return (B_TRUE);
ddt = spa->spa_ddt[BP_GET_CHECKSUM(bp)];
- dde = kmem_alloc(sizeof(ddt_entry_t), KM_SLEEP);
+ dde = kmem_alloc(sizeof(ddt_entry_t), KM_PUSHPAGE);
ddt_key_fill(&(dde->dde_key), bp);
ddt_key_fill(&(dde->dde_key), bp);