It's never called with NULL first argument anymore. Is there any reason to keep that check (and the second argument, never used when state != NULL) there? Frankly, I wonder if there is any point in that fget_many()/fput_many() stuff. Does the benefit from that really show up in any profiles?