Hoe linux kernel wijzigingen nalopen

Pagina: 1
Acties:

  • FireAge
  • Registratie: Augustus 2002
  • Laatst online: 01:53
Ik ben bezig om IMQ aan de praat te krijgen onder de 2.6.28 kernel.
Dit omdat ik wat te enthousiast mijn CRUX installatie van 2.4 -> 2.5 heb geupgrade.
Nu blijkt dat er nog geen patch uit is voor kernels hoger dan 2.6.25.7.

Ik ben bezig om te kijken waar de patch misloopt in de nieuwe kernel.

Foutmelding:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
drivers/net/imq.c: In function 'imq_nf_queue':
drivers/net/imq.c:222: error: 'struct net_device' has no member named 

'queue_lock'
drivers/net/imq.c:223: error: 'struct net_device' has no member named 

'qdisc'
drivers/net/imq.c:234: error: 'struct net_device' has no member named 

'queue_lock'
drivers/net/imq.c: In function 'qdisc_run_tasklet':
drivers/net/imq.c:252: error: 'struct net_device' has no member named 

'queue_lock'
drivers/net/imq.c:253: warning: passing argument 1 of 'qdisc_run' from 

incompatible pointer type
drivers/net/imq.c:255: error: 'struct net_device' has no member named 

'queue_lock'


Nu ben ik in netdevice.h aan het kijken en dan zie ik dat inderdaad kernel 2.6.25.7 dit heeft als onderdeel van struct net_device:
code:
1
2
3
4
5
6
7
8
9
10
11
12
/* ingress path synchronizer */
    spinlock_t      ingress_lock;
    struct Qdisc        *qdisc_ingress;

/*
 * Cache line mostly used on queue transmit path (qdisc)
 */
    /* device queue lock */
    spinlock_t      queue_lock ____cacheline_aligned_in_smp;
    struct Qdisc        *qdisc;
    struct Qdisc        *qdisc_sleeping;
    struct list_head    qdisc_list;

En kernel 2.6.28 heeft dit in zijn geheel niet meer maar in plaats daarvan een nieuwe struct buiten net_device:
code:
1
2
3
4
5
6
7
8
struct netdev_queue {
    struct net_device   *dev;
    struct Qdisc        *qdisc;
    unsigned long       state;
    spinlock_t      _xmit_lock;
    int         xmit_lock_owner;
    struct Qdisc        *qdisc_sleeping;
} ____cacheline_aligned_in_smp;


Nu wil ik dus kijken bij welke kernelversie deze wijziging is ingebracht, maar de enige manier tot nu toe is om alle tussenliggende kernels de downloaden en dan stuk voor stuk de netdevice.h te gaan vergelijken.

Ik heb al geprobeerd de changelogs er op na te slaan, maar daar vind ik het niet in. Bestaat er zoiets als een SVN van de kernel waarin ik in bijv track de wijzigingen op deze file na kan lezen?

Ik weet dat het in 2.6.25.7 goed zit, en inmiddels dat het in 2.6.27 en 2.6.28 "anders" zit ;)

Voordat ik nu in 5x kernel downloaden de juiste kernel vind uit de tussenliggende 22, vroeg ik me af of iemand een andere oplossing weet.

EDIT: Hmm, misschien had ik dit in de devschuur moeten gooien.

  • imp-
  • Registratie: September 2008
  • Laatst online: 18-11-2025
De ontwikkelaars van de linux kernel gebruiken geen svn maar git.

Normaal zou je moeten vinden wat je zoekt op http://git.kernel.org/

[ Voor 17% gewijzigd door imp- op 30-12-2008 21:30 ]


  • Arnout
  • Registratie: December 2000
  • Laatst online: 27-01 21:14

  • FireAge
  • Registratie: Augustus 2002
  • Laatst online: 01:53
Top, dat was inderdaad precies wat ik nodig had.
Toch jammer dat ik dat dan weer niet kon vinden met grote vriend google :/

http://git.kernel.org/?p=...d6d92c8d871377179fd69160f

Daar ging mijn geliefde pointer :)

Dan kan ik er dus vanuit gaan dat alle kernel releases na deze datum deze wijziging bevatten? Of wordt er later nog bekeken of een bepaalde wijziging wel of niet in een kernel gestopt wordt?

EDIT: Ja dus, de wijziging is niet opgenomen in de kernel die na die datum is aangemaakt. Enig idee hoe ik kan zien in welke kernel deze wijziging wel is opgenomen?

[ Voor 15% gewijzigd door FireAge op 30-12-2008 21:54 ]


  • Arnout
  • Registratie: December 2000
  • Laatst online: 27-01 21:14
Als ik via jouw link op 'tree' klik, en dan op de makefile, zie ik versie 2.6.26-rc8 staan.

  • FireAge
  • Registratie: Augustus 2002
  • Laatst online: 01:53
Hmm, dat is wel raar dan, ik zie dat je gelijk hebt.
In versie 2.6.26 van de kernel is de wijziging echter niet opgenomen.

Zelfs in 2.6.26.8 zit hij niet.
En in 2.6.27 zit hij wel.

Dus mijn antwoord heb ik, maar helaas nog niet de juiste methode ;).

Ik moet toch wel even wennen aan git, het is net svn, maar net even niet zoals ik het gewend ben.

  • Arnout
  • Registratie: December 2000
  • Laatst online: 27-01 21:14
de 2.6.26.x versies zijn (kleine) bugfixes.

Het development loopt (dan al) door in de 2.6.27-rc(x) versies. Dus niet naar de 2.6.26.x versies kijken, maar vanaf 2.6.26 --> 2.6.27-rc1 en dan omhoog

  • FireAge
  • Registratie: Augustus 2002
  • Laatst online: 01:53
Ok, maar de 2.6.26-rc8 zit toch wel voor de 2.6.26?
Dus dan had hij daar in moeten zitten?

EDIT: De boel draait nu weer prima, met kernel 2.6.26.8, ik heb de IMQ patch van openwrt aangepast en dat werkt prima. Nu kan ik rustig gaan kijken of ik een patch kan aanpassen voor kernel 2.6.28. Iig bedankt voor de hulp.

[ Voor 55% gewijzigd door FireAge op 30-12-2008 23:21 ]

Pagina: 1