diff options
| -rw-r--r-- | drivers/md/bcache/btree.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/md/bcache/btree.c b/drivers/md/bcache/btree.c index a6ad49ac5f2b..04636a70ffaa 100644 --- a/drivers/md/bcache/btree.c +++ b/drivers/md/bcache/btree.c | |||
| @@ -622,6 +622,13 @@ static int bch_mca_shrink(struct shrinker *shrink, struct shrink_control *sc) | |||
| 622 | else if (!mutex_trylock(&c->bucket_lock)) | 622 | else if (!mutex_trylock(&c->bucket_lock)) |
| 623 | return -1; | 623 | return -1; |
| 624 | 624 | ||
| 625 | /* | ||
| 626 | * It's _really_ critical that we don't free too many btree nodes - we | ||
| 627 | * have to always leave ourselves a reserve. The reserve is how we | ||
| 628 | * guarantee that allocating memory for a new btree node can always | ||
| 629 | * succeed, so that inserting keys into the btree can always succeed and | ||
| 630 | * IO can always make forward progress: | ||
| 631 | */ | ||
| 625 | nr /= c->btree_pages; | 632 | nr /= c->btree_pages; |
| 626 | nr = min_t(unsigned long, nr, mca_can_free(c)); | 633 | nr = min_t(unsigned long, nr, mca_can_free(c)); |
| 627 | 634 | ||
