Date: Fri, 26 Dec 2003 21:24:47 +1100 From: Tim Robbins <tjr@freebsd.org> To: BSDC <bsdc@xtremedev.com> Cc: current@freebsd.org Subject: Re: unionfs on ufs2 gives "operation not supported" Message-ID: <3FEC0C6F.7010409@freebsd.org> In-Reply-To: <20031226092650.GA60329@Amber.XtremeDev.com> References: <20031226092650.GA60329@Amber.XtremeDev.com>
next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format. --------------010405030605070606040405 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit BSDC wrote: >Getting "operation not supported" messages on a long ls listing with >unionfs mounts. Trying to setup a jail using unionfs, has anyone any >ideas why I'm seeing this with ls? > ># mount >/dev/da0s1a on / (ufs, local, noatime, soft-updates, acls) >devfs on /dev (devfs, local, multilabel) >/dev/vinum/usr on /usr (ufs, NFS exported, local, noatime, soft-updates, acls) >/dev/vinum/var on /var (ufs, local, noatime, soft-updates, acls) ><below>:/usr/jail/template on /usr/jail/172.16.1.1 (unionfs, noatime, noclusterw, acls) >^^^^^^^ > ># ls -l /usr/jail/172.16.1.1/ >ls: /usr/jail/172.16.1.1/.cshrc: Operation not supported >-rw-r--r-- 2 root wheel 797 Dec 24 03:04 .cshrc >ls: /usr/jail/172.16.1.1/.profile: Operation not supported >-rw-r--r-- 2 root wheel 251 Dec 24 03:04 .profile > > The problem seems to be that ls is performing a pathconf(2) _PC_ACL_EXTENDED request on the file to determine whether ACLs are supported on the file, and this request is getting passed down from unionfs to one of the UFS layers, which is indicating that ACLs are supported, but unionfs does not actually support ACLs. I've attached an (untested) patch that should make unionfs reject _PC_ACL_EXTENDED. Access to files should still be controlled by the ACLs, but you won't be able to query or modify them through unionfs. Let me know if this patch works & I'll see if I can get proper ACL support implemented. Tim --------------010405030605070606040405 Content-Type: text/plain; name="unionfs-acl.diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="unionfs-acl.diff" ==== //depot/user/tjr/freebsd-tjr/src/sys/fs/unionfs/union_vnops.c#5 - /p4/src/sys/fs/unionfs/union_vnops.c ==== @@ -51,6 +51,7 @@ #include <sys/buf.h> #include <sys/lock.h> #include <sys/sysctl.h> +#include <sys/unistd.h> #include <fs/unionfs/union.h> #include <vm/vm.h> @@ -1780,6 +1781,9 @@ struct union_node *un = VTOUNION(ap->a_vp); struct vnode *vp; + if (ap->a_name == _PC_ACL_EXTENDED) + return (EINVAL); + vp = union_lock_other(un, td); KASSERT(vp != NULL, ("union_pathconf: backing vnode missing!")); --------------010405030605070606040405--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3FEC0C6F.7010409>