Date: Thu, 17 Apr 2008 06:12:32 +0400 (MSD) From: Dmitry Marakasov <amdmi3@amdmi3.ru> To: FreeBSD-gnats-submit@FreeBSD.org Subject: kern/122838: [devfs] devfs doesn't handle complex paths (like zvol/pool/vms) good Message-ID: <20080417021232.2AC661702D@hades.panopticon> Resent-Message-ID: <200804170220.m3H2K1xN038209@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>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@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:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080417021232.2AC661702D>
