On 22.09.2019 18:22, Christos Zoulas wrote: > On Sep 22, 5:58pm, n54%gmx.com@localhost (Kamil Rytarowski) wrote: > -- Subject: Re: wedge device to name > > | I understand and I know. Unfortunately (or fortunately) we will need to > | live with the old syscall forever. > > Yes, but cleaning the old code is obvious and simple. Untangling the > sysctl-augmented API mess is nearly impossible. > Looking at the diff here, just adding f_mntfromlabel[] is a better choice and it does not make too much dead code in old syscall version. I propose to go for versioning here. > | A programmer friendly wrapper of sysctl could be implemented in libutil. > > That is not really needed for the userland part; there is sysctlybyname(); > > Here's the actual change compared to ~100s of lines of sysctl code: > > Index: kern/vfs_subr.c > =================================================================== > RCS file: /cvsroot/src/sys/kern/vfs_subr.c,v > retrieving revision 1.471 > diff -u -u -r1.471 vfs_subr.c > --- kern/vfs_subr.c 1 Jan 2019 10:06:54 -0000 1.471 > +++ kern/vfs_subr.c 22 Sep 2019 16:17:49 -0000 > @@ -1198,6 +1198,8 @@ > sizeof(sbp->f_mntonname)); > (void)memcpy(sbp->f_mntfromname, mp->mnt_stat.f_mntfromname, > sizeof(sbp->f_mntfromname)); > + (void)memcpy(sbp->f_mntfromlabel, mp->mnt_stat.f_mntfromlabel, > + sizeof(sbp->f_mntfromlabel)); > sbp->f_namemax = mbp->f_namemax; > } > > Index: sys/statvfs.h > =================================================================== > RCS file: /cvsroot/src/sys/sys/statvfs.h,v > retrieving revision 1.18 > diff -u -b -w -u -r1.18 statvfs.h > --- sys/statvfs.h 5 Apr 2013 17:34:27 -0000 1.18 > +++ sys/statvfs.h 22 Sep 2019 16:18:43 -0000 > @@ -96,6 +96,7 @@ > char f_fstypename[_VFS_NAMELEN]; /* fs type name */ > char f_mntonname[_VFS_MNAMELEN]; /* directory on which mounted */ > char f_mntfromname[_VFS_MNAMELEN]; /* mounted file system */ > + char f_mntfromlabel[_VFS_MNAMELEN]; /* disk label name if available */ > > }; > > Index: miscfs/specfs/spec_vnops.c > =================================================================== > RCS file: /cvsroot/src/sys/miscfs/specfs/spec_vnops.c,v > retrieving revision 1.175 > diff -u -r1.175 spec_vnops.c > --- miscfs/specfs/spec_vnops.c 3 Sep 2018 16:29:35 -0000 1.175 > +++ miscfs/specfs/spec_vnops.c 22 Sep 2019 16:19:53 -0000 > @@ -75,6 +75,7 @@ > #include <sys/poll.h> > #include <sys/file.h> > #include <sys/disklabel.h> > +#include <sys/disk.h> > #include <sys/lockf.h> > #include <sys/tty.h> > #include <sys/kauth.h> > @@ -366,10 +367,19 @@ > void > spec_node_setmountedfs(vnode_t *devvp, struct mount *mp) > { > + struct dkwedge_info dkw; > > KASSERT(devvp->v_type == VBLK); > KASSERT(devvp->v_specnode->sn_dev->sd_mountpoint == NULL || mp == NULL); > devvp->v_specnode->sn_dev->sd_mountpoint = mp; > + if (mp == NULL) > + return; > + > + if (bdev_ioctl(devvp->v_rdev, DIOCGWEDGEINFO, &dkw, FREAD, curlwp) != 0) > + return; > + > + strlcpy(mp->mnt_stat.f_mntfromlabel, dkw.dkw_wname, > + sizeof(mp->mnt_stat.f_mntfromlabel)); > } > > /* > > And I do understand how much code is needed for compat: > > Legend: > > + required change > - autogenerated file > > The rest are because of compat and glue. > > christos > > + M bin/df/df.c > M lib/libc/shlib_version > M lib/libc/compat/gen/Makefile.inc > A lib/libc/compat/gen/compat___getmntinfo13.c > M lib/libc/compat/gen/compat_opendir.c > M lib/libc/compat/sys/Makefile.inc > A lib/libc/compat/sys/compat___fhstatvfs140.c > A lib/libc/compat/sys/compat___fhstatvfs40.c > M lib/libc/compat/sys/compat_fhstatvfs.c > M lib/libc/compat/sys/compat_fhstatvfs1.c > M lib/libc/compat/sys/compat_statfs.c > A lib/libc/compat/sys/compat_statvfs.c > M lib/libc/include/namespace.h > M lib/libc/sys/Makefile.inc > M lib/libc/sys/statvfs.c > A sys/compat/common/compat_90_mod.c > M sys/compat/common/compat_mod.h > M sys/compat/common/files.common > M sys/compat/common/vfs_syscalls_20.c > M sys/compat/common/vfs_syscalls_30.c > A sys/compat/common/vfs_syscalls_90.c > M sys/compat/netbsd32/files.netbsd32 > M sys/compat/netbsd32/netbsd32.h > A sys/compat/netbsd32/netbsd32_compat_90.c > M sys/compat/netbsd32/netbsd32_conv.h > M sys/compat/netbsd32/netbsd32_fs.c > - M sys/compat/netbsd32/netbsd32_syscall.h > - M sys/compat/netbsd32/netbsd32_syscallargs.h > - M sys/compat/netbsd32/netbsd32_syscalls.c > - M sys/compat/netbsd32/netbsd32_syscalls_autoload.c > - M sys/compat/netbsd32/netbsd32_sysent.c > - M sys/compat/netbsd32/netbsd32_systrace_args.c > M sys/compat/netbsd32/syscalls.conf > M sys/compat/netbsd32/syscalls.master > A sys/conf/compat_netbsd90.config > M sys/conf/files > - M sys/kern/init_sysent.c > - M sys/kern/syscalls.c > - M sys/kern/syscalls.conf > - M sys/kern/syscalls.master > - M sys/kern/syscalls_autoload.c > - M sys/kern/systrace_args.c > + M sys/kern/vfs_subr.c > - M sys/kern/vfs_syscalls.c > + M sys/miscfs/specfs/spec_vnops.c > M sys/modules/Makefile > A sys/modules/compat_90/Makefile > A sys/modules/compat_netbsd32_90/Makefile > - M sys/rump/rump.sysmap > - M sys/rump/include/rump/rump_syscalls.h > - M sys/rump/librump/rumpkern/rump_syscalls.c > - M sys/rump/librump/rumpkern/rumpkern_syscalls.c > - M sys/rump/librump/rumpnet/rumpnet_syscalls.c > - M sys/rump/librump/rumpvfs/rumpvfs_syscalls.c > M sys/sys/param.h > + M sys/sys/statvfs.h > - M sys/sys/syscall.h > - M sys/sys/syscallargs.h >
Attachment:
signature.asc
Description: OpenPGP digital signature