@@ -1301,6 +1301,19 @@ enum wc_map_op {
13011301 WC_MAP_ERROR ,
13021302};
13031303
1304+ static enum wc_map_op writecache_map_remap_origin (struct dm_writecache * wc , struct bio * bio ,
1305+ struct wc_entry * e )
1306+ {
1307+ if (e ) {
1308+ sector_t next_boundary =
1309+ read_original_sector (wc , e ) - bio -> bi_iter .bi_sector ;
1310+ if (next_boundary < bio -> bi_iter .bi_size >> SECTOR_SHIFT )
1311+ dm_accept_partial_bio (bio , next_boundary );
1312+ }
1313+
1314+ return WC_MAP_REMAP_ORIGIN ;
1315+ }
1316+
13041317static enum wc_map_op writecache_map_read (struct dm_writecache * wc , struct bio * bio )
13051318{
13061319 enum wc_map_op map_op ;
@@ -1323,13 +1336,7 @@ static enum wc_map_op writecache_map_read(struct dm_writecache *wc, struct bio *
13231336 map_op = WC_MAP_REMAP ;
13241337 }
13251338 } else {
1326- if (e ) {
1327- sector_t next_boundary =
1328- read_original_sector (wc , e ) - bio -> bi_iter .bi_sector ;
1329- if (next_boundary < bio -> bi_iter .bi_size >> SECTOR_SHIFT )
1330- dm_accept_partial_bio (bio , next_boundary );
1331- }
1332- map_op = WC_MAP_REMAP_ORIGIN ;
1339+ map_op = writecache_map_remap_origin (wc , bio , e );
13331340 }
13341341
13351342 return map_op ;
@@ -1417,14 +1424,7 @@ static enum wc_map_op writecache_map_write(struct dm_writecache *wc, struct bio
14171424 if (!WC_MODE_PMEM (wc ) && !found_entry ) {
14181425direct_write :
14191426 e = writecache_find_entry (wc , bio -> bi_iter .bi_sector , WFE_RETURN_FOLLOWING );
1420- if (e ) {
1421- sector_t next_boundary = read_original_sector (wc , e ) - bio -> bi_iter .bi_sector ;
1422- BUG_ON (!next_boundary );
1423- if (next_boundary < bio -> bi_iter .bi_size >> SECTOR_SHIFT ) {
1424- dm_accept_partial_bio (bio , next_boundary );
1425- }
1426- }
1427- return WC_MAP_REMAP_ORIGIN ;
1427+ return writecache_map_remap_origin (wc , bio , e );
14281428 }
14291429 writecache_wait_on_freelist (wc );
14301430 continue ;
0 commit comments