Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/compat/sys deduplicate the conversion function from stat...
details: https://anonhg.NetBSD.org/src/rev/8f9637f79af9
branches: trunk
changeset: 965852:8f9637f79af9
user: christos <christos%NetBSD.org@localhost>
date: Fri Oct 04 01:28:02 2019 +0000
description:
deduplicate the conversion function from statvfs -> statfs12
diffstat:
lib/libc/compat/sys/compat_statfs.c | 79 ++--------------------------------
sys/compat/common/vfs_syscalls_20.c | 77 ++-------------------------------
sys/compat/sys/mount.h | 83 ++++++++++++++++++++++++++++++++++++-
3 files changed, 94 insertions(+), 145 deletions(-)
diffs (truncated from 362 to 300 lines):
diff -r ded8b1646e45 -r 8f9637f79af9 lib/libc/compat/sys/compat_statfs.c
--- a/lib/libc/compat/sys/compat_statfs.c Fri Oct 04 00:04:28 2019 +0000
+++ b/lib/libc/compat/sys/compat_statfs.c Fri Oct 04 01:28:02 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: compat_statfs.c,v 1.8 2019/09/22 22:59:38 christos Exp $ */
+/* $NetBSD: compat_statfs.c,v 1.9 2019/10/04 01:28:03 christos Exp $ */
/*-
* Copyright (c) 2004, 2019 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
#include <sys/cdefs.h>
#if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: compat_statfs.c,v 1.8 2019/09/22 22:59:38 christos Exp $");
+__RCSID("$NetBSD: compat_statfs.c,v 1.9 2019/10/04 01:28:03 christos Exp $");
#endif /* LIBC_SCCS and not lint */
#define __LIBC12_SOURCE__
@@ -63,73 +63,6 @@
__strong_alias(fhstatfs, __compat_fhstatfs)
__strong_alias(getfsstat, __compat_getfsstat)
-/*
- * Convert from a new statvfs to an old statfs structure.
- */
-
-static void vfs2fs(struct statfs12 *, const struct statvfs *);
-
-#define MOUNTNO_NONE 0
-#define MOUNTNO_UFS 1 /* UNIX "Fast" Filesystem */
-#define MOUNTNO_NFS 2 /* Network Filesystem */
-#define MOUNTNO_MFS 3 /* Memory Filesystem */
-#define MOUNTNO_MSDOS 4 /* MSDOS Filesystem */
-#define MOUNTNO_CD9660 5 /* iso9660 cdrom */
-#define MOUNTNO_FDESC 6 /* /dev/fd filesystem */
-#define MOUNTNO_KERNFS 7 /* kernel variable filesystem */
-#define MOUNTNO_DEVFS 8 /* device node filesystem */
-#define MOUNTNO_AFS 9 /* AFS 3.x */
-static const struct {
- const char *name;
- const int value;
-} nv[] = {
- { MOUNT_UFS, MOUNTNO_UFS },
- { MOUNT_NFS, MOUNTNO_NFS },
- { MOUNT_MFS, MOUNTNO_MFS },
- { MOUNT_MSDOS, MOUNTNO_MSDOS },
- { MOUNT_CD9660, MOUNTNO_CD9660 },
- { MOUNT_FDESC, MOUNTNO_FDESC },
- { MOUNT_KERNFS, MOUNTNO_KERNFS },
- { MOUNT_AFS, MOUNTNO_AFS },
-};
-
-static void
-vfs2fs(struct statfs12 *bfs, const struct statvfs *fs)
-{
- size_t i = 0;
- bfs->f_type = 0;
- bfs->f_oflags = (short)fs->f_flag;
-
- for (i = 0; i < sizeof(nv) / sizeof(nv[0]); i++) {
- if (strcmp(nv[i].name, fs->f_fstypename) == 0) {
- bfs->f_type = nv[i].value;
- break;
- }
- }
-#define CLAMP(a) (long)(((a) & ~LONG_MAX) ? LONG_MAX : (a))
- bfs->f_bsize = CLAMP(fs->f_frsize);
- bfs->f_iosize = CLAMP(fs->f_iosize);
- bfs->f_blocks = CLAMP(fs->f_blocks);
- bfs->f_bfree = CLAMP(fs->f_bfree);
- if (fs->f_bfree > fs->f_bresvd)
- bfs->f_bavail = CLAMP(fs->f_bfree - fs->f_bresvd);
- else
- bfs->f_bavail = -CLAMP(fs->f_bresvd - fs->f_bfree);
- bfs->f_files = CLAMP(fs->f_files);
- bfs->f_ffree = CLAMP(fs->f_ffree);
- bfs->f_fsid = fs->f_fsidx;
- bfs->f_owner = fs->f_owner;
- bfs->f_flags = (long)fs->f_flag;
- bfs->f_syncwrites = CLAMP(fs->f_syncwrites);
- bfs->f_asyncwrites = CLAMP(fs->f_asyncwrites);
- (void)strncpy(bfs->f_fstypename, fs->f_fstypename,
- sizeof(bfs->f_fstypename));
- (void)strncpy(bfs->f_mntonname, fs->f_mntonname,
- sizeof(bfs->f_mntonname));
- (void)strncpy(bfs->f_mntfromname, fs->f_mntfromname,
- sizeof(bfs->f_mntfromname));
-}
-
int
__compat_statfs(const char *file, struct statfs12 *ost)
{
@@ -138,7 +71,7 @@
if ((ret = __statvfs90(file, &nst)) == -1)
return ret;
- vfs2fs(ost, &nst);
+ statvfs_to_statfs12(&nst, ost);
return ret;
}
@@ -150,7 +83,7 @@
if ((ret = __fstatvfs90(f, &nst)) == -1)
return ret;
- vfs2fs(ost, &nst);
+ statvfs_to_statfs12(&nst, ost);
return ret;
}
@@ -162,7 +95,7 @@
if ((ret = __fhstatvfs190(fh, FHANDLE30_SIZE, &nst, ST_WAIT)) == -1)
return ret;
- vfs2fs(ost, &nst);
+ statvfs_to_statfs12(&nst, ost);
return ret;
}
@@ -183,7 +116,7 @@
goto done;
if (nst)
for (i = 0; i < ret; i++)
- vfs2fs(&ost[i], &nst[i]);
+ statvfs_to_statfs12(&nst[i], &ost[i]);
done:
if (nst)
free(nst);
diff -r ded8b1646e45 -r 8f9637f79af9 sys/compat/common/vfs_syscalls_20.c
--- a/sys/compat/common/vfs_syscalls_20.c Fri Oct 04 00:04:28 2019 +0000
+++ b/sys/compat/common/vfs_syscalls_20.c Fri Oct 04 01:28:02 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: vfs_syscalls_20.c,v 1.43 2019/09/26 01:28:27 christos Exp $ */
+/* $NetBSD: vfs_syscalls_20.c,v 1.44 2019/10/04 01:28:03 christos Exp $ */
/*
* Copyright (c) 1989, 1993
@@ -37,7 +37,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_syscalls_20.c,v 1.43 2019/09/26 01:28:27 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_syscalls_20.c,v 1.44 2019/10/04 01:28:03 christos Exp $");
#ifdef _KERNEL_OPT
#include "opt_compat_netbsd.h"
@@ -67,30 +67,6 @@
#include <compat/sys/mount.h>
#include <compat/sys/statvfs.h>
-#define MOUNTNO_NONE 0
-#define MOUNTNO_UFS 1 /* UNIX "Fast" Filesystem */
-#define MOUNTNO_NFS 2 /* Network Filesystem */
-#define MOUNTNO_MFS 3 /* Memory Filesystem */
-#define MOUNTNO_MSDOS 4 /* MSDOS Filesystem */
-#define MOUNTNO_CD9660 5 /* iso9660 cdrom */
-#define MOUNTNO_FDESC 6 /* /dev/fd filesystem */
-#define MOUNTNO_KERNFS 7 /* kernel variable filesystem */
-#define MOUNTNO_DEVFS 8 /* device node filesystem */
-#define MOUNTNO_AFS 9 /* AFS 3.x */
-static const struct {
- const char *name;
- const int value;
-} nv[] = {
- { MOUNT_UFS, MOUNTNO_UFS },
- { MOUNT_NFS, MOUNTNO_NFS },
- { MOUNT_MFS, MOUNTNO_MFS },
- { MOUNT_MSDOS, MOUNTNO_MSDOS },
- { MOUNT_CD9660, MOUNTNO_CD9660 },
- { MOUNT_FDESC, MOUNTNO_FDESC },
- { MOUNT_KERNFS, MOUNTNO_KERNFS },
- { MOUNT_AFS, MOUNTNO_AFS },
-};
-
static const struct syscall_package vfs_syscalls_20_syscalls[] = {
{ SYS_compat_20_fhstatfs, 0, (sy_call_t *)compat_20_sys_fhstatfs },
{ SYS_compat_20_fstatfs, 0, (sy_call_t *)compat_20_sys_fstatfs },
@@ -99,47 +75,6 @@
{ 0, 0, NULL }
};
-static int
-statvfs_to_statfs12(const void *vfs, void *vbfs, size_t len)
-{
- struct statfs12 ofs, *bfs = vbfs;
- const struct statvfs *fs = vfs;
- size_t i;
- ofs.f_type = 0;
- ofs.f_oflags = (short)fs->f_flag;
-
- for (i = 0; i < sizeof(nv) / sizeof(nv[0]); i++) {
- if (strcmp(nv[i].name, fs->f_fstypename) == 0) {
- ofs.f_type = nv[i].value;
- break;
- }
- }
-#define CLAMP(a) (long)(((a) & ~LONG_MAX) ? LONG_MAX : (a))
- ofs.f_bsize = CLAMP(fs->f_frsize);
- ofs.f_iosize = CLAMP(fs->f_iosize);
- ofs.f_blocks = CLAMP(fs->f_blocks);
- ofs.f_bfree = CLAMP(fs->f_bfree);
- if (fs->f_bfree > fs->f_bresvd)
- ofs.f_bavail = CLAMP(fs->f_bfree - fs->f_bresvd);
- else
- ofs.f_bavail = -CLAMP(fs->f_bresvd - fs->f_bfree);
- ofs.f_files = CLAMP(fs->f_files);
- ofs.f_ffree = CLAMP(fs->f_ffree);
- ofs.f_fsid = fs->f_fsidx;
- ofs.f_owner = fs->f_owner;
- ofs.f_flags = (long)fs->f_flag;
- ofs.f_syncwrites = CLAMP(fs->f_syncwrites);
- ofs.f_asyncwrites = CLAMP(fs->f_asyncwrites);
- (void)strncpy(ofs.f_fstypename, fs->f_fstypename,
- sizeof(ofs.f_fstypename));
- (void)strncpy(ofs.f_mntonname, fs->f_mntonname,
- sizeof(ofs.f_mntonname));
- (void)strncpy(ofs.f_mntfromname, fs->f_mntfromname,
- sizeof(ofs.f_mntfromname));
-
- return copyout(&ofs, bfs, sizeof(ofs));
-}
-
/*
* Get filesystem statistics.
*/
@@ -167,7 +102,7 @@
if ((error = dostatvfs(mp, sbuf, l, 0, 1)) != 0)
goto done;
- error = statvfs_to_statfs12(sbuf, SCARG(uap, buf), 0);
+ error = statvfs_to_statfs12_copy(sbuf, SCARG(uap, buf), 0);
done:
vrele(vp);
STATVFSBUF_PUT(sbuf);
@@ -197,7 +132,7 @@
sbuf = STATVFSBUF_GET();
if ((error = dostatvfs(mp, sbuf, l, 0, 1)) != 0)
goto out;
- error = statvfs_to_statfs12(sbuf, SCARG(uap, buf), 0);
+ error = statvfs_to_statfs12_copy(sbuf, SCARG(uap, buf), 0);
out:
fd_putfile(SCARG(uap, fd));
STATVFSBUF_PUT(sbuf);
@@ -217,7 +152,7 @@
syscallarg(int) flags;
} */
return do_sys_getvfsstat(l, SCARG(uap, buf), SCARG(uap, bufsize),
- SCARG(uap, flags), statvfs_to_statfs12,
+ SCARG(uap, flags), statvfs_to_statfs12_copy,
sizeof(struct statvfs90), retval);
}
@@ -253,7 +188,7 @@
sbuf = STATVFSBUF_GET();
if ((error = VFS_STATVFS(mp, sbuf)) != 0)
goto out;
- error = statvfs_to_statfs12(sbuf, SCARG(uap, buf), 0);
+ error = statvfs_to_statfs12_copy(sbuf, SCARG(uap, buf), 0);
out:
vrele(vp);
STATVFSBUF_PUT(sbuf);
diff -r ded8b1646e45 -r 8f9637f79af9 sys/compat/sys/mount.h
--- a/sys/compat/sys/mount.h Fri Oct 04 00:04:28 2019 +0000
+++ b/sys/compat/sys/mount.h Fri Oct 04 01:28:02 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: mount.h,v 1.10 2013/10/04 21:07:37 christos Exp $ */
+/* $NetBSD: mount.h,v 1.11 2019/10/04 01:28:02 christos Exp $ */
/*
* Copyright (c) 1989, 1991, 1993
@@ -61,10 +61,91 @@
char f_mntfromname[MNAMELEN]; /* mounted file system */
};
+#ifndef _KERNEL
+#include <string.h>
+#endif
+
/*
* Operations supported on mounted file system.
*/
+/*
+ * Convert from a new statvfs to an old statfs structure.
+ */
+
+#define MOUNTNO_NONE 0
+#define MOUNTNO_UFS 1 /* UNIX "Fast" Filesystem */
+#define MOUNTNO_NFS 2 /* Network Filesystem */
+#define MOUNTNO_MFS 3 /* Memory Filesystem */
+#define MOUNTNO_MSDOS 4 /* MSDOS Filesystem */
+#define MOUNTNO_CD9660 5 /* iso9660 cdrom */
+#define MOUNTNO_FDESC 6 /* /dev/fd filesystem */
+#define MOUNTNO_KERNFS 7 /* kernel variable filesystem */
+#define MOUNTNO_DEVFS 8 /* device node filesystem */
+#define MOUNTNO_AFS 9 /* AFS 3.x */
+
+static const struct {
+ const char *name;
+ const int value;
+} __nv[] = {
Home |
Main Index |
Thread Index |
Old Index