| 144 | } |
| 145 | |
| 146 | static const LayoutProto::LayoutdataProto getLayoutData( |
| 147 | unsigned logicalCylinder, unsigned logicalHead, const ConfigProto& config) |
| 148 | { |
| 149 | LayoutProto::LayoutdataProto layoutData; |
| 150 | for (const auto& f : config.layout().layoutdata()) |
| 151 | { |
| 152 | if (f.has_track() && f.has_up_to_track() && |
| 153 | ((logicalCylinder < f.track()) || |
| 154 | (logicalCylinder > f.up_to_track()))) |
| 155 | continue; |
| 156 | if (f.has_track() && !f.has_up_to_track() && |
| 157 | (logicalCylinder != f.track())) |
| 158 | continue; |
| 159 | if (f.has_side() && (f.side() != logicalHead)) |
| 160 | continue; |
| 161 | |
| 162 | layoutData.MergeFrom(f); |
| 163 | } |
| 164 | return layoutData; |
| 165 | } |
| 166 | |
| 167 | DiskLayout::DiskLayout(const ConfigProto& config) |
| 168 | { |