Linux - Hardware This forum is for Hardware issues.
Having trouble installing a piece of hardware? Want to know if that peripheral is compatible with Linux? |
| Notices |
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
Are you new to LinuxQuestions.org? Visit the following links:
Site Howto |
Site FAQ |
Sitemap |
Register Now
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
 |
GNU/Linux Basic Guide
This 255-page guide will provide you with the keys to understand the philosophy of free software, teach you how to use and handle it, and give you the tools required to move easily in the world of GNU/Linux. Many users and administrators will be taking their first steps with this GNU/Linux Basic guide and it will show you how to approach and solve the problems you encounter.
Click Here to receive this Complete Guide absolutely free. |
|
 |
09-24-2008, 08:30 PM
|
#1
|
|
LQ Newbie
Registered: Dec 2007
Location: Brodnica, Poland
Distribution: Debian testing
Posts: 10
Rep:
|
Why UDEV ignores multiple rules for the same device?
I have created two experimental rules for one device sda1.
Code:
KERNEL=="sda1", \
NAME="%k", \
ATTRS{serial}=="0000000272",\
SYMLINK+="pendr-eqe"
KERNEL=="sda1", \
NAME="%k", \
ATTRS{serial}=="0000000272",\
SYMLINK+="pendr-eqs"
In my opinion, udev should create two symlink pointing to sda1 after sending uevent to it or executing udevadm test --force /block/sda/sda1.
Only one, first symlink is created. Why the second is ignored?
OK, I know that it is possible to put two link names in one SYMLINK key (SYMLINK+="pendr-eqe pendr-eqs"), but I would like to know why the first method doesn't work.
My udev version is 0.125-6 from Debian.
Last edited by arctgx; 09-24-2008 at 08:38 PM.
Reason: small typo
|
|
|
|
09-25-2008, 07:25 AM
|
#2
|
|
LQ Veteran
Registered: Feb 2003
Location: Maryland
Distribution: Slackware
Posts: 7,756
|
A complete guess on my part, but I suspect that udev simply executes the first rule it find that matches the device and doesn't look for other rules that may match.
|
|
|
|
09-25-2008, 11:04 AM
|
#3
|
|
LQ Newbie
Registered: Dec 2007
Location: Brodnica, Poland
Distribution: Debian testing
Posts: 10
Original Poster
Rep:
|
Quote:
Originally Posted by Hangdog42
A complete guess on my part, but I suspect that udev simply executes the first rule it find that matches the device and doesn't look for other rules that may match.
|
Then what is the sense of existing the "last_rule" option?
|
|
|
|
09-25-2008, 03:50 PM
|
#4
|
|
LQ Veteran
Registered: Feb 2003
Location: Maryland
Distribution: Slackware
Posts: 7,756
|
Hey, I said it was a guess. It turns out it was a wrong one however:
Quote:
|
One device can be matched by more than one rule. This has it's practical advantages, for example, we can write two rules which match the same device, where each one provides its own alternate name for the device. Both alternate names will be created, even if the rules are in separate files. It is important to understand that udev will not stop processing when it finds a matching rule, it will continue searching and attempt to apply every rule that it knows about.
|
The above quote is from this site, so apparently you are allowed to do what you're trying to do. As to why yours doesn't work, try reversing the order and see if the first one is still the only one executed. According to the site I linked to, the += operator should be appending to a list of names pointing to the original device, however I suppose it is possible that by having two rules, the second time the list gets "appended" it gets wiped out and recreated instead.
|
|
|
|
09-25-2008, 06:58 PM
|
#5
|
|
LQ Newbie
Registered: Dec 2007
Location: Brodnica, Poland
Distribution: Debian testing
Posts: 10
Original Poster
Rep:
|
Independently of the order of rules, after reloading database and running udevadm test, only the first rule is executed.
Maybe this behaviour of udevd is a small bug. I should test a present or the recent version on another distro.
Sorry if my post sounded like I think that your comment would be statement, not supposition. I am still a beginner in writing English This may be cause of many misunderstandings in the future.
|
|
|
|
01-16-2013, 05:47 AM
|
#6
|
|
LQ Newbie
Registered: Apr 2012
Distribution: Slackware
Posts: 15
Rep: 
|
i have similar problem. use udev 182.
But my problem is, i have multiple GROUP= directive on separate .rules files for the same device. one on /etc/udev/rules.d/, the other on /lib/udev/rules.d. i want the rules on /etc/udev/rules.d/ takes higher priority and then no other rules follow. This could be achieved with OPTIONS="last_rule". But newer udev seems dropped the "last_rule" directive.
Is there any other way ?
Last edited by slack32; 01-16-2013 at 05:55 AM.
|
|
|
|
| Thread Tools |
Search this Thread |
|
|
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -5. The time now is 01:33 PM.
|
|
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.
|
Latest Threads
LQ News
|
|