Chris Lu and GitHub
4b12af036c
shell: add a reusable target picker for volume moves ( #10579 )
...
* shell: add a reusable target picker for volume moves
Picks the emptiest node near the source: locality first (same rack, then same
data center), emptiest within a tier. Free bytes decide where the cluster
reports them, free slots break the tie.
The pick is spent in the passed topology, so planning several moves from one
snapshot spreads them instead of stacking every one on whichever node started
emptiest.
Claude-Session: https://claude.ai/code/session_01Ks16jnt4S7gdDk8cheQ3xu
* shell: order targets on one metric, and reserve the real volume size
Comparing some pairs on free bytes and others on free slots is intransitive, so
the winner depended on sort order. One node too old to report filesystem bytes
now puts every candidate on slots.
Reserving the tier average let a batch of large volumes overcommit a
destination; callers pass what the move actually consumes.
Claude-Session: https://claude.ai/code/session_01Ks16jnt4S7gdDk8cheQ3xu
2026-08-05 00:07:39 -07:00
..
2026-06-01 15:11:02 -07:00
2026-07-18 13:56:47 -07:00
2026-01-07 13:06:08 -08:00
2026-01-07 13:06:08 -08:00
2026-01-07 13:06:08 -08:00
2026-01-07 13:06:08 -08:00
2026-01-07 13:06:08 -08:00
2026-07-17 12:30:42 -07:00
2026-07-17 12:30:42 -07:00
2025-11-09 19:58:38 -08:00
2026-04-21 20:17:42 -07:00
2026-07-03 12:39:45 -07:00
2026-06-10 22:31:18 -07:00
2026-07-13 17:18:42 -07:00
2026-07-13 17:18:42 -07:00
2026-06-30 20:01:55 -07:00
2026-06-30 20:01:55 -07:00
2026-07-10 16:44:46 -07:00
2026-06-22 11:23:23 -07:00
2026-07-29 14:21:55 -07:00
2026-07-29 14:21:55 -07:00
2026-06-24 08:40:29 -07:00
2026-06-25 10:38:14 -07:00
2026-06-30 23:20:50 -07:00
2026-07-02 11:58:08 -07:00
2026-07-03 10:47:14 -07:00
2026-06-30 15:35:27 -07:00
2025-10-24 20:21:35 -07:00
2025-10-24 20:21:35 -07:00
2026-07-31 00:34:22 -07:00
2026-04-17 21:09:36 -07:00
2026-04-17 21:09:36 -07:00
2025-10-24 20:21:35 -07:00
2026-01-07 13:06:08 -08:00
2025-10-24 20:21:35 -07:00
2026-06-30 13:28:53 -07:00
2026-06-30 13:28:53 -07:00
2025-10-24 20:21:35 -07:00
2026-04-28 12:30:13 -07:00
2026-04-28 12:30:13 -07:00
2026-01-14 21:37:50 -08:00
2026-07-23 17:44:02 -07:00
2025-10-24 20:21:35 -07:00
2026-06-08 23:42:13 -07:00
2026-06-08 23:42:13 -07:00
2025-10-24 20:21:35 -07:00
2025-10-24 20:21:35 -07:00
2025-10-24 20:21:35 -07:00
2026-06-19 09:09:01 -07:00
2026-07-17 12:30:42 -07:00
2025-10-17 22:11:50 -07:00
2026-01-07 13:06:08 -08:00
2025-10-13 18:05:17 -07:00
2026-05-12 12:37:09 -07:00
2026-01-07 13:06:08 -08:00
2026-01-07 13:06:08 -08:00
2025-09-09 01:01:03 -07:00
2026-07-15 19:20:00 -07:00
2026-07-27 16:41:13 -07:00
2026-07-04 10:50:32 -07:00
2026-07-04 10:50:32 -07:00
2026-07-15 19:20:00 -07:00
2026-07-15 19:20:00 -07:00
2026-07-15 19:20:00 -07:00
2026-02-05 12:57:27 -08:00
2026-07-22 14:38:06 -07:00
2026-01-07 13:06:08 -08:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-03-25 23:09:53 -07:00
2026-05-18 13:42:32 -07:00
2026-01-27 10:50:16 -08:00
2025-12-13 13:41:25 -08:00
2026-06-06 11:20:15 -07:00
2026-07-08 14:32:04 -07:00
2026-01-27 10:50:16 -08:00
2026-08-04 16:00:04 -07:00
2026-07-03 12:39:45 -07:00
2026-07-10 22:09:39 -07:00
2026-02-26 11:56:10 -08:00
2026-05-07 17:45:04 -07:00
2025-07-16 23:39:27 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-06-24 19:36:42 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-12 18:29:18 -07:00
2026-05-13 00:19:05 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-05-18 13:42:32 -07:00
2026-07-08 18:50:54 -07:00
2026-04-28 12:30:13 -07:00
2026-01-30 22:57:05 -08:00
2026-04-28 12:30:13 -07:00
2026-01-30 22:57:05 -08:00
2026-03-03 15:10:40 -08:00
2026-07-08 09:29:59 -07:00
2026-07-24 01:29:41 -07:00
2026-07-12 00:14:16 -07:00
2026-07-12 00:14:16 -07:00
2026-01-16 12:31:48 -08:00
2026-07-24 01:29:41 -07:00
2026-06-29 12:43:19 -07:00
2026-07-24 01:29:41 -07:00
2026-07-24 01:29:41 -07:00
2026-06-26 00:48:29 -07:00
2026-07-08 20:03:01 -07:00
2026-07-21 12:43:38 -07:00
2026-07-24 01:29:41 -07:00
2026-07-24 01:29:41 -07:00
2026-01-07 13:06:08 -08:00
2026-06-29 11:31:45 -07:00
2026-06-29 12:43:19 -07:00
2026-06-23 11:27:43 -07:00
2026-07-24 01:29:41 -07:00
2026-08-04 16:58:25 -07:00
2026-08-04 16:58:25 -07:00
2026-01-07 13:06:08 -08:00
2026-07-24 01:29:41 -07:00
2026-06-10 13:29:07 -07:00
2026-05-20 10:27:00 -07:00
2025-11-09 19:58:38 -08:00
2026-07-22 14:38:06 -07:00
2026-03-20 23:52:12 -07:00
2026-06-13 20:09:00 -07:00
2026-06-13 20:09:00 -07:00
2026-06-11 10:46:34 -07:00
2026-07-24 01:29:41 -07:00
2026-07-11 13:49:36 -07:00
2026-07-24 01:29:41 -07:00
2026-01-07 13:06:08 -08:00
2024-09-29 10:38:22 -07:00
2024-09-29 10:38:22 -07:00
2026-04-20 15:32:31 -07:00
2026-04-07 14:10:15 -07:00
2026-07-17 12:30:42 -07:00
2025-12-15 11:18:45 -08:00
2026-07-10 16:44:46 -07:00
2026-04-03 16:04:27 -07:00
2026-01-06 00:09:52 -08:00
2026-06-14 13:55:36 -07:00
2026-04-08 13:07:15 -07:00
2026-08-05 00:07:39 -07:00
2026-08-05 00:07:39 -07:00
2025-12-15 11:18:45 -08:00
2025-12-15 11:18:45 -08:00
2025-12-15 11:18:45 -08:00