On Fri, Dec 26, 2003 at 09:24:47PM +1100, Tim Robbins wrote: > 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 Sorry I haven't gotten back sooner, just got in from my vacation. I just tried the patch, and it eliminated the "Operation not supported" messages. Forgive my uninformed newbie question, but why the error message when unionfs is just passing _PC_ACL_EXTENDED requests down to the fs below? If the fs below supports it, shouldn't it handle it just fine? Anyways, just thought I'd let you know the patch works. Thanks! > ==== //depot/user/tjr/freebsd-tjr/src/sys/fs/unionfs/union_vnops.c#5 - /p4/src/sys/fs/unionfs/union_vnops.c ==== > _at__at_ -51,6 +51,7 _at__at_ > #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> > _at__at_ -1780,6 +1781,9 _at__at_ > 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!")); >Received on Sun Jan 04 2004 - 19:41:16 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:36 UTC