1 // SPDX-License-Identifier: GPL-2.0 2 #include <linux/memcontrol.h> 3 #include <linux/rwsem.h> 4 #include <linux/shrinker.h> 5 #include <linux/rculist.h> 6 #include <trace/events/vmscan.h> 7 8 #include "internal.h" 9 10 LIST_HEAD(shrinker_list); 11 DEFINE_MUTEX(shrinker_mutex); 12 13 #ifdef CONFIG_MEMCG 14 static int shrinker_nr_max; 15 16 static inline int shrinker_unit_size(int nr_items) 17 { 18 return (DIV_ROUND_UP(nr_items, SHRINKER_UNIT_BITS) * sizeof(struct shrinker_info_unit *)); 19 } 20 21 static inline void shrinker_unit_free(struct shrinker_info *info, int start) 22 { 23 struct shrinker_info_unit **unit; 24 int nr, i; 25 26 if (!info) 27 return; 28 29 unit = info->unit; 30 nr = DIV_ROUND_UP(info->map_nr_max, SHRINKER_UNIT_BITS); 31 32 for (i = start; i < nr; i++) { 33 if (!unit[i]) 34 break; 35 36 kfree(unit[i]); 37 unit[i] = NULL; 38 } 39 } 40 41 static inline int shrinker_unit_alloc(struct shrinker_info *new, 42 struct shrinker_info *old, int nid) 43 { 44 struct shrinker_info_unit *unit; 45 int nr = DIV_ROUND_UP(new->map_nr_max, SHRINKER_UNIT_BITS); 46 int start = old ? DIV_ROUND_UP(old->map_nr_max, SHRINKER_UNIT_BITS) : 0; 47 int i; 48 49 for (i = start; i < nr; i++) { 50 unit = kzalloc_node(sizeof(*unit), GFP_KERNEL, nid); 51 if (!unit) { 52 shrinker_unit_free(new, start); 53 return -ENOMEM; 54 } 55 56 new->unit[i] = unit; 57 } 58 59 return 0; 60 } 61 62 static void __free_shrinker_info(struct mem_cgroup *memcg) 63 { 64 struct mem_cgroup_per_node *pn; 65 struct shrinker_info *info; 66 int nid; 67 68 lockdep_assert_held(&shrinker_mutex); 69 70 for_each_node(nid) { 71 pn = memcg->nodeinfo[nid]; 72 info = rcu_dereference_protected(pn->shrinker_info, true); 73 shrinker_unit_free(info, 0); 74 kvfree(info); 75 rcu_assign_pointer(pn->shrinker_info, NULL); 76 } 77 } 78 79 void free_shrinker_info(struct mem_cgroup *memcg) 80 { 81 mutex_lock(&shrinker_mutex); 82 __free_shrinker_info(memcg); 83 mutex_unlock(&shrinker_mutex); 84 } 85 86 int alloc_shrinker_info(struct mem_cgroup *memcg) 87 { 88 int nid, ret = 0; 89 int array_size = 0; 90 91 mutex_lock(&shrinker_mutex); 92 array_size = shrinker_unit_size(shrinker_nr_max); 93 for_each_node(nid) { 94 struct shrinker_info *info = kvzalloc_node(sizeof(*info) + array_size, 95 GFP_KERNEL, nid); 96 if (!info) 97 goto err; 98 info->map_nr_max = shrinker_nr_max; 99 if (shrinker_unit_alloc(info, NULL, nid)) { 100 kvfree(info); 101 goto err; 102 } 103 rcu_assign_pointer(memcg->nodeinfo[nid]->shrinker_info, info); 104 } 105 mutex_unlock(&shrinker_mutex); 106 107 return ret; 108 109 err: 110 __free_shrinker_info(memcg); 111 mutex_unlock(&shrinker_mutex); 112 return -ENOMEM; 113 } 114 115 static struct shrinker_info *shrinker_info_protected(struct mem_cgroup *memcg, 116 int nid) 117 { 118 return rcu_dereference_protected(memcg->nodeinfo[nid]->shrinker_info, 119 lockdep_is_held(&shrinker_mutex)); 120 } 121 122 static int expand_one_shrinker_info(struct mem_cgroup *memcg, int new_size, 123 int old_size, int new_nr_max) 124 { 125 struct shrinker_info *new, *old; 126 struct mem_cgroup_per_node *pn; 127 int nid; 128 129 for_each_node(nid) { 130 pn = memcg->nodeinfo[nid]; 131 old = shrinker_info_protected(memcg, nid); 132 /* Not yet online memcg */ 133 if (!old) 134 return 0; 135 136 /* Already expanded this shrinker_info */ 137 if (new_nr_max <= old->map_nr_max) 138 continue; 139 140 new = kvzalloc_node(sizeof(*new) + new_size, GFP_KERNEL, nid); 141 if (!new) 142 return -ENOMEM; 143 144 new->map_nr_max = new_nr_max; 145 146 memcpy(new->unit, old->unit, old_size); 147 if (shrinker_unit_alloc(new, old, nid)) { 148 kvfree(new); 149 return -ENOMEM; 150 } 151 152 rcu_assign_pointer(pn->shrinker_info, new); 153 kvfree_rcu(old, rcu); 154 } 155 156 return 0; 157 } 158 159 static int expand_shrinker_info(int new_id) 160 { 161 int ret = 0; 162 int new_nr_max = round_up(new_id + 1, SHRINKER_UNIT_BITS); 163 int new_size, old_size = 0; 164 struct mem_cgroup *memcg; 165 166 if (!root_mem_cgroup) 167 goto out; 168 169 lockdep_assert_held(&shrinker_mutex); 170 171 new_size = shrinker_unit_size(new_nr_max); 172 old_size = shrinker_unit_size(shrinker_nr_max); 173 174 memcg = mem_cgroup_iter(NULL, NULL, NULL); 175 do { 176 ret = expand_one_shrinker_info(memcg, new_size, old_size, 177 new_nr_max); 178 if (ret) { 179 mem_cgroup_iter_break(NULL, memcg); 180 goto out; 181 } 182 } while ((memcg = mem_cgroup_iter(NULL, memcg, NULL)) != NULL); 183 out: 184 if (!ret) 185 shrinker_nr_max = new_nr_max; 186 187 return ret; 188 } 189 190 static inline int shrinker_id_to_index(int shrinker_id) 191 { 192 return shrinker_id / SHRINKER_UNIT_BITS; 193 } 194 195 static inline int shrinker_id_to_offset(int shrinker_id) 196 { 197 return shrinker_id % SHRINKER_UNIT_BITS; 198 } 199 200 static inline int calc_shrinker_id(int index, int offset) 201 { 202 return index * SHRINKER_UNIT_BITS + offset; 203 } 204 205 void set_shrinker_bit(struct mem_cgroup *memcg, int nid, int shrinker_id) 206 { 207 if (shrinker_id >= 0 && memcg && !mem_cgroup_is_root(memcg)) { 208 struct shrinker_info *info; 209 210 rcu_read_lock(); 211 info = rcu_dereference(memcg->nodeinfo[nid]->shrinker_info); 212 if (!WARN_ON_ONCE(shrinker_id >= info->map_nr_max)) { 213 struct shrinker_info_unit *unit; 214 215 unit = info->unit[shrinker_id_to_index(shrinker_id)]; 216 /* Pairs with smp mb in shrink_slab() */ 217 smp_mb__before_atomic(); 218 set_bit(shrinker_id_to_offset(shrinker_id), unit->map); 219 } 220 rcu_read_unlock(); 221 } 222 } 223 224 static DEFINE_IDR(shrinker_idr); 225 226 static int shrinker_memcg_alloc(struct shrinker *shrinker) 227 { 228 int id; 229 230 if (mem_cgroup_disabled()) 231 return -ENOSYS; 232 if (mem_cgroup_kmem_disabled() && !(shrinker->flags & SHRINKER_NONSLAB)) 233 return -ENOSYS; 234 235 guard(mutex)(&shrinker_mutex); 236 id = idr_alloc(&shrinker_idr, shrinker, 0, 0, GFP_KERNEL); 237 if (id < 0) 238 return id; 239 240 if (id >= shrinker_nr_max) { 241 if (expand_shrinker_info(id)) { 242 idr_remove(&shrinker_idr, id); 243 return -ENOMEM; 244 } 245 } 246 shrinker->id = id; 247 return 0; 248 } 249 250 static void shrinker_memcg_remove(struct shrinker *shrinker) 251 { 252 int id = shrinker->id; 253 254 BUG_ON(id < 0); 255 256 lockdep_assert_held(&shrinker_mutex); 257 258 idr_remove(&shrinker_idr, id); 259 } 260 261 static long xchg_nr_deferred_memcg(int nid, struct shrinker *shrinker, 262 struct mem_cgroup *memcg) 263 { 264 struct shrinker_info *info; 265 struct shrinker_info_unit *unit; 266 long nr_deferred; 267 268 rcu_read_lock(); 269 info = rcu_dereference(memcg->nodeinfo[nid]->shrinker_info); 270 unit = info->unit[shrinker_id_to_index(shrinker->id)]; 271 nr_deferred = atomic_long_xchg(&unit->nr_deferred[shrinker_id_to_offset(shrinker->id)], 0); 272 rcu_read_unlock(); 273 274 return nr_deferred; 275 } 276 277 static long add_nr_deferred_memcg(long nr, int nid, struct shrinker *shrinker, 278 struct mem_cgroup *memcg) 279 { 280 struct shrinker_info *info; 281 struct shrinker_info_unit *unit; 282 long nr_deferred; 283 284 rcu_read_lock(); 285 info = rcu_dereference(memcg->nodeinfo[nid]->shrinker_info); 286 unit = info->unit[shrinker_id_to_index(shrinker->id)]; 287 nr_deferred = 288 atomic_long_add_return(nr, &unit->nr_deferred[shrinker_id_to_offset(shrinker->id)]); 289 rcu_read_unlock(); 290 291 return nr_deferred; 292 } 293 294 void reparent_shrinker_deferred(struct mem_cgroup *memcg) 295 { 296 int nid, index, offset; 297 long nr; 298 struct mem_cgroup *parent = parent_mem_cgroup(memcg); 299 struct shrinker_info *child_info, *parent_info; 300 struct shrinker_info_unit *child_unit, *parent_unit; 301 302 /* Prevent from concurrent shrinker_info expand */ 303 mutex_lock(&shrinker_mutex); 304 for_each_node(nid) { 305 child_info = shrinker_info_protected(memcg, nid); 306 parent_info = shrinker_info_protected(parent, nid); 307 for (index = 0; index < shrinker_id_to_index(child_info->map_nr_max); index++) { 308 child_unit = child_info->unit[index]; 309 parent_unit = parent_info->unit[index]; 310 for (offset = 0; offset < SHRINKER_UNIT_BITS; offset++) { 311 nr = atomic_long_read(&child_unit->nr_deferred[offset]); 312 atomic_long_add(nr, &parent_unit->nr_deferred[offset]); 313 } 314 } 315 } 316 mutex_unlock(&shrinker_mutex); 317 } 318 #else 319 static int shrinker_memcg_alloc(struct shrinker *shrinker) 320 { 321 return -ENOSYS; 322 } 323 324 static void shrinker_memcg_remove(struct shrinker *shrinker) 325 { 326 } 327 328 static long xchg_nr_deferred_memcg(int nid, struct shrinker *shrinker, 329 struct mem_cgroup *memcg) 330 { 331 return 0; 332 } 333 334 static long add_nr_deferred_memcg(long nr, int nid, struct shrinker *shrinker, 335 struct mem_cgroup *memcg) 336 { 337 return 0; 338 } 339 #endif /* CONFIG_MEMCG */ 340 341 static long xchg_nr_deferred(struct shrinker *shrinker, 342 struct shrink_control *sc) 343 { 344 int nid = sc->nid; 345 346 if (!(shrinker->flags & SHRINKER_NUMA_AWARE)) 347 nid = 0; 348 349 if (sc->memcg && 350 (shrinker->flags & SHRINKER_MEMCG_AWARE)) 351 return xchg_nr_deferred_memcg(nid, shrinker, 352 sc->memcg); 353 354 return atomic_long_xchg(&shrinker->nr_deferred[nid], 0); 355 } 356 357 358 static long add_nr_deferred(long nr, struct shrinker *shrinker, 359 struct shrink_control *sc) 360 { 361 int nid = sc->nid; 362 363 if (!(shrinker->flags & SHRINKER_NUMA_AWARE)) 364 nid = 0; 365 366 if (sc->memcg && 367 (shrinker->flags & SHRINKER_MEMCG_AWARE)) 368 return add_nr_deferred_memcg(nr, nid, shrinker, 369 sc->memcg); 370 371 return atomic_long_add_return(nr, &shrinker->nr_deferred[nid]); 372 } 373 374 #define SHRINK_BATCH 128 375 376 static unsigned long do_shrink_slab(struct shrink_control *shrinkctl, 377 struct shrinker *shrinker, int priority) 378 { 379 unsigned long freed = 0; 380 unsigned long long delta; 381 long total_scan; 382 long freeable; 383 long nr; 384 long new_nr; 385 long batch_size = shrinker->batch ? shrinker->batch 386 : SHRINK_BATCH; 387 long scanned = 0, next_deferred; 388 389 freeable = shrinker->count_objects(shrinker, shrinkctl); 390 if (freeable == 0 || freeable == SHRINK_EMPTY) 391 return freeable; 392 393 /* 394 * copy the current shrinker scan count into a local variable 395 * and zero it so that other concurrent shrinker invocations 396 * don't also do this scanning work. 397 */ 398 nr = xchg_nr_deferred(shrinker, shrinkctl); 399 400 if (shrinker->seeks) { 401 delta = freeable >> priority; 402 delta *= 4; 403 do_div(delta, shrinker->seeks); 404 } else { 405 /* 406 * These objects don't require any IO to create. Trim 407 * them aggressively under memory pressure to keep 408 * them from causing refetches in the IO caches. 409 */ 410 delta = freeable / 2; 411 } 412 413 total_scan = nr >> priority; 414 total_scan += delta; 415 total_scan = min(total_scan, (2 * freeable)); 416 417 trace_mm_shrink_slab_start(shrinker, shrinkctl, nr, 418 freeable, delta, total_scan, priority, 419 shrinkctl->memcg); 420 421 /* 422 * Normally, we should not scan less than batch_size objects in one 423 * pass to avoid too frequent shrinker calls, but if the slab has less 424 * than batch_size objects in total and we are really tight on memory, 425 * we will try to reclaim all available objects, otherwise we can end 426 * up failing allocations although there are plenty of reclaimable 427 * objects spread over several slabs with usage less than the 428 * batch_size. 429 * 430 * We detect the "tight on memory" situations by looking at the total 431 * number of objects we want to scan (total_scan). If it is greater 432 * than the total number of objects on slab (freeable), we must be 433 * scanning at high prio and therefore should try to reclaim as much as 434 * possible. 435 */ 436 while (total_scan >= batch_size || 437 total_scan >= freeable) { 438 unsigned long ret; 439 unsigned long nr_to_scan = min(batch_size, total_scan); 440 441 shrinkctl->nr_to_scan = nr_to_scan; 442 shrinkctl->nr_scanned = nr_to_scan; 443 ret = shrinker->scan_objects(shrinker, shrinkctl); 444 if (ret == SHRINK_STOP) 445 break; 446 freed += ret; 447 448 count_vm_events(SLABS_SCANNED, shrinkctl->nr_scanned); 449 total_scan -= shrinkctl->nr_scanned; 450 scanned += shrinkctl->nr_scanned; 451 452 cond_resched(); 453 } 454 455 /* 456 * The deferred work is increased by any new work (delta) that wasn't 457 * done, decreased by old deferred work that was done now. 458 * 459 * And it is capped to two times of the freeable items. 460 */ 461 next_deferred = max_t(long, (nr + delta - scanned), 0); 462 next_deferred = min(next_deferred, (2 * freeable)); 463 464 /* 465 * move the unused scan count back into the shrinker in a 466 * manner that handles concurrent updates. 467 */ 468 new_nr = add_nr_deferred(next_deferred, shrinker, shrinkctl); 469 470 trace_mm_shrink_slab_end(shrinker, shrinkctl->nid, freed, nr, new_nr, total_scan, 471 shrinkctl->memcg); 472 return freed; 473 } 474 475 #ifdef CONFIG_MEMCG 476 static unsigned long shrink_slab_memcg(gfp_t gfp_mask, int nid, 477 struct mem_cgroup *memcg, int priority) 478 { 479 struct shrinker_info *info; 480 unsigned long ret, freed = 0; 481 int offset, index = 0; 482 483 if (!mem_cgroup_online(memcg)) 484 return 0; 485 486 /* 487 * lockless algorithm of memcg shrink. 488 * 489 * The shrinker_info may be freed asynchronously via RCU in the 490 * expand_one_shrinker_info(), so the rcu_read_lock() needs to be used 491 * to ensure the existence of the shrinker_info. 492 * 493 * The shrinker_info_unit is never freed unless its corresponding memcg 494 * is destroyed. Here we already hold the refcount of memcg, so the 495 * memcg will not be destroyed, and of course shrinker_info_unit will 496 * not be freed. 497 * 498 * So in the memcg shrink: 499 * step 1: use rcu_read_lock() to guarantee existence of the 500 * shrinker_info. 501 * step 2: after getting shrinker_info_unit we can safely release the 502 * RCU lock. 503 * step 3: traverse the bitmap and calculate shrinker_id 504 * step 4: use rcu_read_lock() to guarantee existence of the shrinker. 505 * step 5: use shrinker_id to find the shrinker, then use 506 * shrinker_try_get() to guarantee existence of the shrinker, 507 * then we can release the RCU lock to do do_shrink_slab() that 508 * may sleep. 509 * step 6: do shrinker_put() paired with step 5 to put the refcount, 510 * if the refcount reaches 0, then wake up the waiter in 511 * shrinker_free() by calling complete(). 512 * Note: here is different from the global shrink, we don't 513 * need to acquire the RCU lock to guarantee existence of 514 * the shrinker, because we don't need to use this 515 * shrinker to traverse the next shrinker in the bitmap. 516 * step 7: we have already exited the read-side of rcu critical section 517 * before calling do_shrink_slab(), the shrinker_info may be 518 * released in expand_one_shrinker_info(), so go back to step 1 519 * to reacquire the shrinker_info. 520 */ 521 again: 522 rcu_read_lock(); 523 info = rcu_dereference(memcg->nodeinfo[nid]->shrinker_info); 524 if (unlikely(!info)) 525 goto unlock; 526 527 if (index < shrinker_id_to_index(info->map_nr_max)) { 528 struct shrinker_info_unit *unit; 529 530 unit = info->unit[index]; 531 532 rcu_read_unlock(); 533 534 for_each_set_bit(offset, unit->map, SHRINKER_UNIT_BITS) { 535 struct shrink_control sc = { 536 .gfp_mask = gfp_mask, 537 .nid = nid, 538 .memcg = memcg, 539 }; 540 struct shrinker *shrinker; 541 int shrinker_id = calc_shrinker_id(index, offset); 542 543 rcu_read_lock(); 544 shrinker = idr_find(&shrinker_idr, shrinker_id); 545 if (unlikely(!shrinker || !shrinker_try_get(shrinker))) { 546 clear_bit(offset, unit->map); 547 rcu_read_unlock(); 548 continue; 549 } 550 rcu_read_unlock(); 551 552 /* Call non-slab shrinkers even though kmem is disabled */ 553 if (!memcg_kmem_online() && 554 !(shrinker->flags & SHRINKER_NONSLAB)) { 555 clear_bit(offset, unit->map); 556 shrinker_put(shrinker); 557 continue; 558 } 559 560 ret = do_shrink_slab(&sc, shrinker, priority); 561 if (ret == SHRINK_EMPTY) { 562 clear_bit(offset, unit->map); 563 /* 564 * After the shrinker reported that it had no objects to 565 * free, but before we cleared the corresponding bit in 566 * the memcg shrinker map, a new object might have been 567 * added. To make sure, we have the bit set in this 568 * case, we invoke the shrinker one more time and reset 569 * the bit if it reports that it is not empty anymore. 570 * The memory barrier here pairs with the barrier in 571 * set_shrinker_bit(): 572 * 573 * list_lru_add() shrink_slab_memcg() 574 * list_add_tail() clear_bit() 575 * <MB> <MB> 576 * set_bit() do_shrink_slab() 577 */ 578 smp_mb__after_atomic(); 579 ret = do_shrink_slab(&sc, shrinker, priority); 580 if (ret == SHRINK_EMPTY) 581 ret = 0; 582 else 583 set_shrinker_bit(memcg, nid, shrinker_id); 584 } 585 freed += ret; 586 shrinker_put(shrinker); 587 } 588 589 index++; 590 goto again; 591 } 592 unlock: 593 rcu_read_unlock(); 594 return freed; 595 } 596 #else /* !CONFIG_MEMCG */ 597 static unsigned long shrink_slab_memcg(gfp_t gfp_mask, int nid, 598 struct mem_cgroup *memcg, int priority) 599 { 600 return 0; 601 } 602 #endif /* CONFIG_MEMCG */ 603 604 /** 605 * shrink_slab - shrink slab caches 606 * @gfp_mask: allocation context 607 * @nid: node whose slab caches to target 608 * @memcg: memory cgroup whose slab caches to target 609 * @priority: the reclaim priority 610 * 611 * Call the shrink functions to age shrinkable caches. 612 * 613 * @nid is passed along to shrinkers with SHRINKER_NUMA_AWARE set, 614 * unaware shrinkers will receive a node id of 0 instead. 615 * 616 * @memcg specifies the memory cgroup to target. Unaware shrinkers 617 * are called only if it is the root cgroup. 618 * 619 * @priority is sc->priority, we take the number of objects and >> by priority 620 * in order to get the scan target. 621 * 622 * Returns the number of reclaimed slab objects. 623 */ 624 unsigned long shrink_slab(gfp_t gfp_mask, int nid, struct mem_cgroup *memcg, 625 int priority) 626 { 627 unsigned long ret, freed = 0; 628 struct shrinker *shrinker; 629 630 /* 631 * The root memcg might be allocated even though memcg is disabled 632 * via "cgroup_disable=memory" boot parameter. This could make 633 * mem_cgroup_is_root() return false, then just run memcg slab 634 * shrink, but skip global shrink. This may result in premature 635 * oom. 636 */ 637 if (!mem_cgroup_disabled() && !mem_cgroup_is_root(memcg)) 638 return shrink_slab_memcg(gfp_mask, nid, memcg, priority); 639 640 /* 641 * lockless algorithm of global shrink. 642 * 643 * In the unregistration setp, the shrinker will be freed asynchronously 644 * via RCU after its refcount reaches 0. So both rcu_read_lock() and 645 * shrinker_try_get() can be used to ensure the existence of the shrinker. 646 * 647 * So in the global shrink: 648 * step 1: use rcu_read_lock() to guarantee existence of the shrinker 649 * and the validity of the shrinker_list walk. 650 * step 2: use shrinker_try_get() to try get the refcount, if successful, 651 * then the existence of the shrinker can also be guaranteed, 652 * so we can release the RCU lock to do do_shrink_slab() that 653 * may sleep. 654 * step 3: *MUST* to reacquire the RCU lock before calling shrinker_put(), 655 * which ensures that neither this shrinker nor the next shrinker 656 * will be freed in the next traversal operation. 657 * step 4: do shrinker_put() paired with step 2 to put the refcount, 658 * if the refcount reaches 0, then wake up the waiter in 659 * shrinker_free() by calling complete(). 660 */ 661 rcu_read_lock(); 662 list_for_each_entry_rcu(shrinker, &shrinker_list, list) { 663 struct shrink_control sc = { 664 .gfp_mask = gfp_mask, 665 .nid = nid, 666 .memcg = memcg, 667 }; 668 669 if (!shrinker_try_get(shrinker)) 670 continue; 671 672 rcu_read_unlock(); 673 674 ret = do_shrink_slab(&sc, shrinker, priority); 675 if (ret == SHRINK_EMPTY) 676 ret = 0; 677 freed += ret; 678 679 rcu_read_lock(); 680 shrinker_put(shrinker); 681 } 682 683 rcu_read_unlock(); 684 cond_resched(); 685 return freed; 686 } 687 688 struct shrinker *shrinker_alloc(unsigned int flags, const char *fmt, ...) 689 { 690 struct shrinker *shrinker; 691 unsigned int size; 692 va_list ap; 693 int err; 694 695 shrinker = kzalloc_obj(struct shrinker); 696 if (!shrinker) 697 return NULL; 698 699 va_start(ap, fmt); 700 err = shrinker_debugfs_name_alloc(shrinker, fmt, ap); 701 va_end(ap); 702 if (err) 703 goto err_name; 704 705 shrinker->flags = flags | SHRINKER_ALLOCATED; 706 shrinker->seeks = DEFAULT_SEEKS; 707 708 if (flags & SHRINKER_MEMCG_AWARE) { 709 err = shrinker_memcg_alloc(shrinker); 710 if (err == -ENOSYS) { 711 /* Memcg is not supported, fallback to non-memcg-aware shrinker. */ 712 shrinker->flags &= ~SHRINKER_MEMCG_AWARE; 713 goto non_memcg; 714 } 715 716 if (err) 717 goto err_flags; 718 719 return shrinker; 720 } 721 722 non_memcg: 723 /* 724 * The nr_deferred is available on per memcg level for memcg aware 725 * shrinkers, so only allocate nr_deferred in the following cases: 726 * - non-memcg-aware shrinkers 727 * - !CONFIG_MEMCG 728 * - memcg is disabled by kernel command line 729 * - non-slab shrinkers: when memcg kmem is disabled 730 */ 731 size = sizeof(*shrinker->nr_deferred); 732 if (flags & SHRINKER_NUMA_AWARE) 733 size *= nr_node_ids; 734 735 shrinker->nr_deferred = kzalloc(size, GFP_KERNEL); 736 if (!shrinker->nr_deferred) 737 goto err_flags; 738 739 return shrinker; 740 741 err_flags: 742 shrinker_debugfs_name_free(shrinker); 743 err_name: 744 kfree(shrinker); 745 return NULL; 746 } 747 EXPORT_SYMBOL_GPL(shrinker_alloc); 748 749 void shrinker_register(struct shrinker *shrinker) 750 { 751 if (unlikely(!(shrinker->flags & SHRINKER_ALLOCATED))) { 752 pr_warn("Must use shrinker_alloc() to dynamically allocate the shrinker"); 753 return; 754 } 755 756 mutex_lock(&shrinker_mutex); 757 list_add_tail_rcu(&shrinker->list, &shrinker_list); 758 shrinker->flags |= SHRINKER_REGISTERED; 759 shrinker_debugfs_add(shrinker); 760 mutex_unlock(&shrinker_mutex); 761 762 init_completion(&shrinker->done); 763 /* 764 * Now the shrinker is fully set up, take the first reference to it to 765 * indicate that lookup operations are now allowed to use it via 766 * shrinker_try_get(). 767 */ 768 refcount_set(&shrinker->refcount, 1); 769 } 770 EXPORT_SYMBOL_GPL(shrinker_register); 771 772 static void shrinker_free_rcu_cb(struct rcu_head *head) 773 { 774 struct shrinker *shrinker = container_of(head, struct shrinker, rcu); 775 776 kfree(shrinker->nr_deferred); 777 kfree(shrinker); 778 } 779 780 void shrinker_free(struct shrinker *shrinker) 781 { 782 struct dentry *debugfs_entry = NULL; 783 int debugfs_id; 784 785 if (!shrinker) 786 return; 787 788 if (shrinker->flags & SHRINKER_REGISTERED) { 789 /* drop the initial refcount */ 790 shrinker_put(shrinker); 791 /* 792 * Wait for all lookups of the shrinker to complete, after that, 793 * no shrinker is running or will run again, then we can safely 794 * free it asynchronously via RCU and safely free the structure 795 * where the shrinker is located, such as super_block etc. 796 */ 797 wait_for_completion(&shrinker->done); 798 } 799 800 mutex_lock(&shrinker_mutex); 801 if (shrinker->flags & SHRINKER_REGISTERED) { 802 /* 803 * Now we can safely remove it from the shrinker_list and then 804 * free it. 805 */ 806 list_del_rcu(&shrinker->list); 807 debugfs_entry = shrinker_debugfs_detach(shrinker, &debugfs_id); 808 shrinker->flags &= ~SHRINKER_REGISTERED; 809 } 810 811 shrinker_debugfs_name_free(shrinker); 812 813 if (shrinker->flags & SHRINKER_MEMCG_AWARE) 814 shrinker_memcg_remove(shrinker); 815 mutex_unlock(&shrinker_mutex); 816 817 if (debugfs_entry) 818 shrinker_debugfs_remove(debugfs_entry, debugfs_id); 819 820 call_rcu(&shrinker->rcu, shrinker_free_rcu_cb); 821 } 822 EXPORT_SYMBOL_GPL(shrinker_free); 823