bcache: Document shrinker reserve better
authorKent Overstreet <koverstreet@google.com>
Mon, 3 Jun 2013 20:04:56 +0000 (13:04 -0700)
committerKent Overstreet <kmo@daterainc.com>
Mon, 1 Jul 2013 21:42:48 +0000 (14:42 -0700)
Signed-off-by: Kent Overstreet <kmo@daterainc.com>
drivers/md/bcache/btree.c

index a6ad49a..04636a7 100644 (file)
@@ -622,6 +622,13 @@ static int bch_mca_shrink(struct shrinker *shrink, struct shrink_control *sc)
        else if (!mutex_trylock(&c->bucket_lock))
                return -1;
 
+       /*
+        * It's _really_ critical that we don't free too many btree nodes - we
+        * have to always leave ourselves a reserve. The reserve is how we
+        * guarantee that allocating memory for a new btree node can always
+        * succeed, so that inserting keys into the btree can always succeed and
+        * IO can always make forward progress:
+        */
        nr /= c->btree_pages;
        nr = min_t(unsigned long, nr, mca_can_free(c));