kern/122838: [devfs] devfs doesn't handle complex paths (like
zvol/pool/vms) good
Dmitry Marakasov
amdmi3 at amdmi3.ru
Thu Apr 17 02:20:01 UTC 2008
>Number: 122838
>Category: kern
>Synopsis: [devfs] devfs doesn't handle complex paths (like zvol/pool/vms) good
>Confidential: no
>Severity: serious
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Apr 17 02:20:00 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator: Dmitry Marakasov
>Release: FreeBSD 7.0-RELEASE i386
>Organization:
>Environment:
System: FreeBSD hades.panopticon 7.0-RELEASE FreeBSD 7.0-RELEASE #5: Fri Mar 14 14:26:43 MSK 2008 root at hades.panopticon:/usr/obj/usr/src/sys/HADES i386
>Description:
devfs behavior on nested paths is really unintuitive and pretty hard to tune.
Suppose I have ZFS zvol under pool/vms/win2000 and I want to unhide node for it in the jail.
Here's what it look like unhidden:
% find /dev/zvol
/dev/zvol
/dev/zvol/pool
/dev/zvol/pool/vms
/dev/zvol/pool/vms/win2000
Now I hide everything and try to unhide desired node (first is ruleset, next `find /dev` output)
(1) hide
path zvol unhide
/dev
/dev/zvol
(2) hide
path zvol unhide
path zvol/pool unhide
/dev
/dev/zvol
(3) hide
path zvol/pool/vms/win2000 unhide
/dev
(4) hide
path zvol/* unhide
/dev
(5) hide
path zvol unhide
path pool unhide
/dev
/dev/zvol
/dev/zvol/pool
(6) hide
path zvol unhide
path pool unhide
path vms unhide
/dev
/dev/zvol
/dev/zvol/pool
/dev/zvol/pool/vms
(7) hide
path zvol unhide
path pool unhide
path vms unhide
path win2000 unhide
/dev
/dev/zvol
/dev/zvol/pool
/dev/zvol/pool/vms
(8) hide
path zvol unhide
path pool unhide
path vms unhide
path *win2000 unhide
/dev
/dev/zvol
/dev/zvol/pool
/dev/zvol/pool/vms
/dev/zvol/pool/vms/win2000
(9) hide
path zvol unhide
path pool unhide
path vms/* unhide
path *win2000 unhide
/dev
/dev/zvol
/dev/zvol/pool
This seems really broken.
First, though man says that path is a glob, and it's used so in /etc/defaults/devfs.rules (add path 'fd/*' unhide) nested directories don't work at all (2,3,4). Specifying them separately works (5,6), but that's not quite good, as rules for different hierarchies may interfere with each other. Also, cases (7,8) is really strange, why do I need * here for a device node?
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list