}
abe = mempool_alloc(abe_pool, GFP_KERNEL);
- BUG_ON(!igrab(mapping->host));
+
+ /*
+ * we should be using igrab here, but
+ * we don't want to hammer on the global
+ * inode spinlock just to take an extra
+ * reference on a file that we must already
+ * have a reference to.
+ *
+ * When we're called, we always have a reference
+ * on the file, so we must always have a reference
+ * on the inode, so igrab must always just
+ * bump the count and move on.
+ */
+ atomic_inc(&mapping->host->i_count);
abe->mapping = mapping;
hlist_add_head(&abe->list, &batch_hash[bucket]);
return;