From owner-freebsd-bugs@FreeBSD.ORG Sun Jun 22 19:30:01 2008 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 891C7106566C for ; Sun, 22 Jun 2008 19:30:01 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 6B9AB8FC23 for ; Sun, 22 Jun 2008 19:30:01 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.2/8.14.2) with ESMTP id m5MJU05h058345 for ; Sun, 22 Jun 2008 19:30:00 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.2/8.14.1/Submit) id m5MJU0kR058344; Sun, 22 Jun 2008 19:30:00 GMT (envelope-from gnats) Resent-Date: Sun, 22 Jun 2008 19:30:00 GMT Resent-Message-Id: <200806221930.m5MJU0kR058344@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Mateusz Guzik Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 83BE31065673 for ; Sun, 22 Jun 2008 19:26:18 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21]) by mx1.freebsd.org (Postfix) with ESMTP id 7600E8FC26 for ; Sun, 22 Jun 2008 19:26:18 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (localhost [127.0.0.1]) by www.freebsd.org (8.14.2/8.14.2) with ESMTP id m5MJQItF019211 for ; Sun, 22 Jun 2008 19:26:18 GMT (envelope-from nobody@www.freebsd.org) Received: (from nobody@localhost) by www.freebsd.org (8.14.2/8.14.1/Submit) id m5MJQIMC019203; Sun, 22 Jun 2008 19:26:18 GMT (envelope-from nobody) Message-Id: <200806221926.m5MJQIMC019203@www.freebsd.org> Date: Sun, 22 Jun 2008 19:26:18 GMT From: Mateusz Guzik To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Cc: Subject: kern/124881: [devfs.rules][patch][request] Add possibility to check which ruleset is assigned to specified mount-point X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jun 2008 19:30:01 -0000 >Number: 124881 >Category: kern >Synopsis: [devfs.rules][patch][request] Add possibility to check which ruleset is assigned to specified mount-point >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Sun Jun 22 19:30:00 UTC 2008 >Closed-Date: >Last-Modified: >Originator: Mateusz Guzik >Release: 8.0-CURRENT >Organization: >Environment: FreeBSD eternal 8.0-CURRENT FreeBSD 8.0-CURRENT #11: Sun Jun 22 20:56:53 CEST 2008 f@eternal:/usr/obj/usr/src/sys/ETERNAL i386 >Description: Manual page devd(8) does not mention how one can check which ruleset is assigned to specified mount-point and after reading sources I still couldn't find any way to do it. >How-To-Repeat: >Fix: Proposed patch adds support for `rule showset' to devfs. Example usage: [21:07] eternal:~ # devfs rule showset 0 [21:07] eternal:~ # devfs ruleset 10 [21:07] eternal:~ # devfs rule showset 10 Patch attached with submission follows: --- sys/fs/devfs/devfs.h.orig 2008-06-22 14:09:46.000000000 +0200 +++ sys/fs/devfs/devfs.h 2008-06-22 15:27:46.000000000 +0200 @@ -111,10 +111,11 @@ #define DEVFSIO_RGETNEXT _IOWR('D', 4, struct devfs_rule) #define DEVFSIO_SUSE _IOW('D', 10, devfs_rsnum) #define DEVFSIO_SAPPLY _IOW('D', 11, devfs_rsnum) #define DEVFSIO_SGETNEXT _IOWR('D', 12, devfs_rsnum) +#define DEVFSIO_SGETCURRENT _IOWR('D', 13, devfs_rsnum) /* XXX: DEVFSIO_RS_GET_INFO for refcount, active if any, etc. */ #ifdef _KERNEL --- sys/fs/devfs/devfs_rule.c.orig 2008-03-20 17:08:42.000000000 +0100 +++ sys/fs/devfs/devfs_rule.c 2008-06-22 15:58:30.000000000 +0200 @@ -285,10 +285,13 @@ error = ESRCH; break; } devfs_ruleset_applydm(ds, dm); break; + case DEVFSIO_SGETCURRENT: + *(devfs_rsnum *)data = dm->dm_ruleset; + break; case DEVFSIO_SGETNEXT: rsnum = *(devfs_rsnum *)data; TAILQ_FOREACH(ds, &devfs_rulesets, ds_list) { if (ds->ds_number > rsnum) break; --- sbin/devfs/rule.c.orig 2008-06-22 15:19:59.000000000 +0200 +++ sbin/devfs/rule.c 2008-06-22 15:20:03.000000000 +0200 @@ -53,19 +53,20 @@ static void rulespec_intok(struct devfs_rule *dr, int ac, char **av, devfs_rsnum rsnum); static void rulespec_outfp(FILE *fp, struct devfs_rule *dr); static command_t rule_add, rule_apply, rule_applyset; -static command_t rule_del, rule_delset, rule_show, rule_showsets; +static command_t rule_del, rule_delset, rule_show, rule_showset, rule_showsets; static ctbl_t ctbl_rule = { { "add", rule_add }, { "apply", rule_apply }, { "applyset", rule_applyset }, { "del", rule_del }, { "delset", rule_delset }, { "show", rule_show }, + { "showset", rule_showset }, { "showsets", rule_showsets }, { NULL, NULL } }; static struct intstr ist_type[] = { @@ -227,10 +228,26 @@ } return (0); } static int +rule_showset(int ac, char **av __unused) +{ + devfs_rsnum rsnum; + + if (ac != 1) + usage(); + + if (ioctl(mpfd, DEVFSIO_SGETCURRENT, &rsnum) != -1) + printf("%d\n", rsnum); + + if (errno != 0) + err(1, "ioctl DEVFSIO_SGETCURRENT"); + return (0); +} + +static int rule_showsets(int ac, char **av __unused) { devfs_rsnum rsnum; if (ac != 1) --- sbin/devfs/devfs.8.orig 2006-12-29 23:45:12.000000000 +0100 +++ sbin/devfs/devfs.8 2008-06-22 15:40:06.000000000 +0200 @@ -132,10 +132,12 @@ Display the rule number .Ar rulenum , or all the rules in the ruleset. The output lines (one line per rule) are expected to be valid .Ar rulespec Ns s . +.It Cm rule showset +Display the number of the ruleset associated with the mount-point. .It Cm rule showsets Report the numbers of existing rulesets. .It Cm ruleset Ar ruleset Set ruleset number .Ar ruleset >Release-Note: >Audit-Trail: >Unformatted: