La semana pasada se fusionó el grueso de los cambios de sched_ext para Linux 7.2, con trabajo continuado en el soporte de sub-planificadores. Linus Torvalds no puso pegas a las funciones de este framework de planificación extensible que se apoya en programas BPF en espacio de usuario. Lo que no tragó fue cómo estaban colocados los ficheros de código fuente.
En el pull request de la semana pasada se añadieron varios ficheros C y de cabecera nuevos con el prefijo ext_ directamente dentro de kernel/sched, en lugar de crear un subdirectorio propio. Torvalds fusionó el código, pero dejó un comentario que no deja lugar a dudas:
create mode 100644 kernel/sched/ext_arena.c create mode 100644 kernel/sched/ext_arena.h create mode 100644 kernel/sched/ext_cid.c create mode 100644 kernel/sched/ext_cid.h create mode 100644 kernel/sched/ext_types.h
Please don’t do this disgusting thing. There’s a reason we have subdirectories: it’s to group files together and separate them out. Using name prefixing instead of directories is disgusting and wrong. If you have this many random sched-ext files, it damn well should be cleaned up and not be this kind of mess. I’ve pulled this, but under protest. Proper hierarchical filesystems have been available since 1965.
Traducido y resumido: para Torvalds, usar prefijos en los nombres en vez de directorios es un error. Si hay tantos ficheros de sched_ext sueltos, lo suyo es agruparlos en una carpeta. Aceptó el merge “bajo protesta” y recordó, con su sorna habitual, que los sistemas de ficheros jerárquicos existen desde 1965.
La reorganización ya está dentro
El mensaje surtió efecto rápido. Hoy se ha enviado un nuevo pull request que reorganiza el árbol de fuentes de sched_ext para usar kernel/sched/ext/ en vez de dejar un montón de ficheros ext_* desperdigados por el directorio común del planificador. Torvalds ya ha fusionado ese código de reestructuración.
El cambio es puramente de organización: mueve ficheros como ext_arena.c, ext_arena.h, ext_cid.c, ext_cid.h o ext_types.h a su nueva carpeta. No toca la funcionalidad de sched_ext ni el soporte de sub-planificadores que llega con esta tanda. Para quien compila el kernel desde fuente o sigue el árbol de Torvalds, lo único que cambia son las rutas de los ficheros.
A quién le importa esto
Si desarrollas planificadores personalizados con sched_ext, mantienes parches sobre el árbol del kernel o simplemente sigues de cerca el desarrollo de Linux 7.2, te conviene tener presente la nueva ubicación bajo kernel/sched/ext/. Para el usuario de escritorio que solo instala el kernel de su distribución, el efecto es nulo: es un cambio interno de estructura de directorios.
El episodio es otro recordatorio de cómo se cuidan las formas en el desarrollo del kernel. La funcionalidad pasó el corte sin problema; lo que no pasó fue el desorden en el árbol de ficheros. Si quieres ponerte al día con lo que trae esta rama, repasa las novedades de Linux 7.1, la versión desde la que se abrió la ventana de fusión de 7.2. Puedes consultar el detalle de versiones en la ficha de Linux Kernel.