Problem
Currently, autoprune() finds and removes sessions on a per-volume basis. This leads to different sets of sessions being removed for each volume (when those volumes don't have an identical session history, and they often don't).
Desired result
A way to have all volumes taken into account when sessions are considered as pruning candidates, and then the marked sessions removed for all volumes at once. This makes the archive contents more coherent overall, esp. with regard to user expectations and the fact that some volumes (like Qubes -root vols) are often paired with another separate volume.
Since removal of all data for marked sessions so closely matches user expectations, this could become the default way to autoprune.
Implementation ideas
Have autoprune() accept a list of volumes. Extend the date-session tuple to include a weighting factor (a count of volumes in the session) affecting the likelihood that the session will be marked for removal. Possibly reference session objects instead of their names.
When all candidate sessions have been marked, run merge_sessions() for each volume with the usual grouping of adjacent sessions. However, it may be better to cycle through the volumes repeatedly so that each group of sessions is completely removed from the archive before removing the next group.
Problem
Currently, autoprune() finds and removes sessions on a per-volume basis. This leads to different sets of sessions being removed for each volume (when those volumes don't have an identical session history, and they often don't).
Desired result
A way to have all volumes taken into account when sessions are considered as pruning candidates, and then the marked sessions removed for all volumes at once. This makes the archive contents more coherent overall, esp. with regard to user expectations and the fact that some volumes (like Qubes -root vols) are often paired with another separate volume.
Since removal of all data for marked sessions so closely matches user expectations, this could become the default way to autoprune.
Implementation ideas
Have autoprune() accept a list of volumes. Extend the date-session tuple to include a weighting factor (a count of volumes in the session) affecting the likelihood that the session will be marked for removal. Possibly reference session objects instead of their names.
When all candidate sessions have been marked, run merge_sessions() for each volume with the usual grouping of adjacent sessions. However, it may be better to cycle through the volumes repeatedly so that each group of sessions is completely removed from the archive before removing the next group.