IP ToS routing problem and fix
Hi Alexey. I've been having a problem getting ToS routing working properly, well, the way I wanted it to. Basically, it would not route using anything except the RFC 1349 ToS settings. I've prepared the attached patch to add a new configuration option to allow routing based on RFC 2474 Diffserv DSCP values in the IPv4 TOS field. Attached is a test script which works for the following setup. The test machine has eth1 and eth2 on the same ethernet network. There is another machine on the test ethernet network that the test machine pings. The IP addresses used in the setup are: test:eth1 = 192.168.0.1. test:eth2 = 192.168.0.2. target = 192.168.0.3. I've also included the output of the test for an unpatched 2.4.5 system and a patched 2.4.5 system. Please have a look and let me know what you think. I wouldn't promote putting this in the regular kernel until I've let it run around here for a few weeks. cheers -mark -- Mark Frazer <[EMAIL PROTECTED]> # Configure.help needs updating for the new config option. # This option makes the old IP_ROUTE_TOS boolean a choice # option allowing either the old RFC1349 behaviour or the # RFC2474 behaviour. diff -urN linux-2.4.5/Documentation/Configure.help linux-2.4.5-mjf/Documentation/Configure.help --- linux-2.4.5/Documentation/Configure.helpThu May 24 18:03:06 2001 +++ linux-2.4.5-mjf/Documentation/Configure.helpMon Jun 4 18:23:31 2001 @@ -3943,13 +3943,30 @@ equal "cost" and chooses one of them in a non-deterministic fashion if a matching packet arrives. -IP: use TOS value as routing key -CONFIG_IP_ROUTE_TOS - The header of every IP packet carries a TOS (Type Of Service) value +IP: use of TOS value as routing key +CONFIG_IP_ROUTE_TOSNOTUSED + The second octet of the IP header is defined by several Internet RFCs. + The linux routing facility can make a routing decision on several of + the interpretations of this RFC. This second octect in the header was + originally named the Type of Service field in Postel's RFC 971. This + choice allows you to select the treatment you wish to use in your + network. + + None indicates that the ToS field will not be used to make routing + decisions. + + TOS indicates that the ToS field will be treated as specified in + RFC 1349. The header of every IP packet carries a single TOS value with which the packet requests a certain treatment, e.g. low latency - (for interactive traffic), high throughput, or high reliability. If - you say Y here, you will be able to specify different routes for - packets with different TOS values. + (for interactive traffic), high throughput, high reliability, or minimum + cost. These settings are mutually exclusive. Note that the minimum cost + setting is clobbered if ECN is activated. + + DSCP indicates that the ToS field will be treated as specified in + RFC 2474. This selects treating the field as a DiffServ Differentiated + Service Code Point which allow the top 6 bits of the field to be used + to specify a per hop behaviour which is generally set by policy at each + routing point in the network. IP: use netfilter MARK value as routing key CONFIG_IP_ROUTE_FWMARK # Minor fix do netfilter location in the kernel docs. diff -urN linux-2.4.5/Documentation/kernel-docs.txt linux-2.4.5-mjf/Documentation/kernel-docs.txt --- linux-2.4.5/Documentation/kernel-docs.txt Fri Apr 6 13:42:48 2001 +++ linux-2.4.5-mjf/Documentation/kernel-docs.txt Mon May 28 12:37:26 2001 @@ -333,7 +333,8 @@ * Title: "The Kernel Hacking HOWTO" Author: Various Talented People, and Rusty. - URL: http://www.samba.org/~netfilter/kernel-hacking-HOWTO.html + URL: http://netfilter.gnumonks.org/unreliable-guides/kernel-hacking/ + lk-hacking-guide.html Keywords: HOWTO, kernel contexts, deadlock, locking, modules, symbols, return conventions. Description: From the Introduction: "Please understand that I @@ -393,9 +394,8 @@ * Title: "Linux Kernel Locking HOWTO" Author: Various Talented People, and Rusty. - URL: - http://netfilter.kernelnotes.org/unreliable-guides/kernel-locking- - HOWTO.html + URL: http://netfilter.gnumonks.org/unreliable-guides/kernel-locking/ + lklockingguide.html Keywords: locks, locking, spinlock, semaphore, atomic, race condition, bottom halves, tasklets, softirqs. Description: The title says it all: document describing the # I've placed the mask for valid DSCP values here. diff -urN linux-2.4.5/include/linux/ip.h linux-2.4.5-mjf/include/linux/ip.h --- linux-2.4.5/include/linux/ip.h Fri May 25 21:01:27 2001 +++ linux-2.4.5-mjf/include/linux/ip.h Mon Jun 4 18:31:30 2001 @@ -38,6 +38,8 @@ #define IPTOS_PREC_PRIORITY 0x20 #define IPTOS_PREC_ROUTINE 0x00 +/* RFC 2474 Diffserv code point */ +#define IPTOS_DSCP_MASK
IP ToS routing problem and fix
Hi Alexey. I've been having a problem getting ToS routing working properly, well, the way I wanted it to. Basically, it would not route using anything except the RFC 1349 ToS settings. I've prepared the attached patch to add a new configuration option to allow routing based on RFC 2474 Diffserv DSCP values in the IPv4 TOS field. Attached is a test script which works for the following setup. The test machine has eth1 and eth2 on the same ethernet network. There is another machine on the test ethernet network that the test machine pings. The IP addresses used in the setup are: test:eth1 = 192.168.0.1. test:eth2 = 192.168.0.2. target = 192.168.0.3. I've also included the output of the test for an unpatched 2.4.5 system and a patched 2.4.5 system. Please have a look and let me know what you think. I wouldn't promote putting this in the regular kernel until I've let it run around here for a few weeks. cheers -mark -- Mark Frazer [EMAIL PROTECTED] # Configure.help needs updating for the new config option. # This option makes the old IP_ROUTE_TOS boolean a choice # option allowing either the old RFC1349 behaviour or the # RFC2474 behaviour. diff -urN linux-2.4.5/Documentation/Configure.help linux-2.4.5-mjf/Documentation/Configure.help --- linux-2.4.5/Documentation/Configure.helpThu May 24 18:03:06 2001 +++ linux-2.4.5-mjf/Documentation/Configure.helpMon Jun 4 18:23:31 2001 @@ -3943,13 +3943,30 @@ equal cost and chooses one of them in a non-deterministic fashion if a matching packet arrives. -IP: use TOS value as routing key -CONFIG_IP_ROUTE_TOS - The header of every IP packet carries a TOS (Type Of Service) value +IP: use of TOS value as routing key +CONFIG_IP_ROUTE_TOSNOTUSED + The second octet of the IP header is defined by several Internet RFCs. + The linux routing facility can make a routing decision on several of + the interpretations of this RFC. This second octect in the header was + originally named the Type of Service field in Postel's RFC 971. This + choice allows you to select the treatment you wish to use in your + network. + + None indicates that the ToS field will not be used to make routing + decisions. + + TOS indicates that the ToS field will be treated as specified in + RFC 1349. The header of every IP packet carries a single TOS value with which the packet requests a certain treatment, e.g. low latency - (for interactive traffic), high throughput, or high reliability. If - you say Y here, you will be able to specify different routes for - packets with different TOS values. + (for interactive traffic), high throughput, high reliability, or minimum + cost. These settings are mutually exclusive. Note that the minimum cost + setting is clobbered if ECN is activated. + + DSCP indicates that the ToS field will be treated as specified in + RFC 2474. This selects treating the field as a DiffServ Differentiated + Service Code Point which allow the top 6 bits of the field to be used + to specify a per hop behaviour which is generally set by policy at each + routing point in the network. IP: use netfilter MARK value as routing key CONFIG_IP_ROUTE_FWMARK # Minor fix do netfilter location in the kernel docs. diff -urN linux-2.4.5/Documentation/kernel-docs.txt linux-2.4.5-mjf/Documentation/kernel-docs.txt --- linux-2.4.5/Documentation/kernel-docs.txt Fri Apr 6 13:42:48 2001 +++ linux-2.4.5-mjf/Documentation/kernel-docs.txt Mon May 28 12:37:26 2001 @@ -333,7 +333,8 @@ * Title: The Kernel Hacking HOWTO Author: Various Talented People, and Rusty. - URL: http://www.samba.org/~netfilter/kernel-hacking-HOWTO.html + URL: http://netfilter.gnumonks.org/unreliable-guides/kernel-hacking/ + lk-hacking-guide.html Keywords: HOWTO, kernel contexts, deadlock, locking, modules, symbols, return conventions. Description: From the Introduction: Please understand that I @@ -393,9 +394,8 @@ * Title: Linux Kernel Locking HOWTO Author: Various Talented People, and Rusty. - URL: - http://netfilter.kernelnotes.org/unreliable-guides/kernel-locking- - HOWTO.html + URL: http://netfilter.gnumonks.org/unreliable-guides/kernel-locking/ + lklockingguide.html Keywords: locks, locking, spinlock, semaphore, atomic, race condition, bottom halves, tasklets, softirqs. Description: The title says it all: document describing the # I've placed the mask for valid DSCP values here. diff -urN linux-2.4.5/include/linux/ip.h linux-2.4.5-mjf/include/linux/ip.h --- linux-2.4.5/include/linux/ip.h Fri May 25 21:01:27 2001 +++ linux-2.4.5-mjf/include/linux/ip.h Mon Jun 4 18:31:30 2001 @@ -38,6 +38,8 @@ #define IPTOS_PREC_PRIORITY 0x20 #define IPTOS_PREC_ROUTINE 0x00 +/* RFC 2474 Diffserv code point */ +#define IPTOS_DSCP_MASK0xFC /* IP options */ #define IPOPT_COPY
Re: [PATCH] support for Cobalt Networks (x86 only) systems (for
Alan Cox <[EMAIL PROTECTED]> [01/06/01 10:32]: > > No way! If I implement a HA application which depends on link status, I > > want the info to be accurate, I don't want to know that 30 seconds ago I > > had good link. > > > > IMHO, rate limiting is the only solution. > > Please re-read your comment. Then think about it. Then tell me how rate limiting > differs from caching to the application. > I'd argue for rate limiting as the application only gets back new data, never a cached value n times in a row. With caching, you'd have to let the application know when the cached value was last read and how long it will be cached for. With rate limiting, you'd just block the app and get the new data to the app once the timer has expired. Or, if the app doesn't read the data until after the timer has expired, it will not block at all. Seems to me that you'd have less redundant application processing with rate limiting. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] support for Cobalt Networks (x86 only) systems (for
Alan Cox [EMAIL PROTECTED] [01/06/01 10:32]: No way! If I implement a HA application which depends on link status, I want the info to be accurate, I don't want to know that 30 seconds ago I had good link. IMHO, rate limiting is the only solution. Please re-read your comment. Then think about it. Then tell me how rate limiting differs from caching to the application. I'd argue for rate limiting as the application only gets back new data, never a cached value n times in a row. With caching, you'd have to let the application know when the cached value was last read and how long it will be cached for. With rate limiting, you'd just block the app and get the new data to the app once the timer has expired. Or, if the app doesn't read the data until after the timer has expired, it will not block at all. Seems to me that you'd have less redundant application processing with rate limiting. - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: Makefile patch for cscope and saner Ctags
Khachaturov, Vassilii <[EMAIL PROTECTED]> [01/05/31 15:00]: > Don't forget to bug RH package maintainer on that. Whatever bugzilla submitted > I use source-built cscope v.15.1, and -k works for me here, works for me too! > WHY?! Isn't it better to put $(shell cat cscope.files) on the list of I only have a yellow belt in makefile kungfu. These fancy gnu make things are relatively new to some of us... The latest patch is attached. include/linux/compile.h seems to get built whenever I run make, so that's why I've excluded it from the deps for cscope.out. --- Makefile.oldMon May 28 22:44:01 2001 +++ MakefileThu May 31 16:29:38 2001 @@ -334,10 +334,41 @@ # Exuberant ctags works better with -I tags: dummy - CTAGSF=`ctags --version | grep -i exuberant >/dev/null && echo "-I __initdata,__exitdata,EXPORT_SYMBOL,EXPORT_SYMBOL_NOVERS"`; \ + CTAGSF=`ctags --version | grep -i exuberant >/dev/null && echo "--sort=no -I +__initdata,__exitdata,EXPORT_SYMBOL,EXPORT_SYMBOL_NOVERS"`; \ ctags $$CTAGSF `find include/asm-$(ARCH) -name '*.h'` && \ - find include -type d \( -name "asm-*" -o -name config \) -prune -o -name '*.h' -print | xargs ctags $$CTAGSF -a && \ + find include -type f -name '*.h' -mindepth 2 -maxdepth 2 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a && \ + find include -type f -name '*.h' -mindepth 3 -maxdepth 3 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a && \ + find include -type f -name '*.h' -mindepth 4 -maxdepth 4 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a && \ + find include -type f -name '*.h' -mindepth 5 -maxdepth 5 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a && \ find $(SUBDIRS) init -name '*.c' | xargs ctags $$CTAGSF -a + mv tags tags.unsorted + LC_ALL=C sort -k 1,1 -s tags.unsorted > tags + rm tags.unsorted + +cscope.files: dummy + @find include/asm-$(ARCH) -name '*.h' >.cscope.files + @find include $(SUBDIRS) init -type f -name '*.[ch]' \ + | grep -v include/asm- | grep -v include/config >> .cscope.files + @[ -f cscope.files ] || touch cscope.files + @if cmp -s .cscope.files cscope.files ; then \ + /bin/rm .cscope.files ; \ + else \ + rm cscope.files ; mv .cscope.files cscope.files ; \ + fi + +.PHONY: cscope +cscope: cscope.out +cscope.out: cscope.files \ +$(shell [ -f cscope.files ] && grep -v include/linux/compile.h cscope.files) + cscope -k -b -I include ifdef CONFIG_MODULES ifdef CONFIG_MODVERSIONS @@ -416,7 +447,8 @@ distclean: mrproper rm -f core `find . \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ - -o -name '.*.rej' -o -name '.SUMS' -o -size 0 \) -type f -print` TAGS tags + -o -name '.*.rej' -o -name '.SUMS' -o -size 0 \) -type f -print` TAGS +tags \ + cscope.files cscope.out backup: mrproper cd .. && tar cf - linux/ | gzip -9 > backup.gz
Re: Makefile patch for cscope and saner Ctags
Pete Wyckoff <[EMAIL PROTECTED]> [01/05/31 13:56]: > > You seem not to have read my response to your earlier mail proprosing > such a thing (for tags only, not cscope): > > http://boudicca.tux.org/hypermail/linux-kernel/2001week21/1869.html I did. I didn't want to sign up to maintain the ctags-ignore file though. > > How does the patch above fix anything? You're sorting so that > include/linux/*.h comes before include/linux/{mtd,lockd,raid,...}/*.h, > but I don't see how that can be an improvement, or how it addresses > your original complaint "ctags doesn't honour any CPP #if'ing". The sort -s is a stable sort, so by putting things into ctags in the order I want them to appear in my tags file I get what I want. YMMV My original complaint ain't gonna get fixed anytime soon. Your script is definitely a better solution IMO. -mark - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: Makefile patch for cscope and saner Ctags
Khachaturov, Vassilii <[EMAIL PROTECTED]> [01/05/31 12:12]: > Great stuff. May I suggest adding -k to the cscope cmdline: > > > + cscope -b -I include > > should become > + cscope -b -k -I include The cscope on my RH7.0 box didn't take -k! [root@mjftest linux-2.4.5]# ls -l cscope.files -rw-r--r--1 root root 105530 May 30 17:58 cscope.files [root@mjftest linux-2.4.5]# cscope -b -k -I include cscope: unknown option: -k Usage: cscope [-bcCdelLqTuUV] [-f file] [-F file] [-i file] [-I dir] [-s dir] [-p number] [-P path] [-[0-8] pattern] [source files] [root@mjftest linux-2.4.5]# which cscope /usr/bin/cscope [root@mjftest linux-2.4.5]# rpm -qf /usr/bin/cscope cscope-13.0-6 weird, as man cscope documents -k's existence > > Also, I think you should separate cscope.files creation into a different > rule, > and make the cscope target depend on it and on the files in it. (Like the > stuff > with .flags) I didn't see a way to add >>'ing the file to cscope.files without greping for it's entrance there already. So I've left the find ... method of creating cscope.files. cscope.out is now built by a shell command which does the checking against the age of the files in cscope.files > > The new .files should be created in a different file, and the old file > shouldn't > be replaced if there's no change. > > Lastly, you need to clean up. I think cscope.out should be cleaned up > in the clean target, while the cscope.files should probably should only be > cleaned on rmproper or such. > > Vassilii Backout the old patch and try this one. --- Makefile.oldMon May 28 22:44:01 2001 +++ MakefileThu May 31 14:02:30 2001 @@ -334,11 +334,41 @@ # Exuberant ctags works better with -I tags: dummy - CTAGSF=`ctags --version | grep -i exuberant >/dev/null && echo "-I __initdata,__exitdata,EXPORT_SYMBOL,EXPORT_SYMBOL_NOVERS"`; \ + CTAGSF=`ctags --version | grep -i exuberant >/dev/null && echo "--sort=no -I +__initdata,__exitdata,EXPORT_SYMBOL,EXPORT_SYMBOL_NOVERS"`; \ ctags $$CTAGSF `find include/asm-$(ARCH) -name '*.h'` && \ - find include -type d \( -name "asm-*" -o -name config \) -prune -o -name '*.h' -print | xargs ctags $$CTAGSF -a && \ + find include -type f -name '*.h' -mindepth 2 -maxdepth 2 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a && \ + find include -type f -name '*.h' -mindepth 3 -maxdepth 3 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a && \ + find include -type f -name '*.h' -mindepth 4 -maxdepth 4 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a && \ + find include -type f -name '*.h' -mindepth 5 -maxdepth 5 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a && \ find $(SUBDIRS) init -name '*.c' | xargs ctags $$CTAGSF -a - + mv tags tags.unsorted + LC_ALL=C sort -k 1,1 -s tags.unsorted > tags + rm tags.unsorted + +cscope.files: + find include/asm-$(ARCH) -name '*.h' >cscope.files + find include $(SUBDIRS) init -type f -name '*.[ch]' \ + | grep -v include/asm- | grep -v include/config >> cscope.files + +cscope.out: cscope.files dummy + @while read file ; do \ + if [ $$file -nt cscope.out ] ; then\ + cscope -b -I include ; \ + break ; \ + fi ; \ + done backup.gz - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: Makefile patch for cscope and saner Ctags
Khachaturov, Vassilii [EMAIL PROTECTED] [01/05/31 12:12]: Great stuff. May I suggest adding -k to the cscope cmdline: + cscope -b -I include should become + cscope -b -k -I include The cscope on my RH7.0 box didn't take -k! [root@mjftest linux-2.4.5]# ls -l cscope.files -rw-r--r--1 root root 105530 May 30 17:58 cscope.files [root@mjftest linux-2.4.5]# cscope -b -k -I include cscope: unknown option: -k Usage: cscope [-bcCdelLqTuUV] [-f file] [-F file] [-i file] [-I dir] [-s dir] [-p number] [-P path] [-[0-8] pattern] [source files] [root@mjftest linux-2.4.5]# which cscope /usr/bin/cscope [root@mjftest linux-2.4.5]# rpm -qf /usr/bin/cscope cscope-13.0-6 weird, as man cscope documents -k's existence Also, I think you should separate cscope.files creation into a different rule, and make the cscope target depend on it and on the files in it. (Like the stuff with .flags) I didn't see a way to add 'ing the file to cscope.files without greping for it's entrance there already. So I've left the find ... method of creating cscope.files. cscope.out is now built by a shell command which does the checking against the age of the files in cscope.files The new .files should be created in a different file, and the old file shouldn't be replaced if there's no change. Lastly, you need to clean up. I think cscope.out should be cleaned up in the clean target, while the cscope.files should probably should only be cleaned on rmproper or such. Vassilii Backout the old patch and try this one. --- Makefile.oldMon May 28 22:44:01 2001 +++ MakefileThu May 31 14:02:30 2001 @@ -334,11 +334,41 @@ # Exuberant ctags works better with -I tags: dummy - CTAGSF=`ctags --version | grep -i exuberant /dev/null echo -I __initdata,__exitdata,EXPORT_SYMBOL,EXPORT_SYMBOL_NOVERS`; \ + CTAGSF=`ctags --version | grep -i exuberant /dev/null echo --sort=no -I +__initdata,__exitdata,EXPORT_SYMBOL,EXPORT_SYMBOL_NOVERS`; \ ctags $$CTAGSF `find include/asm-$(ARCH) -name '*.h'` \ - find include -type d \( -name asm-* -o -name config \) -prune -o -name '*.h' -print | xargs ctags $$CTAGSF -a \ + find include -type f -name '*.h' -mindepth 2 -maxdepth 2 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a \ + find include -type f -name '*.h' -mindepth 3 -maxdepth 3 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a \ + find include -type f -name '*.h' -mindepth 4 -maxdepth 4 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a \ + find include -type f -name '*.h' -mindepth 5 -maxdepth 5 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a \ find $(SUBDIRS) init -name '*.c' | xargs ctags $$CTAGSF -a - + mv tags tags.unsorted + LC_ALL=C sort -k 1,1 -s tags.unsorted tags + rm tags.unsorted + +cscope.files: + find include/asm-$(ARCH) -name '*.h' cscope.files + find include $(SUBDIRS) init -type f -name '*.[ch]' \ + | grep -v include/asm- | grep -v include/config cscope.files + +cscope.out: cscope.files dummy + @while read file ; do \ + if [ $$file -nt cscope.out ] ; then\ + cscope -b -I include ; \ + break ; \ + fi ; \ + done cscope.files + +.PHONY: scsope +cscope: cscope.out + ifdef CONFIG_MODULES ifdef CONFIG_MODVERSIONS MODFLAGS += -DMODVERSIONS -include $(HPATH)/linux/modversions.h @@ -416,7 +446,8 @@ distclean: mrproper rm -f core `find . \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ - -o -name '.*.rej' -o -name '.SUMS' -o -size 0 \) -type f -print` TAGS tags + -o -name '.*.rej' -o -name '.SUMS' -o -size 0 \) -type f -print` TAGS +tags \ + cscope.files cscope.out backup: mrproper cd .. tar cf - linux/ | gzip -9 backup.gz - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: Makefile patch for cscope and saner Ctags
Pete Wyckoff [EMAIL PROTECTED] [01/05/31 13:56]: You seem not to have read my response to your earlier mail proprosing such a thing (for tags only, not cscope): http://boudicca.tux.org/hypermail/linux-kernel/2001week21/1869.html I did. I didn't want to sign up to maintain the ctags-ignore file though. How does the patch above fix anything? You're sorting so that include/linux/*.h comes before include/linux/{mtd,lockd,raid,...}/*.h, but I don't see how that can be an improvement, or how it addresses your original complaint ctags doesn't honour any CPP #if'ing. The sort -s is a stable sort, so by putting things into ctags in the order I want them to appear in my tags file I get what I want. YMMV My original complaint ain't gonna get fixed anytime soon. Your script is definitely a better solution IMO. -mark - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: Makefile patch for cscope and saner Ctags
Khachaturov, Vassilii [EMAIL PROTECTED] [01/05/31 15:00]: Don't forget to bug RH package maintainer on that. Whatever bugzilla submitted I use source-built cscope v.15.1, and -k works for me here, works for me too! WHY?! Isn't it better to put $(shell cat cscope.files) on the list of I only have a yellow belt in makefile kungfu. These fancy gnu make things are relatively new to some of us... The latest patch is attached. include/linux/compile.h seems to get built whenever I run make, so that's why I've excluded it from the deps for cscope.out. --- Makefile.oldMon May 28 22:44:01 2001 +++ MakefileThu May 31 16:29:38 2001 @@ -334,10 +334,41 @@ # Exuberant ctags works better with -I tags: dummy - CTAGSF=`ctags --version | grep -i exuberant /dev/null echo -I __initdata,__exitdata,EXPORT_SYMBOL,EXPORT_SYMBOL_NOVERS`; \ + CTAGSF=`ctags --version | grep -i exuberant /dev/null echo --sort=no -I +__initdata,__exitdata,EXPORT_SYMBOL,EXPORT_SYMBOL_NOVERS`; \ ctags $$CTAGSF `find include/asm-$(ARCH) -name '*.h'` \ - find include -type d \( -name asm-* -o -name config \) -prune -o -name '*.h' -print | xargs ctags $$CTAGSF -a \ + find include -type f -name '*.h' -mindepth 2 -maxdepth 2 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a \ + find include -type f -name '*.h' -mindepth 3 -maxdepth 3 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a \ + find include -type f -name '*.h' -mindepth 4 -maxdepth 4 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a \ + find include -type f -name '*.h' -mindepth 5 -maxdepth 5 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a \ find $(SUBDIRS) init -name '*.c' | xargs ctags $$CTAGSF -a + mv tags tags.unsorted + LC_ALL=C sort -k 1,1 -s tags.unsorted tags + rm tags.unsorted + +cscope.files: dummy + @find include/asm-$(ARCH) -name '*.h' .cscope.files + @find include $(SUBDIRS) init -type f -name '*.[ch]' \ + | grep -v include/asm- | grep -v include/config .cscope.files + @[ -f cscope.files ] || touch cscope.files + @if cmp -s .cscope.files cscope.files ; then \ + /bin/rm .cscope.files ; \ + else \ + rm cscope.files ; mv .cscope.files cscope.files ; \ + fi + +.PHONY: cscope +cscope: cscope.out +cscope.out: cscope.files \ +$(shell [ -f cscope.files ] grep -v include/linux/compile.h cscope.files) + cscope -k -b -I include ifdef CONFIG_MODULES ifdef CONFIG_MODVERSIONS @@ -416,7 +447,8 @@ distclean: mrproper rm -f core `find . \( -name '*.orig' -o -name '*.rej' -o -name '*~' \ -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \ - -o -name '.*.rej' -o -name '.SUMS' -o -size 0 \) -type f -print` TAGS tags + -o -name '.*.rej' -o -name '.SUMS' -o -size 0 \) -type f -print` TAGS +tags \ + cscope.files cscope.out backup: mrproper cd .. tar cf - linux/ | gzip -9 backup.gz
Makefile patch for cscope and saner Ctags
The following patch generates saner Ctags and will build cscope output. It's against 2.4.5 --- Makefile.oldMon May 28 22:44:01 2001 +++ MakefileWed May 30 17:50:01 2001 @@ -334,11 +334,32 @@ # Exuberant ctags works better with -I tags: dummy - CTAGSF=`ctags --version | grep -i exuberant >/dev/null && echo "-I __initdata,__exitdata,EXPORT_SYMBOL,EXPORT_SYMBOL_NOVERS"`; \ + CTAGSF=`ctags --version | grep -i exuberant >/dev/null && echo "--sort=no -I +__initdata,__exitdata,EXPORT_SYMBOL,EXPORT_SYMBOL_NOVERS"`; \ ctags $$CTAGSF `find include/asm-$(ARCH) -name '*.h'` && \ - find include -type d \( -name "asm-*" -o -name config \) -prune -o -name '*.h' -print | xargs ctags $$CTAGSF -a && \ + find include -type f -name '*.h' -mindepth 2 -maxdepth 2 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a && \ + find include -type f -name '*.h' -mindepth 3 -maxdepth 3 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a && \ + find include -type f -name '*.h' -mindepth 4 -maxdepth 4 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a && \ + find include -type f -name '*.h' -mindepth 5 -maxdepth 5 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a && \ find $(SUBDIRS) init -name '*.c' | xargs ctags $$CTAGSF -a + mv tags tags.unsorted + LC_ALL=C sort -k 1,1 -s tags.unsorted > tags + rm tags.unsorted +cscope: dummy + find include/asm-$(ARCH) -name '*.h' >cscope.files + find include $(SUBDIRS) init -type f -name '*.[ch]' \ + | grep -v include/asm- | grep -v include/config >> cscope.files + cscope -b -I include + + ifdef CONFIG_MODULES ifdef CONFIG_MODVERSIONS MODFLAGS += -DMODVERSIONS -include $(HPATH)/linux/modversions.h - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Makefile patch for cscope and saner Ctags
The following patch generates saner Ctags and will build cscope output. It's against 2.4.5 --- Makefile.oldMon May 28 22:44:01 2001 +++ MakefileWed May 30 17:50:01 2001 @@ -334,11 +334,32 @@ # Exuberant ctags works better with -I tags: dummy - CTAGSF=`ctags --version | grep -i exuberant /dev/null echo -I __initdata,__exitdata,EXPORT_SYMBOL,EXPORT_SYMBOL_NOVERS`; \ + CTAGSF=`ctags --version | grep -i exuberant /dev/null echo --sort=no -I +__initdata,__exitdata,EXPORT_SYMBOL,EXPORT_SYMBOL_NOVERS`; \ ctags $$CTAGSF `find include/asm-$(ARCH) -name '*.h'` \ - find include -type d \( -name asm-* -o -name config \) -prune -o -name '*.h' -print | xargs ctags $$CTAGSF -a \ + find include -type f -name '*.h' -mindepth 2 -maxdepth 2 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a \ + find include -type f -name '*.h' -mindepth 3 -maxdepth 3 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a \ + find include -type f -name '*.h' -mindepth 4 -maxdepth 4 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a \ + find include -type f -name '*.h' -mindepth 5 -maxdepth 5 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a \ find $(SUBDIRS) init -name '*.c' | xargs ctags $$CTAGSF -a + mv tags tags.unsorted + LC_ALL=C sort -k 1,1 -s tags.unsorted tags + rm tags.unsorted +cscope: dummy + find include/asm-$(ARCH) -name '*.h' cscope.files + find include $(SUBDIRS) init -type f -name '*.[ch]' \ + | grep -v include/asm- | grep -v include/config cscope.files + cscope -b -I include + + ifdef CONFIG_MODULES ifdef CONFIG_MODVERSIONS MODFLAGS += -DMODVERSIONS -include $(HPATH)/linux/modversions.h - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
ctags as generated by make tags
Anyone have any good tips on getting tags to generate nicely? I'm having some problems with some tags for macros and such being declared in several places since ctags doesn't honour any CPP #if'ing. I've currently got my Makefile doing this, which seems to give me some sanity as the redefinitions tend to be made by drivers and such. I'm basically walking the include tree by depth without doing any sorting of tags and then doing a stable sort on the final tags file. --- Makefile.oldMon May 28 22:44:01 2001 +++ MakefileMon May 28 23:19:07 2001 @@ -334,10 +334,28 @@ # Exuberant ctags works better with -I tags: dummy - CTAGSF=`ctags --version | grep -i exuberant >/dev/null && echo "-I __initdata,__exitdata,EXPORT_SYMBOL,EXPORT_SYMBOL_NOVERS"`; \ + CTAGSF=`ctags --version | grep -i exuberant >/dev/null && echo "--sort=no -I +__initdata,__exitdata,EXPORT_SYMBOL,EXPORT_SYMBOL_NOVERS"`; \ ctags $$CTAGSF `find include/asm-$(ARCH) -name '*.h'` && \ - find include -type d \( -name "asm-*" -o -name config \) -prune -o -name '*.h' -print | xargs ctags $$CTAGSF -a && \ + find include -type f -name '*.h' -mindepth 2 -maxdepth 2 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a && \ + find include -type f -name '*.h' -mindepth 3 -maxdepth 3 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a && \ + find include -type f -name '*.h' -mindepth 4 -maxdepth 4 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a && \ + find include -type f -name '*.h' -mindepth 5 -maxdepth 5 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a && \ find $(SUBDIRS) init -name '*.c' | xargs ctags $$CTAGSF -a + mv tags tags.unsorted + LC_ALL=C sort -k 1,1 -s tags.unsorted > tags + rm tags.unsorted + +# +#find include -type d \( -name "asm-*" -o -name config \) -prune -o -name '*.h' +-print | xargs ctags $$CTAGSF -a && \ +# ifdef CONFIG_MODULES ifdef CONFIG_MODVERSIONS Anyone else doing anything smarter? - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] Documentation/kernel-docs.txt
Oops, that was wrong. The proper patch is: --- Documentation/kernel-docs.txt.old Mon May 28 12:06:43 2001 +++ Documentation/kernel-docs.txt Mon May 28 12:37:26 2001 @@ -333,7 +333,8 @@ * Title: "The Kernel Hacking HOWTO" Author: Various Talented People, and Rusty. - URL: http://www.samba.org/~netfilter/kernel-hacking-HOWTO.html + URL: http://netfilter.gnumonks.org/unreliable-guides/kernel-hacking/ + lk-hacking-guide.html Keywords: HOWTO, kernel contexts, deadlock, locking, modules, symbols, return conventions. Description: From the Introduction: "Please understand that I @@ -393,9 +394,8 @@ * Title: "Linux Kernel Locking HOWTO" Author: Various Talented People, and Rusty. - URL: - http://netfilter.kernelnotes.org/unreliable-guides/kernel-locking- - HOWTO.html + URL: http://netfilter.gnumonks.org/unreliable-guides/kernel-locking/ + lklockingguide.html Keywords: locks, locking, spinlock, semaphore, atomic, race condition, bottom halves, tasklets, softirqs. Description: The title says it all: document describing the - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] Documentation/kernel-docs.txt
Oops, that was wrong. The proper patch is: --- Documentation/kernel-docs.txt.old Mon May 28 12:06:43 2001 +++ Documentation/kernel-docs.txt Mon May 28 12:37:26 2001 @@ -333,7 +333,8 @@ * Title: The Kernel Hacking HOWTO Author: Various Talented People, and Rusty. - URL: http://www.samba.org/~netfilter/kernel-hacking-HOWTO.html + URL: http://netfilter.gnumonks.org/unreliable-guides/kernel-hacking/ + lk-hacking-guide.html Keywords: HOWTO, kernel contexts, deadlock, locking, modules, symbols, return conventions. Description: From the Introduction: Please understand that I @@ -393,9 +394,8 @@ * Title: Linux Kernel Locking HOWTO Author: Various Talented People, and Rusty. - URL: - http://netfilter.kernelnotes.org/unreliable-guides/kernel-locking- - HOWTO.html + URL: http://netfilter.gnumonks.org/unreliable-guides/kernel-locking/ + lklockingguide.html Keywords: locks, locking, spinlock, semaphore, atomic, race condition, bottom halves, tasklets, softirqs. Description: The title says it all: document describing the - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
ctags as generated by make tags
Anyone have any good tips on getting tags to generate nicely? I'm having some problems with some tags for macros and such being declared in several places since ctags doesn't honour any CPP #if'ing. I've currently got my Makefile doing this, which seems to give me some sanity as the redefinitions tend to be made by drivers and such. I'm basically walking the include tree by depth without doing any sorting of tags and then doing a stable sort on the final tags file. --- Makefile.oldMon May 28 22:44:01 2001 +++ MakefileMon May 28 23:19:07 2001 @@ -334,10 +334,28 @@ # Exuberant ctags works better with -I tags: dummy - CTAGSF=`ctags --version | grep -i exuberant /dev/null echo -I __initdata,__exitdata,EXPORT_SYMBOL,EXPORT_SYMBOL_NOVERS`; \ + CTAGSF=`ctags --version | grep -i exuberant /dev/null echo --sort=no -I +__initdata,__exitdata,EXPORT_SYMBOL,EXPORT_SYMBOL_NOVERS`; \ ctags $$CTAGSF `find include/asm-$(ARCH) -name '*.h'` \ - find include -type d \( -name asm-* -o -name config \) -prune -o -name '*.h' -print | xargs ctags $$CTAGSF -a \ + find include -type f -name '*.h' -mindepth 2 -maxdepth 2 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a \ + find include -type f -name '*.h' -mindepth 3 -maxdepth 3 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a \ + find include -type f -name '*.h' -mindepth 4 -maxdepth 4 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a \ + find include -type f -name '*.h' -mindepth 5 -maxdepth 5 \ + | grep -v include/asm- | grep -v include/config \ + | xargs -r ctags $$CTAGSF -a \ find $(SUBDIRS) init -name '*.c' | xargs ctags $$CTAGSF -a + mv tags tags.unsorted + LC_ALL=C sort -k 1,1 -s tags.unsorted tags + rm tags.unsorted + +# +#find include -type d \( -name asm-* -o -name config \) -prune -o -name '*.h' +-print | xargs ctags $$CTAGSF -a \ +# ifdef CONFIG_MODULES ifdef CONFIG_MODVERSIONS Anyone else doing anything smarter? - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: Big-ish SCSI disks
Greg Johnson <[EMAIL PROTECTED]> [01/05/25 08:51]: > Have you experienced any issues like this? > Have you successfuly built a kernel that booted on these machines? I'm also a user of the machine Scott mentioned. We're booting it off of a smaller scsi disk, not the 76G disks. The disks are partitioned as [mjfrazer@pyle mjfrazer]$ cat /proc/partitions major minor #blocks name rio rmerge rsect ruse wio wmerge wsect wuse running use aveq 8 08969493 sda 381817 450620 6656780 2095010 544380 197071 5968764 25617960 0 3648250 27741440 8 1 40131 sda1 68 382 900 680 58 23 164 5210 0 5780 5890 8 2 1 sda2 1 0 2 0 0 0 0 0 0 0 0 8 56835626 sda5 378536 446124 6597282 2077550 543908 194587 5945600 25601060 0 3635020 27707080 8 62088418 sda6 3211 4114 58594 16790 414 2461 23000 11750 0 17190 28540 816 71687369 sdb 5644131 6544183 97506292 29459090 4734971 25903242 245412336 901326350 0 38801430 931623210 817 71681998 sdb1 5644130 6544183 97506290 29459520 4734971 25903242 245412336 901326750 0 38801290 931623950 832 71687369 sdc 5647535 6545287 97542738 29398000 4707634 25931186 245412336 931729050 0 39181580 962005610 833 71681998 sdc1 5647534 6545287 97542736 29398380 4707634 25931186 245412336 931729530 0 39181540 962005420 9 0 71681920 md0 0 0 0 0 0 0 0 0 0 0 0 [mjfrazer@pyle mjfrazer]$ -mark > Quoth Scott Murray: > > > > I set up a machine at work a few months ago with two Seagate 73GB > > Ultra160 drives (model ST173404LW) using the Adaptec AIC-7899 adapter > > on board a ServerWorks LE chipset based motherboard. Everything has > > been working fine using the stock RedHat 7.0 2.2.16-22smp kernel. I > > also played with some 2.4.1-ac kernels to try out ReiserFS, and also > > had no problems using the disks. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: Big-ish SCSI disks
Greg Johnson [EMAIL PROTECTED] [01/05/25 08:51]: Have you experienced any issues like this? Have you successfuly built a kernel that booted on these machines? I'm also a user of the machine Scott mentioned. We're booting it off of a smaller scsi disk, not the 76G disks. The disks are partitioned as [mjfrazer@pyle mjfrazer]$ cat /proc/partitions major minor #blocks name rio rmerge rsect ruse wio wmerge wsect wuse running use aveq 8 08969493 sda 381817 450620 6656780 2095010 544380 197071 5968764 25617960 0 3648250 27741440 8 1 40131 sda1 68 382 900 680 58 23 164 5210 0 5780 5890 8 2 1 sda2 1 0 2 0 0 0 0 0 0 0 0 8 56835626 sda5 378536 446124 6597282 2077550 543908 194587 5945600 25601060 0 3635020 27707080 8 62088418 sda6 3211 4114 58594 16790 414 2461 23000 11750 0 17190 28540 816 71687369 sdb 5644131 6544183 97506292 29459090 4734971 25903242 245412336 901326350 0 38801430 931623210 817 71681998 sdb1 5644130 6544183 97506290 29459520 4734971 25903242 245412336 901326750 0 38801290 931623950 832 71687369 sdc 5647535 6545287 97542738 29398000 4707634 25931186 245412336 931729050 0 39181580 962005610 833 71681998 sdc1 5647534 6545287 97542736 29398380 4707634 25931186 245412336 931729530 0 39181540 962005420 9 0 71681920 md0 0 0 0 0 0 0 0 0 0 0 0 [mjfrazer@pyle mjfrazer]$ -mark Quoth Scott Murray: I set up a machine at work a few months ago with two Seagate 73GB Ultra160 drives (model ST173404LW) using the Adaptec AIC-7899 adapter on board a ServerWorks LE chipset based motherboard. Everything has been working fine using the stock RedHat 7.0 2.2.16-22smp kernel. I also played with some 2.4.1-ac kernels to try out ReiserFS, and also had no problems using the disks. - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: LANANA: To Pending Device Number Registrants
Linus Torvalds <[EMAIL PROTECTED]> [01/05/15 16:28]: > > The "eth0..N" naming is done RIGHT! Nothing to do with the kernel but, one should then argue that the current stuff in /etc/sysconfig/network-scripts is broken for hotplug as placing a new network adapter into your bus will renumber your interfaces causing them to be ifconfig'd wrongly. You'd want to associate the IP configuration stuff with the particular network interface, by MAC address. As for the software-RAID getting messed up, isn't that what volume labels are for? What else in the current distro setups is going to need to change for hotplug? - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: LANANA: To Pending Device Number Registrants
Linus Torvalds [EMAIL PROTECTED] [01/05/15 16:28]: The eth0..N naming is done RIGHT! Nothing to do with the kernel but, one should then argue that the current stuff in /etc/sysconfig/network-scripts is broken for hotplug as placing a new network adapter into your bus will renumber your interfaces causing them to be ifconfig'd wrongly. You'd want to associate the IP configuration stuff with the particular network interface, by MAC address. As for the software-RAID getting messed up, isn't that what volume labels are for? What else in the current distro setups is going to need to change for hotplug? - To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/