diff --git a/drivers/md/dm-thin.c b/drivers/md/dm-thin.c
index 063fe04..2cb81bf 100644
--- a/drivers/md/dm-thin.c
+++ b/drivers/md/dm-thin.c
@@ -526,7 +526,7 @@
 /*
  * Same as cell_defer except it omits the original holder of the cell.
  */
-static void cell_defer_except(struct thin_c *tc, struct dm_bio_prison_cell *cell)
+static void cell_defer_no_holder(struct thin_c *tc, struct dm_bio_prison_cell *cell)
 {
 	struct bio_list bios;
 	struct pool *pool = tc->pool;
@@ -583,7 +583,7 @@
 	 * the bios in the cell.
 	 */
 	if (bio) {
-		cell_defer_except(tc, m->cell);
+		cell_defer_no_holder(tc, m->cell);
 		bio_endio(bio, 0);
 	} else
 		cell_defer(tc, m->cell, m->data_block);
@@ -598,8 +598,8 @@
 	struct thin_c *tc = m->tc;
 
 	bio_io_error(m->bio);
-	cell_defer_except(tc, m->cell);
-	cell_defer_except(tc, m->cell2);
+	cell_defer_no_holder(tc, m->cell);
+	cell_defer_no_holder(tc, m->cell2);
 	mempool_free(m, tc->pool->mapping_pool);
 }
 
@@ -608,8 +608,8 @@
 	struct thin_c *tc = m->tc;
 
 	inc_all_io_entry(tc->pool, m->bio);
-	cell_defer_except(tc, m->cell);
-	cell_defer_except(tc, m->cell2);
+	cell_defer_no_holder(tc, m->cell);
+	cell_defer_no_holder(tc, m->cell2);
 
 	if (m->pass_discard)
 		remap_and_issue(tc, m->bio, m->data_block);
@@ -950,7 +950,7 @@
 		 */
 		build_data_key(tc->td, lookup_result.block, &key2);
 		if (dm_bio_detain(tc->pool->prison, &key2, bio, &cell2)) {
-			cell_defer_except(tc, cell);
+			cell_defer_no_holder(tc, cell);
 			break;
 		}
 
@@ -977,8 +977,8 @@
 			}
 		} else {
 			inc_all_io_entry(pool, bio);
-			cell_defer_except(tc, cell);
-			cell_defer_except(tc, cell2);
+			cell_defer_no_holder(tc, cell);
+			cell_defer_no_holder(tc, cell2);
 
 			/*
 			 * The DM core makes sure that the discard doesn't span
@@ -996,13 +996,13 @@
 		/*
 		 * It isn't provisioned, just forget it.
 		 */
-		cell_defer_except(tc, cell);
+		cell_defer_no_holder(tc, cell);
 		bio_endio(bio, 0);
 		break;
 
 	default:
 		DMERR("discard: find block unexpectedly returned %d", r);
-		cell_defer_except(tc, cell);
+		cell_defer_no_holder(tc, cell);
 		bio_io_error(bio);
 		break;
 	}
@@ -1057,7 +1057,7 @@
 
 		h->shared_read_entry = dm_deferred_entry_inc(pool->shared_read_ds);
 		inc_all_io_entry(pool, bio);
-		cell_defer_except(tc, cell);
+		cell_defer_no_holder(tc, cell);
 
 		remap_and_issue(tc, bio, lookup_result->block);
 	}
@@ -1074,7 +1074,7 @@
 	 */
 	if (!bio->bi_size) {
 		inc_all_io_entry(tc->pool, bio);
-		cell_defer_except(tc, cell);
+		cell_defer_no_holder(tc, cell);
 
 		remap_and_issue(tc, bio, 0);
 		return;
@@ -1085,7 +1085,7 @@
 	 */
 	if (bio_data_dir(bio) == READ) {
 		zero_fill_bio(bio);
-		cell_defer_except(tc, cell);
+		cell_defer_no_holder(tc, cell);
 		bio_endio(bio, 0);
 		return;
 	}
@@ -1132,10 +1132,10 @@
 	case 0:
 		if (lookup_result.shared) {
 			process_shared_bio(tc, bio, block, &lookup_result);
-			cell_defer_except(tc, cell);
+			cell_defer_no_holder(tc, cell);
 		} else {
 			inc_all_io_entry(tc->pool, bio);
-			cell_defer_except(tc, cell);
+			cell_defer_no_holder(tc, cell);
 
 			remap_and_issue(tc, bio, lookup_result.block);
 		}
@@ -1144,7 +1144,7 @@
 	case -ENODATA:
 		if (bio_data_dir(bio) == READ && tc->origin_dev) {
 			inc_all_io_entry(tc->pool, bio);
-			cell_defer_except(tc, cell);
+			cell_defer_no_holder(tc, cell);
 
 			remap_to_origin_and_issue(tc, bio);
 		} else
@@ -1153,7 +1153,7 @@
 
 	default:
 		DMERR("dm_thin_find_block() failed, error = %d", r);
-		cell_defer_except(tc, cell);
+		cell_defer_no_holder(tc, cell);
 		bio_io_error(bio);
 		break;
 	}
@@ -1429,13 +1429,13 @@
 
 		build_data_key(tc->td, result.block, &key);
 		if (dm_bio_detain(tc->pool->prison, &key, bio, &cell2)) {
-			cell_defer_except(tc, cell1);
+			cell_defer_no_holder(tc, cell1);
 			return DM_MAPIO_SUBMITTED;
 		}
 
 		inc_all_io_entry(tc->pool, bio);
-		cell_defer_except(tc, cell2);
-		cell_defer_except(tc, cell1);
+		cell_defer_no_holder(tc, cell2);
+		cell_defer_no_holder(tc, cell1);
 
 		remap(tc, bio, result.block);
 		return DM_MAPIO_REMAPPED;
