]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/blockallocator.cpp
Move path coercion to TrackType
[r2c2.git] / source / libr2c2 / blockallocator.cpp
index ed32193f3e1d116b65b557d9bb8619f82dc0bf41..88fb12e8145baaf3f4e636311f9664b5a0a86e1d 100644 (file)
@@ -253,26 +253,16 @@ void BlockAllocator::reserve_more()
                }
                else
                {
-                       const TrackType::Endpoint &entry_ep = track.endpoint();
                        unsigned path = track->get_active_path();
-                       if(!entry_ep.has_path(path))
+                       if(!track.endpoint().has_path(path))
                        {
-                               const TrackType::Endpoint &exit_ep = track.reverse().endpoint();
-                               if(entry_ep.has_common_paths(exit_ep))
+                               path = track->get_type().coerce_path(track.entry(), path);
+                               track->set_active_path(path);
+                               if(track->is_path_changing())
                                {
-                                       unsigned mask = entry_ep.paths&exit_ep.paths;
-                                       for(path=0; mask>1; ++path, mask>>=1) ;
-
-                                       track->set_active_path(path);
-                                       if(track->is_path_changing())
-                                       {
-                                               pending_block = &*block;
-                                               break;
-                                       }
-                               }
-                               else
-                                       // XXX Do something here
+                                       pending_block = &*block;
                                        break;
+                               }
                        }
                }