uptodate = 0;
 
                /*
-                * see below about how we avoid a nasty race with release page
-                * and why we unlock later
+                * We can't unlock the pages just yet since the extent buffer
+                * hasn't been properly inserted in the radix tree, this
+                * opens a race with btree_releasepage which can free a page
+                * while we are still filling in all pages for the buffer and
+                * we could crash.
                 */
        }
        if (uptodate)
        set_bit(EXTENT_BUFFER_IN_TREE, &eb->bflags);
 
        /*
-        * there is a race where release page may have
-        * tried to find this extent buffer in the radix
-        * but failed.  It will tell the VM it is safe to
-        * reclaim the, and it will clear the page private bit.
-        * We must make sure to set the page private bit properly
-        * after the extent buffer is in the radix tree so
-        * it doesn't get lost
+        * Now it's safe to unlock the pages because any calls to
+        * btree_releasepage will correctly detect that a page belongs to a
+        * live buffer and won't free them prematurely.
         */
        for (i = 0; i < num_pages; i++)
                unlock_page(eb->pages[i]);