bin/153258: [patch][zfs] creating ZVOLs requires `refreservation' ability

Anonymous swell.k at gmail.com
Fri Dec 17 21:40:08 UTC 2010


>Number:         153258
>Category:       bin
>Synopsis:       [patch][zfs] creating ZVOLs requires `refreservation' ability
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-fs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          doc-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Dec 17 21:40:08 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     Anonymous
>Release:        FreeBSD 9.0-CURRENT amd64
>Organization:
>Environment:
$ uname -vm
FreeBSD 9.0-HEAD-20101216-JPSNAP #0: Thu Dec 16 07:13:24 UTC 2010
root at build-amd64-fbsd.allbsd.org:/usr/obj/usr/src/sys/GENERIC  amd64

also affects v28
>Description:
Creating zfs volumes for ordinary users requires ability to modify
`refreservation' property.

Is this reproducable on opensolaris?
>How-To-Repeat:
root# zpool create blah gptid/A-B-C-E
root# zfs allow luser create,mount blah
root# sysctl vfs.usermount=1

luser$ zfs create -V10m blah/test
cannot create 'blah/test': permission denied

luser$ truss zfs create -V10m blah/test 2>&1 | fgrep ioctl | tail -1
ioctl(3,0xcc285a18 { IORW 0x5a('Z'), 24, 3112 },0xffffd110) ERR#1 'Operation not permitted'

luser$ grep "'Z'.*24" /usr/src/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h
#define ZFS_IOC_CREATE                  _IOWR('Z', 24, struct zfs_cmd)

root# zfs allow luser refreservation
luser$ zfs create -V10m blah/test
luser$ find /dev/zvol -ls
    86        1 dr-xr-xr-x    3 root             wheel                 512 Dec 17 21:24 /dev/zvol
    87        1 dr-xr-xr-x    2 root             wheel                 512 Dec 17 21:24 /dev/zvol/blah
    85        0 crw-r-----    1 root             operator           0,  85 Dec 17 21:23 /dev/zvol/blah/test
>Fix:
--- a.diff begins here ---
Index: cddl/contrib/opensolaris/cmd/zfs/zfs.8
===================================================================
--- cddl/contrib/opensolaris/cmd/zfs/zfs.8	(revision 216504)
+++ cddl/contrib/opensolaris/cmd/zfs/zfs.8	(working copy)
@@ -2269,7 +2269,7 @@
 clone        subcommand   Must also have the 'create' ability
                            and the 'mount' ability in the origin 
                            file system.
-create       subcommand   Must also have the 'mount' ability.
+create       subcommand   Must also have the 'mount' and 'refreservation' ability.
 destroy      subcommand   Must also have the 'mount' ability.     
 mount        subcommand   Allows mount, unmount, and
                            create/remove zvol device links.
Index: cddl/contrib/opensolaris/lib/pyzfs/common/allow.py
===================================================================
--- cddl/contrib/opensolaris/lib/pyzfs/common/allow.py	(revision 216504)
+++ cddl/contrib/opensolaris/lib/pyzfs/common/allow.py	(working copy)
@@ -202,7 +202,7 @@
 	return d
 
 perms_subcmd = dict(
-    create=_("Must also have the 'mount' ability"),
+    create=_("Must also have the 'mount' and 'refreservation' ability"),
     destroy=_("Must also have the 'mount' ability"),
     snapshot=_("Must also have the 'mount' ability"),
     rollback=_("Must also have the 'mount' ability"),
--- a.diff ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-fs mailing list