From owner-svn-src-projects@freebsd.org Mon Jun 3 17:34:03 2019 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 82C4B15B8670 for ; Mon, 3 Jun 2019 17:34:03 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2B4BB8C889; Mon, 3 Jun 2019 17:34:03 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1202C962D; Mon, 3 Jun 2019 17:34:03 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x53HY2Wb041016; Mon, 3 Jun 2019 17:34:02 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x53HY12U041009; Mon, 3 Jun 2019 17:34:01 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201906031734.x53HY12U041009@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers Date: Mon, 3 Jun 2019 17:34:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r348560 - in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Commit-Revision: 348560 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 2B4BB8C889 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.97)[-0.966,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US] X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 03 Jun 2019 17:34:03 -0000 Author: asomers Date: Mon Jun 3 17:34:01 2019 New Revision: 348560 URL: https://svnweb.freebsd.org/changeset/base/348560 Log: fusefs: support asynchronous cache invalidation Protocol 7.12 adds a way for the server to notify the client that it should invalidate an inode's data cache and/or attributes. This commit implements that mechanism. Unlike Linux's implementation, ours requires that the file system also supports FUSE_EXPORT_SUPPORT (NFS-style lookups). Otherwise the invalidation operation will return EINVAL. Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_device.c projects/fuse2/sys/fs/fuse/fuse_internal.c projects/fuse2/sys/fs/fuse/fuse_internal.h projects/fuse2/sys/fs/fuse/fuse_vfsops.c projects/fuse2/tests/sys/fs/fusefs/mockfs.cc projects/fuse2/tests/sys/fs/fusefs/mockfs.hh projects/fuse2/tests/sys/fs/fusefs/notify.cc Modified: projects/fuse2/sys/fs/fuse/fuse_device.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_device.c Mon Jun 3 17:29:57 2019 (r348559) +++ projects/fuse2/sys/fs/fuse/fuse_device.c Mon Jun 3 17:34:01 2019 (r348560) @@ -515,8 +515,10 @@ fuse_device_write(struct cdev *dev, struct uio *uio, i case FUSE_NOTIFY_INVAL_ENTRY: err = fuse_internal_invalidate_entry(mp, uio); break; - case FUSE_NOTIFY_POLL: case FUSE_NOTIFY_INVAL_INODE: + err = fuse_internal_invalidate_inode(mp, uio); + break; + case FUSE_NOTIFY_POLL: default: /* Not implemented */ err = ENOSYS; Modified: projects/fuse2/sys/fs/fuse/fuse_internal.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_internal.c Mon Jun 3 17:29:57 2019 (r348559) +++ projects/fuse2/sys/fs/fuse/fuse_internal.c Mon Jun 3 17:34:01 2019 (r348560) @@ -89,6 +89,7 @@ __FBSDID("$FreeBSD$"); #include "fuse.h" #include "fuse_file.h" #include "fuse_internal.h" +#include "fuse_io.h" #include "fuse_ipc.h" #include "fuse_node.h" #include "fuse_file.h" @@ -106,6 +107,42 @@ static int isbzero(void *buf, size_t len); #endif +int +fuse_internal_get_cached_vnode(struct mount* mp, ino_t ino, int flags, + struct vnode **vpp) +{ + struct bintime now; + struct thread *td = curthread; + uint64_t nodeid = ino; + int error; + + *vpp = NULL; + + error = vfs_hash_get(mp, fuse_vnode_hash(nodeid), flags, td, vpp, + fuse_vnode_cmp, &nodeid); + if (error) + return error; + /* + * Check the entry cache timeout. We have to do this within fusefs + * instead of by using cache_enter_time/cache_lookup because those + * routines are only intended to work with pathnames, not inodes + */ + if (*vpp != NULL) { + getbinuptime(&now); + if (bintime_cmp(&(VTOFUD(*vpp)->entry_cache_timeout), &now, >)){ + atomic_add_acq_long(&fuse_lookup_cache_hits, 1); + return 0; + } else { + /* Entry cache timeout */ + atomic_add_acq_long(&fuse_lookup_cache_misses, 1); + cache_purge(*vpp); + vput(*vpp); + *vpp = NULL; + } + } + return 0; +} + /* Synchronously send a FUSE_ACCESS operation */ int fuse_internal_access(struct vnode *vp, @@ -337,7 +374,6 @@ fuse_internal_invalidate_entry(struct mount *mp, struc struct fuse_notify_inval_entry_out fnieo; struct fuse_data *data = fuse_get_mpdata(mp); struct componentname cn; - /*struct vnode *dvp;*/ struct vnode *dvp, *vp; char name[PATH_MAX]; int err; @@ -367,8 +403,9 @@ fuse_internal_invalidate_entry(struct mount *mp, struc if (fnieo.parent == FUSE_ROOT_ID) err = VFS_ROOT(mp, LK_SHARED, &dvp); else - err = VFS_VGET(mp, fnieo.parent, LK_SHARED, &dvp); - if (err != 0) + err = fuse_internal_get_cached_vnode( mp, fnieo.parent, + LK_SHARED, &dvp); + if (err != 0 || dvp == NULL) return (err); /* * XXX we can't check dvp's generation because the FUSE invalidate @@ -388,6 +425,53 @@ fuse_internal_invalidate_entry(struct mount *mp, struc MPASS(err == 0); fuse_vnode_clear_attr_cache(dvp); vput(dvp); + return (0); +} + +int +fuse_internal_invalidate_inode(struct mount *mp, struct uio *uio) +{ + struct fuse_notify_inval_inode_out fniio; + struct fuse_data *data = fuse_get_mpdata(mp); + struct vnode *vp; + int err; + + if (!(data->dataflags & FSESS_EXPORT_SUPPORT)) { + /* + * Linux allows file systems without export support to use + * asynchronous notification because its inode cache is indexed + * purely by the inode number. But FreeBSD's vnode is cache + * requires access to the entire vnode structure. + */ + SDT_PROBE1(fusefs, , internal, invalidate_without_export, mp); + return (EINVAL); + } + + if ((err = uiomove(&fniio, sizeof(fniio), uio)) != 0) + return (err); + + if (fniio.ino == FUSE_ROOT_ID) + err = VFS_ROOT(mp, LK_EXCLUSIVE, &vp); + else + err = fuse_internal_get_cached_vnode(mp, fniio.ino, LK_SHARED, + &vp); + if (err != 0 || vp == NULL) + return (err); + /* + * XXX we can't check vp's generation because the FUSE invalidate + * entry message doesn't include it. Worse case is that we invalidate + * an inode that didn't need to be invalidated. + */ + + /* + * Flush and invalidate buffers if off >= 0. Technically we only need + * to flush and invalidate the range of offsets [off, off + len), but + * for simplicity's sake we do everything. + */ + if (fniio.off >= 0) + fuse_io_invalbuf(vp, curthread); + fuse_vnode_clear_attr_cache(vp); + vput(vp); return (0); } Modified: projects/fuse2/sys/fs/fuse/fuse_internal.h ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_internal.h Mon Jun 3 17:29:57 2019 (r348559) +++ projects/fuse2/sys/fs/fuse/fuse_internal.h Mon Jun 3 17:34:01 2019 (r348560) @@ -193,6 +193,10 @@ fuse_validity_2_timespec(const struct fuse_entry_out * } +/* VFS ops */ +int +fuse_internal_get_cached_vnode(struct mount*, ino_t, int, struct vnode**); + /* access */ static inline int fuse_match_cred(struct ucred *basecred, struct ucred *usercred) @@ -230,6 +234,7 @@ int fuse_internal_getattr(struct vnode *vp, struct vat /* asynchronous invalidation */ int fuse_internal_invalidate_entry(struct mount *mp, struct uio *uio); +int fuse_internal_invalidate_inode(struct mount *mp, struct uio *uio); /* mknod */ int fuse_internal_mknod(struct vnode *dvp, struct vnode **vpp, Modified: projects/fuse2/sys/fs/fuse/fuse_vfsops.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_vfsops.c Mon Jun 3 17:29:57 2019 (r348559) +++ projects/fuse2/sys/fs/fuse/fuse_vfsops.c Mon Jun 3 17:34:01 2019 (r348560) @@ -527,34 +527,14 @@ fuse_vfsop_vget(struct mount *mp, ino_t ino, int flags struct fuse_dispatcher fdi; struct fuse_entry_out *feo; struct fuse_vnode_data *fvdat; - struct bintime now; const char dot[] = "."; off_t filesize; enum vtype vtyp; int error; - error = vfs_hash_get(mp, fuse_vnode_hash(nodeid), flags, td, vpp, - fuse_vnode_cmp, &nodeid); - if (error) + error = fuse_internal_get_cached_vnode(mp, ino, flags, vpp); + if (error || *vpp != NULL) return error; - /* - * Check the entry cache timeout. We have to do this within fusefs - * instead of by using cache_enter_time/cache_lookup because those - * routines are only intended to work with pathnames, not inodes - */ - if (*vpp != NULL) { - getbinuptime(&now); - if (bintime_cmp(&(VTOFUD(*vpp)->entry_cache_timeout), &now, >)){ - atomic_add_acq_long(&fuse_lookup_cache_hits, 1); - return 0; - } else { - /* Entry cache timeout */ - atomic_add_acq_long(&fuse_lookup_cache_misses, 1); - cache_purge(*vpp); - vput(*vpp); - *vpp = NULL; - } - } /* Do a LOOKUP, using nodeid as the parent and "." as filename */ fdisp_init(&fdi, sizeof(dot)); Modified: projects/fuse2/tests/sys/fs/fusefs/mockfs.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/mockfs.cc Mon Jun 3 17:29:57 2019 (r348559) +++ projects/fuse2/tests/sys/fs/fusefs/mockfs.cc Mon Jun 3 17:34:01 2019 (r348560) @@ -322,6 +322,13 @@ void MockFS::debug_response(const mockfs_buf_out &out) printf("<- INVAL_ENTRY parent=%" PRIu64 " %s\n", out.body.inval_entry.parent, name); break; + case FUSE_NOTIFY_INVAL_INODE: + printf("<- INVAL_INODE ino=%" PRIu64 " off=%" PRIi64 + " len=%" PRIi64 "\n", + out.body.inval_inode.ino, + out.body.inval_inode.off, + out.body.inval_inode.len); + break; default: break; } @@ -511,6 +518,21 @@ int MockFS::notify_inval_entry(ino_t parent, const cha name, sizeof(out->body.bytes) - sizeof(out->body.inval_entry)); out->header.len = sizeof(out->header) + sizeof(out->body.inval_entry) + namelen; + debug_response(*out); + write_response(*out); + return 0; +} + +int MockFS::notify_inval_inode(ino_t ino, off_t off, ssize_t len) +{ + std::unique_ptr out(new mockfs_buf_out); + + out->header.unique = 0; /* 0 means asynchronous notification */ + out->header.error = FUSE_NOTIFY_INVAL_INODE; + out->body.inval_inode.ino = ino; + out->body.inval_inode.off = off; + out->body.inval_inode.len = len; + out->header.len = sizeof(out->header) + sizeof(out->body.inval_inode); debug_response(*out); write_response(*out); return 0; Modified: projects/fuse2/tests/sys/fs/fusefs/mockfs.hh ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/mockfs.hh Mon Jun 3 17:29:57 2019 (r348559) +++ projects/fuse2/tests/sys/fs/fusefs/mockfs.hh Mon Jun 3 17:34:01 2019 (r348560) @@ -178,6 +178,7 @@ union fuse_payloads_out { fuse_init_out init; /* The inval_entry structure should be followed by the entry's name */ fuse_notify_inval_entry_out inval_entry; + fuse_notify_inval_inode_out inval_inode; fuse_listxattr_out listxattr; fuse_open_out open; fuse_statfs_out statfs; @@ -324,6 +325,23 @@ class MockFS { * @param namelen size of name, including the NUL */ int notify_inval_entry(ino_t parent, const char *name, size_t namelen); + + /* + * Send an asynchronous notification to invalidate an inode's cached + * data and/or attributes. Similar to libfuse's + * fuse_lowlevel_notify_inval_inode. + * + * This method will block until the client has responded, so it should + * generally be run in a separate thread from request processing. + * + * @param ino File's inode number + * @param off offset at which to begin invalidation. A + * negative offset means to invalidate attributes + * only. + * @param len Size of region of data to invalidate. 0 means + * to invalidate all cached data. + */ + int notify_inval_inode(ino_t ino, off_t off, ssize_t len); /* * Request handler Modified: projects/fuse2/tests/sys/fs/fusefs/notify.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/notify.cc Mon Jun 3 17:29:57 2019 (r348559) +++ projects/fuse2/tests/sys/fs/fusefs/notify.cc Mon Jun 3 17:34:01 2019 (r348560) @@ -29,6 +29,10 @@ */ extern "C" { +#include +#include + +#include #include } @@ -46,14 +50,13 @@ using namespace testing; class Notify: public FuseTest { public: -public: virtual void SetUp() { m_init_flags = FUSE_EXPORT_SUPPORT; FuseTest::SetUp(); } void expect_lookup(uint64_t parent, const char *relpath, uint64_t ino, - Sequence &seq) + off_t size, Sequence &seq) { EXPECT_LOOKUP(parent, relpath) .InSequence(seq) @@ -64,12 +67,39 @@ void expect_lookup(uint64_t parent, const char *relpat out.body.entry.nodeid = ino; out.body.entry.attr.ino = ino; out.body.entry.attr.nlink = 1; + out.body.entry.attr.size = size; out.body.entry.attr_valid = UINT64_MAX; out.body.entry.entry_valid = UINT64_MAX; }))); } }; +class NotifyWriteback: public Notify { +public: +virtual void SetUp() { + const char *node = "vfs.fusefs.data_cache_mode"; + int val = 0; + size_t size = sizeof(val); + + Notify::SetUp(); + if (IsSkipped()) + return; + + ASSERT_EQ(0, sysctlbyname(node, &val, &size, NULL, 0)) + << strerror(errno); + if (val != 2) + GTEST_SKIP() << "vfs.fusefs.data_cache_mode must be set to 2 " + "(writeback) for this test"; +} + +void expect_write(uint64_t ino, uint64_t offset, uint64_t size, + const void *contents) +{ + FuseTest::expect_write(ino, offset, size, size, 0, 0, contents); +} + +}; + struct inval_entry_args { MockFS *mock; ino_t parent; @@ -88,6 +118,24 @@ static void* inval_entry(void* arg) { return (void*)(intptr_t)errno; } +struct inval_inode_args { + MockFS *mock; + ino_t ino; + off_t off; + ssize_t len; +}; + +static void* inval_inode(void* arg) { + const struct inval_inode_args *iia = (struct inval_inode_args*)arg; + ssize_t r; + + r = iia->mock->notify_inval_inode(iia->ino, iia->off, iia->len); + if (r >= 0) + return 0; + else + return (void*)(intptr_t)errno; +} + /* Invalidate a nonexistent entry */ TEST_F(Notify, inval_entry_nonexistent) { @@ -120,8 +168,8 @@ TEST_F(Notify, inval_entry) Sequence seq; pthread_t th0; - expect_lookup(FUSE_ROOT_ID, RELPATH, ino0, seq); - expect_lookup(FUSE_ROOT_ID, RELPATH, ino1, seq); + expect_lookup(FUSE_ROOT_ID, RELPATH, ino0, 0, seq); + expect_lookup(FUSE_ROOT_ID, RELPATH, ino1, 0, seq); /* Fill the entry cache */ ASSERT_EQ(0, stat(FULLPATH, &sb)) << strerror(errno); @@ -135,7 +183,6 @@ TEST_F(Notify, inval_entry) ASSERT_EQ(0, pthread_create(&th0, NULL, inval_entry, &iea)) << strerror(errno); pthread_join(th0, &thr0_value); - /* It's not an error for an entry to not be cached */ EXPECT_EQ(0, (intptr_t)thr0_value); /* The second lookup should return the alternate ino */ @@ -171,8 +218,8 @@ TEST_F(Notify, inval_entry_below_root) out.body.entry.attr_valid = UINT64_MAX; out.body.entry.entry_valid = UINT64_MAX; }))); - expect_lookup(dir_ino, FNAME, ino0, seq); - expect_lookup(dir_ino, FNAME, ino1, seq); + expect_lookup(dir_ino, FNAME, ino0, 0, seq); + expect_lookup(dir_ino, FNAME, ino1, 0, seq); /* Fill the entry cache */ ASSERT_EQ(0, stat(FULLPATH, &sb)) << strerror(errno); @@ -186,7 +233,6 @@ TEST_F(Notify, inval_entry_below_root) ASSERT_EQ(0, pthread_create(&th0, NULL, inval_entry, &iea)) << strerror(errno); pthread_join(th0, &thr0_value); - /* It's not an error for an entry to not be cached */ EXPECT_EQ(0, (intptr_t)thr0_value); /* The second lookup should return the alternate ino */ @@ -206,7 +252,7 @@ TEST_F(Notify, inval_entry_invalidates_parent_attrs) Sequence seq; pthread_t th0; - expect_lookup(FUSE_ROOT_ID, RELPATH, ino, seq); + expect_lookup(FUSE_ROOT_ID, RELPATH, ino, 0, seq); EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { return (in.header.opcode == FUSE_GETATTR && @@ -232,9 +278,187 @@ TEST_F(Notify, inval_entry_invalidates_parent_attrs) ASSERT_EQ(0, pthread_create(&th0, NULL, inval_entry, &iea)) << strerror(errno); pthread_join(th0, &thr0_value); - /* It's not an error for an entry to not be cached */ EXPECT_EQ(0, (intptr_t)thr0_value); /* /'s attribute cache should be cleared */ ASSERT_EQ(0, stat("mountpoint", &sb)) << strerror(errno); +} + + +TEST_F(Notify, inval_inode_nonexistent) +{ + struct inval_inode_args iia; + ino_t ino = 42; + void *thr0_value; + pthread_t th0; + + iia.mock = m_mock; + iia.ino = ino; + iia.off = 0; + iia.len = 0; + ASSERT_EQ(0, pthread_create(&th0, NULL, inval_inode, &iia)) + << strerror(errno); + pthread_join(th0, &thr0_value); + /* It's not an error for an inode to not be cached */ + EXPECT_EQ(0, (intptr_t)thr0_value); +} + +TEST_F(Notify, inval_inode_with_clean_cache) +{ + const static char FULLPATH[] = "mountpoint/foo"; + const static char RELPATH[] = "foo"; + const char CONTENTS0[] = "abcdefgh"; + const char CONTENTS1[] = "ijklmnopqrstuvwxyz"; + struct inval_inode_args iia; + struct stat sb; + ino_t ino = 42; + void *thr0_value; + Sequence seq; + uid_t uid = 12345; + pthread_t th0; + ssize_t size0 = sizeof(CONTENTS0); + ssize_t size1 = sizeof(CONTENTS1); + char buf[80]; + int fd; + + expect_lookup(FUSE_ROOT_ID, RELPATH, ino, size0, seq); + expect_open(ino, 0, 1); + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in.header.opcode == FUSE_GETATTR && + in.header.nodeid == ino); + }, Eq(true)), + _) + ).WillOnce(Invoke(ReturnImmediate([=](auto i __unused, auto& out) { + SET_OUT_HEADER_LEN(out, attr); + out.body.attr.attr.mode = S_IFREG | 0644; + out.body.attr.attr_valid = UINT64_MAX; + out.body.attr.attr.size = size1; + out.body.attr.attr.uid = uid; + }))); + expect_read(ino, 0, size0, size0, CONTENTS0); + expect_read(ino, 0, size1, size1, CONTENTS1); + + /* Fill the data cache */ + fd = open(FULLPATH, O_RDWR); + ASSERT_LE(0, fd) << strerror(errno); + ASSERT_EQ(size0, read(fd, buf, size0)) << strerror(errno); + EXPECT_EQ(0, memcmp(buf, CONTENTS0, size0)); + + /* Evict the data cache */ + iia.mock = m_mock; + iia.ino = ino; + iia.off = 0; + iia.len = 0; + ASSERT_EQ(0, pthread_create(&th0, NULL, inval_inode, &iia)) + << strerror(errno); + pthread_join(th0, &thr0_value); + EXPECT_EQ(0, (intptr_t)thr0_value); + + /* cache attributes were been purged; this will trigger a new GETATTR */ + ASSERT_EQ(0, stat(FULLPATH, &sb)) << strerror(errno); + EXPECT_EQ(uid, sb.st_uid); + EXPECT_EQ(size1, sb.st_size); + + /* This read should not be serviced by cache */ + ASSERT_EQ(0, lseek(fd, 0, SEEK_SET)) << strerror(errno); + ASSERT_EQ(size1, read(fd, buf, size1)) << strerror(errno); + EXPECT_EQ(0, memcmp(buf, CONTENTS1, size1)); + + /* Deliberately leak fd. close(2) will be tested in release.cc */ +} + +/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=238312 */ +TEST_F(NotifyWriteback, DISABLED_inval_inode_with_dirty_cache) +{ + const static char FULLPATH[] = "mountpoint/foo"; + const static char RELPATH[] = "foo"; + const char CONTENTS[] = "abcdefgh"; + struct inval_inode_args iia; + ino_t ino = 42; + void *thr0_value; + Sequence seq; + pthread_t th0; + ssize_t bufsize = sizeof(CONTENTS); + int fd; + + expect_lookup(FUSE_ROOT_ID, RELPATH, ino, 0, seq); + expect_open(ino, 0, 1); + + /* Fill the data cache */ + fd = open(FULLPATH, O_RDWR); + ASSERT_EQ(bufsize, write(fd, CONTENTS, bufsize)) << strerror(errno); + + /* Evict the data cache */ + expect_write(ino, 0, bufsize, CONTENTS); + iia.mock = m_mock; + iia.ino = ino; + iia.off = 0; + iia.len = 0; + ASSERT_EQ(0, pthread_create(&th0, NULL, inval_inode, &iia)) + << strerror(errno); + pthread_join(th0, &thr0_value); + EXPECT_EQ(0, (intptr_t)thr0_value); + + /* Deliberately leak fd. close(2) will be tested in release.cc */ +} + +/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=238312 */ +TEST_F(NotifyWriteback, DISABLED_inval_inode_attrs_only) +{ + const static char FULLPATH[] = "mountpoint/foo"; + const static char RELPATH[] = "foo"; + const char CONTENTS[] = "abcdefgh"; + struct inval_inode_args iia; + struct stat sb; + uid_t uid = 12345; + ino_t ino = 42; + void *thr0_value; + Sequence seq; + pthread_t th0; + ssize_t bufsize = sizeof(CONTENTS); + int fd; + + expect_lookup(FUSE_ROOT_ID, RELPATH, ino, 0, seq); + expect_open(ino, 0, 1); + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in.header.opcode == FUSE_WRITE); + }, Eq(true)), + _) + ).Times(0); + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in.header.opcode == FUSE_GETATTR && + in.header.nodeid == FUSE_ROOT_ID); + }, Eq(true)), + _) + ).WillOnce(Invoke(ReturnImmediate([=](auto i __unused, auto& out) { + SET_OUT_HEADER_LEN(out, attr); + out.body.attr.attr.mode = S_IFREG | 0644; + out.body.attr.attr_valid = UINT64_MAX; + out.body.attr.attr.size = bufsize; + out.body.attr.attr.uid = uid; + }))); + + /* Fill the data cache */ + fd = open(FULLPATH, O_RDWR); + ASSERT_EQ(bufsize, write(fd, CONTENTS, bufsize)) << strerror(errno); + + /* Evict the attributes, but not data cache */ + iia.mock = m_mock; + iia.ino = ino; + iia.off = -1; + iia.len = 0; + ASSERT_EQ(0, pthread_create(&th0, NULL, inval_inode, &iia)) + << strerror(errno); + pthread_join(th0, &thr0_value); + EXPECT_EQ(0, (intptr_t)thr0_value); + + /* cache attributes were been purged; this will trigger a new GETATTR */ + ASSERT_EQ(0, stat(FULLPATH, &sb)) << strerror(errno); + EXPECT_EQ(uid, sb.st_uid); + EXPECT_EQ(bufsize, sb.st_size); + + /* Deliberately leak fd. close(2) will be tested in release.cc */ } From owner-svn-src-projects@freebsd.org Mon Jun 3 20:45:33 2019 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9AE1115BD811 for ; Mon, 3 Jun 2019 20:45:33 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 40D0C6EBF1; Mon, 3 Jun 2019 20:45:33 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1AF3FB634; Mon, 3 Jun 2019 20:45:33 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x53KjWRk044896; Mon, 3 Jun 2019 20:45:32 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x53KjWOw044893; Mon, 3 Jun 2019 20:45:32 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201906032045.x53KjWOw044893@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers Date: Mon, 3 Jun 2019 20:45:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r348582 - in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Commit-Revision: 348582 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 40D0C6EBF1 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.98 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.98)[-0.977,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US] X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 03 Jun 2019 20:45:33 -0000 Author: asomers Date: Mon Jun 3 20:45:32 2019 New Revision: 348582 URL: https://svnweb.freebsd.org/changeset/base/348582 Log: fusefs: don't require FUSE_EXPORT_SUPPORT for async invalidation In r348560 I thought that FUSE_EXPORT_SUPPORT was required for cases where the node to be invalidated (or the parent of the entry to be invalidated) wasn't cached. But I realize now that that's not the case. During entry invalidation, if the parent isn't in the vfs hash table, then it must've been reclaimed. And since fuse_vnop_reclaim does a cache_purge, that means the entry to be invalidated has already been removed from the namecache. And during inode invalidation, if the inode to be invalidated isn't in the vfs hash table, then it too must've been reclaimed. In that case it will have no buffer cache to invalidate. Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_internal.c projects/fuse2/sys/fs/fuse/fuse_vfsops.c projects/fuse2/tests/sys/fs/fusefs/notify.cc Modified: projects/fuse2/sys/fs/fuse/fuse_internal.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_internal.c Mon Jun 3 20:40:32 2019 (r348581) +++ projects/fuse2/sys/fs/fuse/fuse_internal.c Mon Jun 3 20:45:32 2019 (r348582) @@ -364,31 +364,17 @@ fuse_internal_fsync(struct vnode *vp, } /* Asynchronous invalidation */ -SDT_PROBE_DEFINE1(fusefs, , internal, invalidate_without_export, - "struct mount*"); SDT_PROBE_DEFINE2(fusefs, , internal, invalidate_cache_hit, "struct vnode*", "struct vnode*"); int fuse_internal_invalidate_entry(struct mount *mp, struct uio *uio) { struct fuse_notify_inval_entry_out fnieo; - struct fuse_data *data = fuse_get_mpdata(mp); struct componentname cn; struct vnode *dvp, *vp; char name[PATH_MAX]; int err; - if (!(data->dataflags & FSESS_EXPORT_SUPPORT)) { - /* - * Linux allows file systems without export support to use - * asynchronous notification because its inode cache is indexed - * purely by the inode number. But FreeBSD's vnode is cache - * requires access to the entire vnode structure. - */ - SDT_PROBE1(fusefs, , internal, invalidate_without_export, mp); - return (EINVAL); - } - if ((err = uiomove(&fnieo, sizeof(fnieo), uio)) != 0) return (err); @@ -405,6 +391,11 @@ fuse_internal_invalidate_entry(struct mount *mp, struc else err = fuse_internal_get_cached_vnode( mp, fnieo.parent, LK_SHARED, &dvp); + /* + * If dvp is not in the cache, then it must've been reclaimed. And + * since fuse_vnop_reclaim does a cache_purge, name's entry must've + * been invalidated already. So we can safely return if dvp == NULL + */ if (err != 0 || dvp == NULL) return (err); /* @@ -432,20 +423,8 @@ int fuse_internal_invalidate_inode(struct mount *mp, struct uio *uio) { struct fuse_notify_inval_inode_out fniio; - struct fuse_data *data = fuse_get_mpdata(mp); struct vnode *vp; int err; - - if (!(data->dataflags & FSESS_EXPORT_SUPPORT)) { - /* - * Linux allows file systems without export support to use - * asynchronous notification because its inode cache is indexed - * purely by the inode number. But FreeBSD's vnode is cache - * requires access to the entire vnode structure. - */ - SDT_PROBE1(fusefs, , internal, invalidate_without_export, mp); - return (EINVAL); - } if ((err = uiomove(&fniio, sizeof(fniio), uio)) != 0) return (err); Modified: projects/fuse2/sys/fs/fuse/fuse_vfsops.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_vfsops.c Mon Jun 3 20:40:32 2019 (r348581) +++ projects/fuse2/sys/fs/fuse/fuse_vfsops.c Mon Jun 3 20:45:32 2019 (r348582) @@ -519,9 +519,12 @@ alreadydead: return 0; } +SDT_PROBE_DEFINE1(fusefs, , vfsops, invalidate_without_export, + "struct mount*"); static int fuse_vfsop_vget(struct mount *mp, ino_t ino, int flags, struct vnode **vpp) { + struct fuse_data *data = fuse_get_mpdata(mp); uint64_t nodeid = ino; struct thread *td = curthread; struct fuse_dispatcher fdi; @@ -531,6 +534,15 @@ fuse_vfsop_vget(struct mount *mp, ino_t ino, int flags off_t filesize; enum vtype vtyp; int error; + + if (!(data->dataflags & FSESS_EXPORT_SUPPORT)) { + /* + * Unreachable unless you do something stupid, like export a + * nullfs mount of a fusefs file system. + */ + SDT_PROBE1(fusefs, , vfsops, invalidate_without_export, mp); + return (EOPNOTSUPP); + } error = fuse_internal_get_cached_vnode(mp, ino, flags, vpp); if (error || *vpp != NULL) Modified: projects/fuse2/tests/sys/fs/fusefs/notify.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/notify.cc Mon Jun 3 20:40:32 2019 (r348581) +++ projects/fuse2/tests/sys/fs/fusefs/notify.cc Mon Jun 3 20:45:32 2019 (r348582) @@ -50,11 +50,6 @@ using namespace testing; class Notify: public FuseTest { public: -virtual void SetUp() { - m_init_flags = FUSE_EXPORT_SUPPORT; - FuseTest::SetUp(); -} - void expect_lookup(uint64_t parent, const char *relpath, uint64_t ino, off_t size, Sequence &seq) { From owner-svn-src-projects@freebsd.org Mon Jun 3 23:24:08 2019 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 59C9015C0F12 for ; Mon, 3 Jun 2019 23:24:08 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E8F37749E5; Mon, 3 Jun 2019 23:24:07 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id BD3CDD2C2; Mon, 3 Jun 2019 23:24:07 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x53NO7jT028988; Mon, 3 Jun 2019 23:24:07 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x53NO70a028987; Mon, 3 Jun 2019 23:24:07 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201906032324.x53NO70a028987@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers Date: Mon, 3 Jun 2019 23:24:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r348593 - in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Commit-Revision: 348593 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: E8F37749E5 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.99 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.99)[-0.986,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US] X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 03 Jun 2019 23:24:08 -0000 Author: asomers Date: Mon Jun 3 23:24:07 2019 New Revision: 348593 URL: https://svnweb.freebsd.org/changeset/base/348593 Log: fusefs: respect RLIMIT_FSIZE Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_io.c projects/fuse2/tests/sys/fs/fusefs/write.cc Modified: projects/fuse2/sys/fs/fuse/fuse_io.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_io.c Mon Jun 3 23:17:35 2019 (r348592) +++ projects/fuse2/sys/fs/fuse/fuse_io.c Mon Jun 3 23:24:07 2019 (r348593) @@ -447,6 +447,9 @@ fuse_write_directbackend(struct vnode *vp, struct uio if (ioflag & IO_APPEND) uio_setoffset(uio, filesize); + if (vn_rlimit_fsize(vp, uio, uio->uio_td)) + return (EFBIG); + fdisp_init(&fdi, 0); while (uio->uio_resid > 0) { @@ -578,6 +581,9 @@ fuse_write_biobackend(struct vnode *vp, struct uio *ui if (ioflag & IO_APPEND) uio_setoffset(uio, filesize); + + if (vn_rlimit_fsize(vp, uio, uio->uio_td)) + return (EFBIG); /* * Find all of this file's B_NEEDCOMMIT buffers. If our writes Modified: projects/fuse2/tests/sys/fs/fusefs/write.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/write.cc Mon Jun 3 23:17:35 2019 (r348592) +++ projects/fuse2/tests/sys/fs/fusefs/write.cc Mon Jun 3 23:24:07 2019 (r348593) @@ -31,12 +31,15 @@ extern "C" { #include #include +#include #include #include +#include #include #include #include +#include #include } @@ -48,7 +51,23 @@ using namespace testing; class Write: public FuseTest { public: +static sig_atomic_t s_sigxfsz; +void SetUp() { + s_sigxfsz = 0; + FuseTest::SetUp(); +} + +void TearDown() { + struct sigaction sa; + + bzero(&sa, sizeof(sa)); + sa.sa_handler = SIG_DFL; + sigaction(SIGXFSZ, &sa, NULL); + + FuseTest::TearDown(); +} + void expect_lookup(const char *relpath, uint64_t ino, uint64_t size) { FuseTest::expect_lookup(relpath, ino, S_IFREG | 0644, size, 1); @@ -73,6 +92,8 @@ void expect_write(uint64_t ino, uint64_t offset, uint6 }; +sig_atomic_t Write::s_sigxfsz = 0; + class Write_7_8: public FuseTest { public: @@ -158,6 +179,10 @@ void expect_write(uint64_t ino, uint64_t offset, uint6 } }; +void sigxfsz_handler(int __unused sig) { + Write::s_sigxfsz = 1; +} + /* AIO writes need to set the header's pid field correctly */ /* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236379 */ TEST_F(AioWrite, DISABLED_aio_write) @@ -369,6 +394,36 @@ TEST_F(Write, direct_io_short_write_iov) iov[1].iov_base = (void*)CONTENTS1; iov[1].iov_len = strlen(CONTENTS1); ASSERT_EQ(size0, writev(fd, iov, 2)) << strerror(errno); + /* Deliberately leak fd. close(2) will be tested in release.cc */ +} + +/* fusefs should respect RLIMIT_FSIZE */ +TEST_F(Write, rlimit_fsize) +{ + const char FULLPATH[] = "mountpoint/some_file.txt"; + const char RELPATH[] = "some_file.txt"; + const char *CONTENTS = "abcdefgh"; + struct rlimit rl; + ssize_t bufsize = strlen(CONTENTS); + off_t offset = 1'000'000'000; + uint64_t ino = 42; + int fd; + + expect_lookup(RELPATH, ino, 0); + expect_open(ino, 0, 1); + + rl.rlim_cur = offset; + rl.rlim_max = 10 * offset; + ASSERT_EQ(0, setrlimit(RLIMIT_FSIZE, &rl)) << strerror(errno); + ASSERT_NE(SIG_ERR, signal(SIGXFSZ, sigxfsz_handler)) << strerror(errno); + + fd = open(FULLPATH, O_WRONLY); + + EXPECT_LE(0, fd) << strerror(errno); + + ASSERT_EQ(-1, pwrite(fd, CONTENTS, bufsize, offset)); + EXPECT_EQ(EFBIG, errno); + EXPECT_EQ(1, s_sigxfsz); /* Deliberately leak fd. close(2) will be tested in release.cc */ } From owner-svn-src-projects@freebsd.org Tue Jun 4 19:06:25 2019 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9078E15BAF80 for ; Tue, 4 Jun 2019 19:06:25 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 37107814E0; Tue, 4 Jun 2019 19:06:25 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 0E63421BD4; Tue, 4 Jun 2019 19:06:25 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x54J6OnK051448; Tue, 4 Jun 2019 19:06:24 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x54J6Ovu051447; Tue, 4 Jun 2019 19:06:24 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201906041906.x54J6Ovu051447@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers Date: Tue, 4 Jun 2019 19:06:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r348663 - projects/fuse2/tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/tests/sys/fs/fusefs X-SVN-Commit-Revision: 348663 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 37107814E0 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.96)[-0.964,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US] X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 04 Jun 2019 19:06:25 -0000 Author: asomers Date: Tue Jun 4 19:06:24 2019 New Revision: 348663 URL: https://svnweb.freebsd.org/changeset/base/348663 Log: fusefs: remove debugging code that accidentally snuck into r348365 Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/tests/sys/fs/fusefs/mknod.cc Modified: projects/fuse2/tests/sys/fs/fusefs/mknod.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/mknod.cc Tue Jun 4 18:55:02 2019 (r348662) +++ projects/fuse2/tests/sys/fs/fusefs/mknod.cc Tue Jun 4 19:06:24 2019 (r348663) @@ -55,7 +55,6 @@ const static mode_t c_umask = 022; (public) virtual void SetUp() { m_oldmask = umask(c_umask); - printf("m_oldmask=%#o\n", m_oldmask); if (geteuid() != 0) { GTEST_SKIP() << "Only root may use most mknod(2) variations"; } From owner-svn-src-projects@freebsd.org Wed Jun 5 20:18:57 2019 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9F0B715B8397 for ; Wed, 5 Jun 2019 20:18:57 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3FDEC6B952; Wed, 5 Jun 2019 20:18:57 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 34FA5A090; Wed, 5 Jun 2019 20:18:57 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x55KIvim040385; Wed, 5 Jun 2019 20:18:57 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x55KIvm3040384; Wed, 5 Jun 2019 20:18:57 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201906052018.x55KIvm3040384@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers Date: Wed, 5 Jun 2019 20:18:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r348700 - projects/fuse2/sys/fs/fuse X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/sys/fs/fuse X-SVN-Commit-Revision: 348700 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 3FDEC6B952 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.98 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.98)[-0.981,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US] X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 05 Jun 2019 20:18:57 -0000 Author: asomers Date: Wed Jun 5 20:18:56 2019 New Revision: 348700 URL: https://svnweb.freebsd.org/changeset/base/348700 Log: fusefs: simplify fuse_write_biobackend. No functional change. Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_io.c Modified: projects/fuse2/sys/fs/fuse/fuse_io.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_io.c Wed Jun 5 20:18:08 2019 (r348699) +++ projects/fuse2/sys/fs/fuse/fuse_io.c Wed Jun 5 20:18:56 2019 (r348700) @@ -594,6 +594,8 @@ fuse_write_biobackend(struct vnode *vp, struct uio *ui * no point optimizing for something that really won't ever happen. */ do { + bool direct_append, extending; + if (fuse_isdeadfs(vp)) { err = ENXIO; break; @@ -603,68 +605,54 @@ fuse_write_biobackend(struct vnode *vp, struct uio *ui n = MIN((unsigned)(biosize - on), uio->uio_resid); again: - /* - * Handle direct append and file extension cases, calculate - * unaligned buffer size. - */ - if (uio->uio_offset == filesize && n) { - /* - * Get the buffer (in its pre-append state to maintain - * B_CACHE if it was previously set). Resize the - * nfsnode after we have locked the buffer to prevent - * readers from reading garbage. - */ - bcount = on; - SDT_PROBE6(fusefs, , io, write_biobackend_start, - lbn, on, n, uio, bcount, true); - bp = getblk(vp, lbn, bcount, PCATCH, 0, 0); - + /* Get or create a buffer for the write */ + direct_append = uio->uio_offset == filesize && n; + if ((off_t)lbn * biosize + on + n < filesize) { + extending = false; + if ((off_t)(lbn + 1) * biosize < filesize) { + /* Not the file's last block */ + bcount = biosize; + } else { + /* The file's last block */ + bcount = filesize - (off_t)lbn *biosize; + } + } else { + extending = true; + bcount = on + n; + } + if (direct_append) { + /* + * Take care to preserve the buffer's B_CACHE state so + * as not to cause an unnecessary read. + */ + bp = getblk(vp, lbn, on, PCATCH, 0, 0); if (bp != NULL) { - long save; - - err = fuse_vnode_setsize(vp, cred, - uio->uio_offset + n); - fvdat->flag |= FN_SIZECHANGE; - - if (err) { - brelse(bp); - break; - } - save = bp->b_flags & B_CACHE; - bcount += n; + uint32_t save = bp->b_flags & B_CACHE; allocbuf(bp, bcount); bp->b_flags |= save; } } else { - /* - * Obtain the locked cache block first, and then - * adjust the file's size as appropriate. - */ - bcount = on + n; - if ((off_t)lbn * biosize + bcount < filesize) { - if ((off_t)(lbn + 1) * biosize < filesize) - bcount = biosize; - else - bcount = filesize - (off_t)lbn *biosize; - } - SDT_PROBE6(fusefs, , io, write_biobackend_start, - lbn, on, n, uio, bcount, false); bp = getblk(vp, lbn, bcount, PCATCH, 0, 0); - if (bp && uio->uio_offset + n > filesize) { - err = fuse_vnode_setsize(vp, cred, - uio->uio_offset + n); - fvdat->flag |= FN_SIZECHANGE; - if (err) { - brelse(bp); - break; - } - } } - if (!bp) { err = EINTR; break; } + if (extending) { + /* + * Extend file _after_ locking buffer so we won't race + * with other readers + */ + err = fuse_vnode_setsize(vp, cred, uio->uio_offset + n); + fvdat->flag |= FN_SIZECHANGE; + if (err) { + brelse(bp); + break; + } + } + + SDT_PROBE6(fusefs, , io, write_biobackend_start, + lbn, on, n, uio, bcount, direct_append); /* * Issue a READ if B_CACHE is not set. In special-append * mode, B_CACHE is based on the buffer prior to the write From owner-svn-src-projects@freebsd.org Thu Jun 6 15:07:50 2019 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4810715B632A for ; Thu, 6 Jun 2019 15:07:50 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id DC1E370886; Thu, 6 Jun 2019 15:07:49 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B56F91E234; Thu, 6 Jun 2019 15:07:49 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x56F7nax034930; Thu, 6 Jun 2019 15:07:49 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x56F7njo034929; Thu, 6 Jun 2019 15:07:49 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201906061507.x56F7njo034929@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers Date: Thu, 6 Jun 2019 15:07:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r348738 - projects/fuse2/sys/kern X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/sys/kern X-SVN-Commit-Revision: 348738 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: DC1E370886 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.98 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.98)[-0.983,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 06 Jun 2019 15:07:50 -0000 Author: asomers Date: Thu Jun 6 15:07:49 2019 New Revision: 348738 URL: https://svnweb.freebsd.org/changeset/base/348738 Log: [skip ci] Fix the comment for cache_purge(9) Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/kern/vfs_cache.c Modified: projects/fuse2/sys/kern/vfs_cache.c ============================================================================== --- projects/fuse2/sys/kern/vfs_cache.c Thu Jun 6 15:04:50 2019 (r348737) +++ projects/fuse2/sys/kern/vfs_cache.c Thu Jun 6 15:07:49 2019 (r348738) @@ -1963,7 +1963,7 @@ cache_changesize(int newmaxvnodes) } /* - * Invalidate all entries to a particular vnode. + * Invalidate all entries from and to a particular vnode. */ void cache_purge(struct vnode *vp) From owner-svn-src-projects@freebsd.org Thu Jun 6 15:11:37 2019 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6611C15B6408 for ; Thu, 6 Jun 2019 15:11:37 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 0217670AC0; Thu, 6 Jun 2019 15:11:37 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D317C1E280; Thu, 6 Jun 2019 15:11:36 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x56FBaNT039915; Thu, 6 Jun 2019 15:11:36 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x56FBaI8039914; Thu, 6 Jun 2019 15:11:36 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201906061511.x56FBaI8039914@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers Date: Thu, 6 Jun 2019 15:11:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r348739 - projects/fuse2/sys/kern X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/sys/kern X-SVN-Commit-Revision: 348739 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 0217670AC0 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.98 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.98)[-0.983,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 06 Jun 2019 15:11:37 -0000 Author: asomers Date: Thu Jun 6 15:11:36 2019 New Revision: 348739 URL: https://svnweb.freebsd.org/changeset/base/348739 Log: [skip ci] Better comments for vlrureclaim Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/kern/vfs_subr.c Modified: projects/fuse2/sys/kern/vfs_subr.c ============================================================================== --- projects/fuse2/sys/kern/vfs_subr.c Thu Jun 6 15:07:49 2019 (r348738) +++ projects/fuse2/sys/kern/vfs_subr.c Thu Jun 6 15:11:36 2019 (r348739) @@ -858,6 +858,12 @@ vattr_null(struct vattr *vap) * desirable to reuse such vnodes. These conditions may cause the * number of vnodes to reach some minimum value regardless of what * you set kern.maxvnodes to. Do not set kern.maxvnodes too low. + * + * @param mp Try to reclaim vnodes from this mountpoint + * @param reclaim_nc_src Only reclaim directories with outgoing namecache + * entries if this argument is strue + * @param reclaim_free Only reclaim free vnodes if this is set. + * @return The number of vnodes that were reclaimed. */ static int vlrureclaim(struct mount *mp, int reclaim_nc_src, int trigger) From owner-svn-src-projects@freebsd.org Thu Jun 6 16:20:57 2019 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 09A2715B884A for ; Thu, 6 Jun 2019 16:20:57 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id ADB607395E; Thu, 6 Jun 2019 16:20:56 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8809B1EF74; Thu, 6 Jun 2019 16:20:56 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x56GKuDm073935; Thu, 6 Jun 2019 16:20:56 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x56GKqCw073916; Thu, 6 Jun 2019 16:20:52 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201906061620.x56GKqCw073916@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers Date: Thu, 6 Jun 2019 16:20:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r348744 - in projects/fuse2: . bin/freebsd-version cddl/contrib/opensolaris/cmd/dtrace/test/tst/amd64 cddl/contrib/opensolaris/cmd/zdb cddl/contrib/opensolaris/cmd/zfs cddl/contrib/open... X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: in projects/fuse2: . bin/freebsd-version cddl/contrib/opensolaris/cmd/dtrace/test/tst/amd64 cddl/contrib/opensolaris/cmd/zdb cddl/contrib/opensolaris/cmd/zfs cddl/contrib/opensolaris/cmd/zpool cddl/co... X-SVN-Commit-Revision: 348744 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: ADB607395E X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.98 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.98)[-0.979,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 06 Jun 2019 16:20:57 -0000 Author: asomers Date: Thu Jun 6 16:20:50 2019 New Revision: 348744 URL: https://svnweb.freebsd.org/changeset/base/348744 Log: MFHead @348740 Sponsored by: The FreeBSD Foundation Added: projects/fuse2/cddl/contrib/opensolaris/cmd/dtrace/test/tst/amd64/ - copied from r348740, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/amd64/ projects/fuse2/cddl/usr.sbin/dtrace/tests/amd64/ - copied from r348740, head/cddl/usr.sbin/dtrace/tests/amd64/ projects/fuse2/cddl/usr.sbin/dtrace/tests/i386/ - copied from r348740, head/cddl/usr.sbin/dtrace/tests/i386/ projects/fuse2/contrib/libarchive/libarchive/archive_entry_misc.3 - copied unchanged from r348740, head/contrib/libarchive/libarchive/archive_entry_misc.3 projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_mtree_noprint.mtree.uu - copied unchanged from r348740, head/contrib/libarchive/libarchive/test/test_read_format_mtree_noprint.mtree.uu projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_rar5_distance_overflow.rar.uu - copied unchanged from r348740, head/contrib/libarchive/libarchive/test/test_read_format_rar5_distance_overflow.rar.uu projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_rar5_extra_field_version.rar.uu - copied unchanged from r348740, head/contrib/libarchive/libarchive/test/test_read_format_rar5_extra_field_version.rar.uu projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_rar5_fileattr.rar.uu - copied unchanged from r348740, head/contrib/libarchive/libarchive/test/test_read_format_rar5_fileattr.rar.uu projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_rar5_hardlink.rar.uu - copied unchanged from r348740, head/contrib/libarchive/libarchive/test/test_read_format_rar5_hardlink.rar.uu projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_rar5_invalid_dict_reference.rar.uu - copied unchanged from r348740, head/contrib/libarchive/libarchive/test/test_read_format_rar5_invalid_dict_reference.rar.uu projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_rar5_leftshift1.rar.uu - copied unchanged from r348740, head/contrib/libarchive/libarchive/test/test_read_format_rar5_leftshift1.rar.uu projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_rar5_leftshift2.rar.uu - copied unchanged from r348740, head/contrib/libarchive/libarchive/test/test_read_format_rar5_leftshift2.rar.uu projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_rar5_nonempty_dir_stream.rar.uu - copied unchanged from r348740, head/contrib/libarchive/libarchive/test/test_read_format_rar5_nonempty_dir_stream.rar.uu projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_rar5_owner.rar.uu - copied unchanged from r348740, head/contrib/libarchive/libarchive/test/test_read_format_rar5_owner.rar.uu projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_rar5_readtables_overflow.rar.uu - copied unchanged from r348740, head/contrib/libarchive/libarchive/test/test_read_format_rar5_readtables_overflow.rar.uu projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_rar5_symlink.rar.uu - copied unchanged from r348740, head/contrib/libarchive/libarchive/test/test_read_format_rar5_symlink.rar.uu projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_rar5_truncated_huff.rar.uu - copied unchanged from r348740, head/contrib/libarchive/libarchive/test/test_read_format_rar5_truncated_huff.rar.uu projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_rar_ppmd_use_after_free.rar.uu - copied unchanged from r348740, head/contrib/libarchive/libarchive/test/test_read_format_rar_ppmd_use_after_free.rar.uu projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_raw.data.gz.uu - copied unchanged from r348740, head/contrib/libarchive/libarchive/test/test_read_format_raw.data.gz.uu projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_tar_empty_with_gnulabel.c - copied unchanged from r348740, head/contrib/libarchive/libarchive/test/test_read_format_tar_empty_with_gnulabel.c projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_tar_empty_with_gnulabel.tar.uu - copied unchanged from r348740, head/contrib/libarchive/libarchive/test/test_read_format_tar_empty_with_gnulabel.tar.uu projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_zip_7075_utf8_paths.c - copied unchanged from r348740, head/contrib/libarchive/libarchive/test/test_read_format_zip_7075_utf8_paths.c projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_zip_7075_utf8_paths.zip.uu - copied unchanged from r348740, head/contrib/libarchive/libarchive/test/test_read_format_zip_7075_utf8_paths.zip.uu projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_zip_extra_padding.c - copied unchanged from r348740, head/contrib/libarchive/libarchive/test/test_read_format_zip_extra_padding.c projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_zip_extra_padding.zip.uu - copied unchanged from r348740, head/contrib/libarchive/libarchive/test/test_read_format_zip_extra_padding.zip.uu projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_zip_lzma_alone_leak.zipx.uu - copied unchanged from r348740, head/contrib/libarchive/libarchive/test/test_read_format_zip_lzma_alone_leak.zipx.uu projects/fuse2/contrib/libarchive/tar/test/test_option_exclude_vcs.c - copied unchanged from r348740, head/contrib/libarchive/tar/test/test_option_exclude_vcs.c projects/fuse2/contrib/one-true-awk/ChangeLog - copied unchanged from r348740, head/contrib/one-true-awk/ChangeLog projects/fuse2/contrib/one-true-awk/LICENSE - copied unchanged from r348740, head/contrib/one-true-awk/LICENSE projects/fuse2/contrib/one-true-awk/REGRESS - copied unchanged from r348740, head/contrib/one-true-awk/REGRESS projects/fuse2/contrib/one-true-awk/bugs-fixed/ - copied from r348740, head/contrib/one-true-awk/bugs-fixed/ projects/fuse2/contrib/one-true-awk/proctab.c - copied unchanged from r348740, head/contrib/one-true-awk/proctab.c projects/fuse2/etc/shells - copied unchanged from r348740, head/etc/shells projects/fuse2/libexec/rc/rc.bsdextended - copied unchanged from r348740, head/libexec/rc/rc.bsdextended projects/fuse2/libexec/rc/rc.firewall - copied unchanged from r348740, head/libexec/rc/rc.firewall projects/fuse2/libexec/rc/rc.sendmail - copied unchanged from r348740, head/libexec/rc/rc.sendmail projects/fuse2/share/man/man9/DEFINE_IFUNC.9 - copied unchanged from r348740, head/share/man/man9/DEFINE_IFUNC.9 projects/fuse2/share/termcap/termcap.small - copied unchanged from r348740, head/share/termcap/termcap.small projects/fuse2/sys/arm/allwinner/clkng/aw_clk_frac.c - copied unchanged from r348740, head/sys/arm/allwinner/clkng/aw_clk_frac.c projects/fuse2/sys/arm/allwinner/clkng/aw_clk_frac.h - copied unchanged from r348740, head/sys/arm/allwinner/clkng/aw_clk_frac.h projects/fuse2/sys/crypto/aesni/aesni_ccm.c - copied unchanged from r348740, head/sys/crypto/aesni/aesni_ccm.c projects/fuse2/sys/dev/uart/uart_cpu_acpi.c - copied unchanged from r348740, head/sys/dev/uart/uart_cpu_acpi.c projects/fuse2/sys/dev/usb/usb_fdt_support.c - copied unchanged from r348740, head/sys/dev/usb/usb_fdt_support.c projects/fuse2/sys/dev/usb/usb_fdt_support.h - copied unchanged from r348740, head/sys/dev/usb/usb_fdt_support.h projects/fuse2/sys/modules/lindebugfs/ - copied from r348740, head/sys/modules/lindebugfs/ projects/fuse2/sys/sys/_eventhandler.h - copied unchanged from r348740, head/sys/sys/_eventhandler.h projects/fuse2/tests/sys/netinet/socket_afinet.c - copied unchanged from r348740, head/tests/sys/netinet/socket_afinet.c projects/fuse2/usr.bin/login/login.access - copied unchanged from r348740, head/usr.bin/login/login.access projects/fuse2/usr.bin/posixshmcontrol/ - copied from r348740, head/usr.bin/posixshmcontrol/ Deleted: projects/fuse2/etc/login.access projects/fuse2/etc/rc.bsdextended projects/fuse2/etc/rc.firewall projects/fuse2/etc/rc.sendmail projects/fuse2/etc/termcap.small projects/fuse2/lib/libc/gen/shells projects/fuse2/share/man/man4/de.4 projects/fuse2/share/man/man4/ed.4 projects/fuse2/share/man/man4/man4.i386/cs.4 projects/fuse2/share/man/man4/man4.i386/ep.4 projects/fuse2/share/man/man4/man4.i386/ex.4 projects/fuse2/share/man/man4/man4.i386/fe.4 projects/fuse2/share/man/man4/man4.i386/vx.4 projects/fuse2/share/man/man4/man4.powerpc/bm.4 projects/fuse2/share/man/man4/pcn.4 projects/fuse2/share/man/man4/sf.4 projects/fuse2/share/man/man4/sn.4 projects/fuse2/share/man/man4/tl.4 projects/fuse2/share/man/man4/tx.4 projects/fuse2/share/man/man4/txp.4 projects/fuse2/share/man/man4/wb.4 projects/fuse2/share/man/man4/xe.4 projects/fuse2/stand/i386/kgzldr/ projects/fuse2/sys/dev/bm/ projects/fuse2/sys/dev/cs/ projects/fuse2/sys/dev/de/ projects/fuse2/sys/dev/ed/ projects/fuse2/sys/dev/ep/ projects/fuse2/sys/dev/ex/ projects/fuse2/sys/dev/fe/ projects/fuse2/sys/dev/pcn/ projects/fuse2/sys/dev/sf/ projects/fuse2/sys/dev/sn/ projects/fuse2/sys/dev/tl/ projects/fuse2/sys/dev/tx/ projects/fuse2/sys/dev/txp/ projects/fuse2/sys/dev/vx/ projects/fuse2/sys/dev/wb/ projects/fuse2/sys/dev/xe/ projects/fuse2/sys/modules/bm/ projects/fuse2/sys/modules/cs/ projects/fuse2/sys/modules/de/ projects/fuse2/sys/modules/ed/ projects/fuse2/sys/modules/ep/ projects/fuse2/sys/modules/ex/ projects/fuse2/sys/modules/fe/ projects/fuse2/sys/modules/pcn/ projects/fuse2/sys/modules/sf/ projects/fuse2/sys/modules/sn/ projects/fuse2/sys/modules/tl/ projects/fuse2/sys/modules/tx/ projects/fuse2/sys/modules/txp/ projects/fuse2/sys/modules/vx/ projects/fuse2/sys/modules/wb/ projects/fuse2/sys/modules/xe/ projects/fuse2/usr.sbin/kgzip/ Modified: projects/fuse2/Makefile projects/fuse2/Makefile.inc1 projects/fuse2/ObsoleteFiles.inc projects/fuse2/UPDATING projects/fuse2/bin/freebsd-version/Makefile projects/fuse2/cddl/contrib/opensolaris/cmd/zdb/zdb.c projects/fuse2/cddl/contrib/opensolaris/cmd/zfs/zfs-program.8 projects/fuse2/cddl/contrib/opensolaris/cmd/zfs/zfs.8 projects/fuse2/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c projects/fuse2/cddl/contrib/opensolaris/cmd/zpool/zpool.8 projects/fuse2/cddl/contrib/opensolaris/cmd/ztest/ztest.c projects/fuse2/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c projects/fuse2/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_diff.c projects/fuse2/cddl/usr.sbin/dtrace/tests/Makefile projects/fuse2/cddl/usr.sbin/dtrace/tests/tools/genmakefiles.sh projects/fuse2/contrib/elftoolchain/elfcopy/ascii.c projects/fuse2/contrib/elftoolchain/elfcopy/binary.c projects/fuse2/contrib/elftoolchain/elfcopy/elfcopy.h projects/fuse2/contrib/elftoolchain/elfcopy/main.c projects/fuse2/contrib/elftoolchain/elfcopy/sections.c projects/fuse2/contrib/elftoolchain/libdwarf/libdwarf_reloc.c projects/fuse2/contrib/elftoolchain/libelf/_libelf.h projects/fuse2/contrib/elftoolchain/libelf/elf_end.c projects/fuse2/contrib/elftoolchain/libelf/elf_scn.c projects/fuse2/contrib/elftoolchain/libelf/elf_update.c projects/fuse2/contrib/elftoolchain/libelf/libelf_allocate.c projects/fuse2/contrib/elftoolchain/libelf/libelf_ehdr.c projects/fuse2/contrib/elftoolchain/libelf/libelf_extended.c projects/fuse2/contrib/elftoolchain/libelftc/elftc_string_table.c projects/fuse2/contrib/elftoolchain/libelftc/elftc_string_table_create.3 projects/fuse2/contrib/elftoolchain/readelf/readelf.1 projects/fuse2/contrib/elftoolchain/readelf/readelf.c projects/fuse2/contrib/libarchive/NEWS projects/fuse2/contrib/libarchive/cpio/test/test_basic.c projects/fuse2/contrib/libarchive/cpio/test/test_format_newc.c projects/fuse2/contrib/libarchive/cpio/test/test_gcpio_compat.c projects/fuse2/contrib/libarchive/cpio/test/test_option_L_upper.c projects/fuse2/contrib/libarchive/cpio/test/test_option_a.c projects/fuse2/contrib/libarchive/cpio/test/test_option_c.c projects/fuse2/contrib/libarchive/libarchive/archive.h projects/fuse2/contrib/libarchive/libarchive/archive_entry.c projects/fuse2/contrib/libarchive/libarchive/archive_entry.h projects/fuse2/contrib/libarchive/libarchive/archive_entry_private.h projects/fuse2/contrib/libarchive/libarchive/archive_hmac.c projects/fuse2/contrib/libarchive/libarchive/archive_match.c projects/fuse2/contrib/libarchive/libarchive/archive_platform.h projects/fuse2/contrib/libarchive/libarchive/archive_read.c projects/fuse2/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c projects/fuse2/contrib/libarchive/libarchive/archive_read_disk_posix.c projects/fuse2/contrib/libarchive/libarchive/archive_read_private.h projects/fuse2/contrib/libarchive/libarchive/archive_read_set_format.c projects/fuse2/contrib/libarchive/libarchive/archive_read_support_filter_gzip.c projects/fuse2/contrib/libarchive/libarchive/archive_read_support_format_cab.c projects/fuse2/contrib/libarchive/libarchive/archive_read_support_format_mtree.c projects/fuse2/contrib/libarchive/libarchive/archive_read_support_format_rar.c projects/fuse2/contrib/libarchive/libarchive/archive_read_support_format_rar5.c projects/fuse2/contrib/libarchive/libarchive/archive_read_support_format_raw.c projects/fuse2/contrib/libarchive/libarchive/archive_read_support_format_tar.c projects/fuse2/contrib/libarchive/libarchive/archive_read_support_format_warc.c projects/fuse2/contrib/libarchive/libarchive/archive_read_support_format_xar.c projects/fuse2/contrib/libarchive/libarchive/archive_read_support_format_zip.c projects/fuse2/contrib/libarchive/libarchive/archive_util.c projects/fuse2/contrib/libarchive/libarchive/archive_write_add_filter_xz.c projects/fuse2/contrib/libarchive/libarchive/archive_write_disk_posix.c projects/fuse2/contrib/libarchive/libarchive/archive_write_set_format_pax.c projects/fuse2/contrib/libarchive/libarchive/archive_write_set_format_xar.c projects/fuse2/contrib/libarchive/libarchive/test/test_entry.c projects/fuse2/contrib/libarchive/libarchive/test/test_fuzz.c projects/fuse2/contrib/libarchive/libarchive/test/test_read_disk_directory_traversals.c projects/fuse2/contrib/libarchive/libarchive/test/test_read_extract.c projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_mtree.c projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_rar.c projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_rar5.c projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_rar5_win32.rar.uu projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_raw.c projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_zip.c projects/fuse2/contrib/libarchive/libarchive/test/test_sparse_basic.c projects/fuse2/contrib/libarchive/libarchive/test/test_write_disk_symlink.c projects/fuse2/contrib/libarchive/tar/bsdtar.1 projects/fuse2/contrib/libarchive/tar/bsdtar.c projects/fuse2/contrib/libarchive/tar/bsdtar.h projects/fuse2/contrib/libarchive/tar/cmdline.c projects/fuse2/contrib/libarchive/tar/test/test_basic.c projects/fuse2/contrib/libarchive/tar/test/test_copy.c projects/fuse2/contrib/libarchive/tar/test/test_option_C_mtree.c projects/fuse2/contrib/libarchive/tar/test/test_option_H_upper.c projects/fuse2/contrib/libarchive/tar/test/test_option_L_upper.c projects/fuse2/contrib/libarchive/tar/test/test_option_U_upper.c projects/fuse2/contrib/libarchive/tar/test/test_option_n.c projects/fuse2/contrib/libarchive/tar/test/test_option_s.c projects/fuse2/contrib/libarchive/tar/test/test_strip_components.c projects/fuse2/contrib/libarchive/tar/test/test_symlink_dir.c projects/fuse2/contrib/libarchive/test_utils/test_common.h projects/fuse2/contrib/libarchive/test_utils/test_main.c projects/fuse2/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp projects/fuse2/contrib/netbsd-tests/lib/libc/sys/t_mlock.c projects/fuse2/contrib/one-true-awk/FIXES projects/fuse2/contrib/one-true-awk/awk.1 projects/fuse2/contrib/one-true-awk/awk.h projects/fuse2/contrib/one-true-awk/awkgram.y projects/fuse2/contrib/one-true-awk/b.c projects/fuse2/contrib/one-true-awk/lex.c projects/fuse2/contrib/one-true-awk/lib.c projects/fuse2/contrib/one-true-awk/main.c projects/fuse2/contrib/one-true-awk/makefile projects/fuse2/contrib/one-true-awk/maketab.c projects/fuse2/contrib/one-true-awk/proto.h projects/fuse2/contrib/one-true-awk/run.c projects/fuse2/contrib/one-true-awk/tran.c projects/fuse2/contrib/wpa/wpa_supplicant/main.c projects/fuse2/contrib/wpa/wpa_supplicant/wpa_supplicant.c projects/fuse2/crypto/heimdal/lib/ipc/server.c projects/fuse2/crypto/openssl/CHANGES projects/fuse2/crypto/openssl/Configure projects/fuse2/crypto/openssl/INSTALL projects/fuse2/crypto/openssl/NEWS projects/fuse2/crypto/openssl/NOTES.PERL projects/fuse2/crypto/openssl/README projects/fuse2/crypto/openssl/apps/asn1pars.c projects/fuse2/crypto/openssl/apps/cms.c projects/fuse2/crypto/openssl/apps/enc.c projects/fuse2/crypto/openssl/apps/ocsp.c projects/fuse2/crypto/openssl/apps/s_cb.c projects/fuse2/crypto/openssl/apps/s_client.c projects/fuse2/crypto/openssl/apps/speed.c projects/fuse2/crypto/openssl/crypto/aes/asm/aesp8-ppc.pl projects/fuse2/crypto/openssl/crypto/bio/b_addr.c projects/fuse2/crypto/openssl/crypto/bio/bss_mem.c projects/fuse2/crypto/openssl/crypto/blake2/blake2b.c projects/fuse2/crypto/openssl/crypto/bn/asm/mips.pl projects/fuse2/crypto/openssl/crypto/bn/asm/ppc.pl projects/fuse2/crypto/openssl/crypto/bn/bn_ctx.c projects/fuse2/crypto/openssl/crypto/bn/bn_lib.c projects/fuse2/crypto/openssl/crypto/bn/bn_prime.c projects/fuse2/crypto/openssl/crypto/chacha/build.info projects/fuse2/crypto/openssl/crypto/conf/conf_sap.c projects/fuse2/crypto/openssl/crypto/dh/dh_check.c projects/fuse2/crypto/openssl/crypto/dh/dh_gen.c projects/fuse2/crypto/openssl/crypto/dh/dh_key.c projects/fuse2/crypto/openssl/crypto/dh/dh_pmeth.c projects/fuse2/crypto/openssl/crypto/dsa/dsa_gen.c projects/fuse2/crypto/openssl/crypto/dsa/dsa_ossl.c projects/fuse2/crypto/openssl/crypto/dsa/dsa_pmeth.c projects/fuse2/crypto/openssl/crypto/dso/dso_openssl.c projects/fuse2/crypto/openssl/crypto/ec/curve25519.c projects/fuse2/crypto/openssl/crypto/ec/curve448/curve448.c projects/fuse2/crypto/openssl/crypto/ec/curve448/curve448_tables.c projects/fuse2/crypto/openssl/crypto/ec/curve448/curve448utils.h projects/fuse2/crypto/openssl/crypto/ec/curve448/f_generic.c projects/fuse2/crypto/openssl/crypto/ec/curve448/scalar.c projects/fuse2/crypto/openssl/crypto/ec/ec2_oct.c projects/fuse2/crypto/openssl/crypto/ec/ec2_smpl.c projects/fuse2/crypto/openssl/crypto/ec/ec_ameth.c projects/fuse2/crypto/openssl/crypto/ec/ec_lib.c projects/fuse2/crypto/openssl/crypto/ec/ec_mult.c projects/fuse2/crypto/openssl/crypto/ec/ec_pmeth.c projects/fuse2/crypto/openssl/crypto/ec/ecdh_ossl.c projects/fuse2/crypto/openssl/crypto/ec/ecp_nistp521.c projects/fuse2/crypto/openssl/crypto/ec/ecp_nistz256.c projects/fuse2/crypto/openssl/crypto/ec/ecp_smpl.c projects/fuse2/crypto/openssl/crypto/err/err.c projects/fuse2/crypto/openssl/crypto/evp/digest.c projects/fuse2/crypto/openssl/crypto/evp/e_aes.c projects/fuse2/crypto/openssl/crypto/evp/e_aria.c projects/fuse2/crypto/openssl/crypto/evp/e_chacha20_poly1305.c projects/fuse2/crypto/openssl/crypto/evp/p_lib.c projects/fuse2/crypto/openssl/crypto/evp/p_open.c projects/fuse2/crypto/openssl/crypto/hmac/hmac.c projects/fuse2/crypto/openssl/crypto/include/internal/dso_conf.h projects/fuse2/crypto/openssl/crypto/include/internal/dso_conf.h.in projects/fuse2/crypto/openssl/crypto/init.c projects/fuse2/crypto/openssl/crypto/mips_arch.h projects/fuse2/crypto/openssl/crypto/modes/asm/ghash-x86_64.pl projects/fuse2/crypto/openssl/crypto/modes/ccm128.c projects/fuse2/crypto/openssl/crypto/o_str.c projects/fuse2/crypto/openssl/crypto/objects/obj_dat.h projects/fuse2/crypto/openssl/crypto/objects/objects.txt projects/fuse2/crypto/openssl/crypto/ocsp/ocsp_ext.c projects/fuse2/crypto/openssl/crypto/ocsp/ocsp_lib.c projects/fuse2/crypto/openssl/crypto/pem/pem_sign.c projects/fuse2/crypto/openssl/crypto/poly1305/build.info projects/fuse2/crypto/openssl/crypto/ppccap.c projects/fuse2/crypto/openssl/crypto/rand/drbg_lib.c projects/fuse2/crypto/openssl/crypto/rand/rand_lib.c projects/fuse2/crypto/openssl/crypto/rand/rand_unix.c projects/fuse2/crypto/openssl/crypto/rand/randfile.c projects/fuse2/crypto/openssl/crypto/rc4/build.info projects/fuse2/crypto/openssl/crypto/rsa/rsa_ameth.c projects/fuse2/crypto/openssl/crypto/rsa/rsa_gen.c projects/fuse2/crypto/openssl/crypto/rsa/rsa_oaep.c projects/fuse2/crypto/openssl/crypto/rsa/rsa_ossl.c projects/fuse2/crypto/openssl/crypto/rsa/rsa_pk1.c projects/fuse2/crypto/openssl/crypto/rsa/rsa_pmeth.c projects/fuse2/crypto/openssl/crypto/rsa/rsa_ssl.c projects/fuse2/crypto/openssl/crypto/rsa/rsa_x931g.c projects/fuse2/crypto/openssl/crypto/sha/keccak1600.c projects/fuse2/crypto/openssl/crypto/x509/x509_lu.c projects/fuse2/crypto/openssl/crypto/x509v3/v3_genn.c projects/fuse2/crypto/openssl/doc/man1/genpkey.pod projects/fuse2/crypto/openssl/doc/man1/pkeyutl.pod projects/fuse2/crypto/openssl/doc/man1/s_client.pod projects/fuse2/crypto/openssl/doc/man1/s_server.pod projects/fuse2/crypto/openssl/doc/man1/s_time.pod projects/fuse2/crypto/openssl/doc/man1/ts.pod projects/fuse2/crypto/openssl/doc/man3/ASN1_TIME_set.pod projects/fuse2/crypto/openssl/doc/man3/ASN1_generate_nconf.pod projects/fuse2/crypto/openssl/doc/man3/BIO_connect.pod projects/fuse2/crypto/openssl/doc/man3/BIO_push.pod projects/fuse2/crypto/openssl/doc/man3/BIO_s_file.pod projects/fuse2/crypto/openssl/doc/man3/BIO_s_mem.pod projects/fuse2/crypto/openssl/doc/man3/BN_CTX_start.pod projects/fuse2/crypto/openssl/doc/man3/BN_new.pod projects/fuse2/crypto/openssl/doc/man3/BN_rand.pod projects/fuse2/crypto/openssl/doc/man3/BN_security_bits.pod projects/fuse2/crypto/openssl/doc/man3/CMS_verify.pod projects/fuse2/crypto/openssl/doc/man3/CONF_modules_load_file.pod projects/fuse2/crypto/openssl/doc/man3/DES_random_key.pod projects/fuse2/crypto/openssl/doc/man3/ECDSA_SIG_new.pod projects/fuse2/crypto/openssl/doc/man3/EVP_DigestVerifyInit.pod projects/fuse2/crypto/openssl/doc/man3/EVP_EncryptInit.pod projects/fuse2/crypto/openssl/doc/man3/EVP_PKEY_meth_new.pod projects/fuse2/crypto/openssl/doc/man3/EVP_PKEY_set1_RSA.pod projects/fuse2/crypto/openssl/doc/man3/EVP_chacha20.pod projects/fuse2/crypto/openssl/doc/man3/HMAC.pod projects/fuse2/crypto/openssl/doc/man3/OBJ_nid2obj.pod projects/fuse2/crypto/openssl/doc/man3/OCSP_cert_to_id.pod projects/fuse2/crypto/openssl/doc/man3/PEM_read_bio_PrivateKey.pod projects/fuse2/crypto/openssl/doc/man3/RAND_DRBG_generate.pod projects/fuse2/crypto/openssl/doc/man3/RAND_DRBG_get0_master.pod projects/fuse2/crypto/openssl/doc/man3/RAND_DRBG_new.pod projects/fuse2/crypto/openssl/doc/man3/RAND_DRBG_reseed.pod projects/fuse2/crypto/openssl/doc/man3/RAND_DRBG_set_callbacks.pod projects/fuse2/crypto/openssl/doc/man3/RAND_add.pod projects/fuse2/crypto/openssl/doc/man3/RAND_bytes.pod projects/fuse2/crypto/openssl/doc/man3/RAND_cleanup.pod projects/fuse2/crypto/openssl/doc/man3/RSA_padding_add_PKCS1_type_1.pod projects/fuse2/crypto/openssl/doc/man3/RSA_public_encrypt.pod projects/fuse2/crypto/openssl/doc/man3/SSL_CIPHER_get_name.pod projects/fuse2/crypto/openssl/doc/man3/SSL_CONF_cmd.pod projects/fuse2/crypto/openssl/doc/man3/SSL_CTX_load_verify_locations.pod projects/fuse2/crypto/openssl/doc/man3/SSL_CTX_new.pod projects/fuse2/crypto/openssl/doc/man3/SSL_CTX_set1_sigalgs.pod projects/fuse2/crypto/openssl/doc/man3/SSL_CTX_set_client_hello_cb.pod projects/fuse2/crypto/openssl/doc/man3/SSL_CTX_set_default_passwd_cb.pod projects/fuse2/crypto/openssl/doc/man3/SSL_CTX_set_generate_session_id.pod projects/fuse2/crypto/openssl/doc/man3/SSL_CTX_set_min_proto_version.pod projects/fuse2/crypto/openssl/doc/man3/SSL_CTX_set_read_ahead.pod projects/fuse2/crypto/openssl/doc/man3/SSL_CTX_set_split_send_fragment.pod projects/fuse2/crypto/openssl/doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod projects/fuse2/crypto/openssl/doc/man3/SSL_CTX_set_tmp_dh_callback.pod projects/fuse2/crypto/openssl/doc/man3/SSL_get_error.pod projects/fuse2/crypto/openssl/doc/man3/SSL_load_client_CA_file.pod projects/fuse2/crypto/openssl/doc/man3/SSL_read.pod projects/fuse2/crypto/openssl/doc/man3/SSL_session_reused.pod projects/fuse2/crypto/openssl/doc/man3/SSL_shutdown.pod projects/fuse2/crypto/openssl/doc/man3/SSL_write.pod projects/fuse2/crypto/openssl/doc/man3/X509_LOOKUP_meth_new.pod projects/fuse2/crypto/openssl/doc/man3/X509_NAME_add_entry_by_txt.pod projects/fuse2/crypto/openssl/doc/man3/X509_NAME_get_index_by_NID.pod projects/fuse2/crypto/openssl/doc/man3/X509_get_subject_name.pod projects/fuse2/crypto/openssl/doc/man3/d2i_X509.pod projects/fuse2/crypto/openssl/e_os.h projects/fuse2/crypto/openssl/engines/e_padlock.c projects/fuse2/crypto/openssl/include/internal/dsoerr.h projects/fuse2/crypto/openssl/include/internal/refcount.h projects/fuse2/crypto/openssl/include/internal/tsan_assist.h projects/fuse2/crypto/openssl/include/openssl/err.h projects/fuse2/crypto/openssl/include/openssl/evp.h projects/fuse2/crypto/openssl/include/openssl/obj_mac.h projects/fuse2/crypto/openssl/include/openssl/ocsp.h projects/fuse2/crypto/openssl/include/openssl/opensslv.h projects/fuse2/crypto/openssl/include/openssl/ssl.h projects/fuse2/crypto/openssl/include/openssl/x509v3.h projects/fuse2/crypto/openssl/ssl/ssl_lib.c projects/fuse2/crypto/openssl/ssl/ssl_locl.h projects/fuse2/crypto/openssl/ssl/statem/extensions.c projects/fuse2/crypto/openssl/ssl/statem/extensions_clnt.c projects/fuse2/crypto/openssl/ssl/statem/extensions_srvr.c projects/fuse2/crypto/openssl/ssl/statem/statem_clnt.c projects/fuse2/crypto/openssl/ssl/statem/statem_srvr.c projects/fuse2/etc/Makefile projects/fuse2/etc/mtree/BSD.tests.dist projects/fuse2/gnu/usr.bin/binutils/Makefile projects/fuse2/include/mk-osreldate.sh projects/fuse2/lib/atf/libatf-c/tests/Makefile projects/fuse2/lib/clang/libllvm/Makefile projects/fuse2/lib/csu/mips/crtn.S projects/fuse2/lib/geom/eli/geli.8 projects/fuse2/lib/geom/eli/geom_eli.c projects/fuse2/lib/libarchive/Makefile projects/fuse2/lib/libarchive/tests/Makefile projects/fuse2/lib/libbe/be_access.c projects/fuse2/lib/libc/amd64/sys/amd64_get_fsbase.c projects/fuse2/lib/libc/amd64/sys/amd64_get_gsbase.c projects/fuse2/lib/libc/amd64/sys/amd64_set_fsbase.c projects/fuse2/lib/libc/amd64/sys/amd64_set_gsbase.c projects/fuse2/lib/libc/gen/Makefile.inc projects/fuse2/lib/libc/net/rthdr.c projects/fuse2/lib/libc/resolv/res_findzonecut.c projects/fuse2/lib/libc/stdlib/bsearch.3 projects/fuse2/lib/libc/sys/Makefile.inc projects/fuse2/lib/libc/sys/mlock.2 projects/fuse2/lib/libc/sys/mlockall.2 projects/fuse2/lib/libc/sys/unlink.2 projects/fuse2/lib/libc/tests/sys/mlock_helper.c projects/fuse2/lib/libc/x86/gen/getcontextx.c projects/fuse2/lib/libc/x86/sys/__vdso_gettc.c projects/fuse2/lib/libc/x86/sys/pkru.c projects/fuse2/lib/libcasper/services/cap_sysctl/Makefile projects/fuse2/lib/libcasper/services/cap_sysctl/cap_sysctl.3 projects/fuse2/lib/libcasper/services/cap_sysctl/cap_sysctl.c projects/fuse2/lib/libcasper/services/cap_sysctl/cap_sysctl.h projects/fuse2/lib/libcasper/services/cap_sysctl/tests/Makefile projects/fuse2/lib/libcasper/services/cap_sysctl/tests/sysctl_test.c projects/fuse2/lib/libcrypt/crypt.3 projects/fuse2/lib/libelftc/Makefile projects/fuse2/lib/libjail/jail_getid.c projects/fuse2/lib/libmd/mdX.3 projects/fuse2/lib/libmd/ripemd.3 projects/fuse2/lib/libmd/sha.3 projects/fuse2/lib/libmd/sha256.3 projects/fuse2/lib/libmd/sha512.3 projects/fuse2/lib/libmd/skein.3 projects/fuse2/lib/libmemstat/memstat_uma.c projects/fuse2/lib/libomp/Makefile projects/fuse2/lib/libsecureboot/h/libsecureboot.h projects/fuse2/lib/libsecureboot/openpgp/opgp_key.c projects/fuse2/lib/libsecureboot/openpgp/opgp_sig.c projects/fuse2/lib/libsecureboot/tests/tvo.c projects/fuse2/lib/libsecureboot/vepcr.c projects/fuse2/lib/libsecureboot/verify_file.c projects/fuse2/lib/libutil/pw_util.3 projects/fuse2/lib/msun/tests/cexp_test.c projects/fuse2/libexec/bootpd/bootpd.8 projects/fuse2/libexec/bootpd/bootpd.c projects/fuse2/libexec/bootpd/bootpgw/bootpgw.c projects/fuse2/libexec/bootpd/dovend.c projects/fuse2/libexec/rc/Makefile projects/fuse2/libexec/rc/rc.conf projects/fuse2/libexec/rc/rc.d/Makefile projects/fuse2/libexec/rc/rc.d/ntpd projects/fuse2/libexec/rc/rc.d/random projects/fuse2/libexec/rtld-elf/rtld_malloc.c projects/fuse2/libexec/save-entropy/save-entropy.sh projects/fuse2/release/powerpc/generate-hfs.sh projects/fuse2/release/powerpc/hfs-boot.bz2.uu projects/fuse2/release/tools/vagrant.conf projects/fuse2/sbin/bectl/bectl.8 projects/fuse2/sbin/bectl/bectl_jail.c projects/fuse2/sbin/bectl/tests/bectl_test.sh projects/fuse2/sbin/decryptcore/decryptcore.c projects/fuse2/sbin/devd/devd.conf.5 projects/fuse2/sbin/dumpon/dumpon.8 projects/fuse2/sbin/dumpon/dumpon.c projects/fuse2/sbin/fdisk/fdisk.c projects/fuse2/sbin/fsck_ffs/dir.c projects/fuse2/sbin/fsck_msdosfs/fat.c projects/fuse2/sbin/ifconfig/ifconfig.8 projects/fuse2/sbin/ipfw/ipfw.8 projects/fuse2/sbin/ipfw/ipfw2.h projects/fuse2/sbin/ipfw/tables.c projects/fuse2/sbin/nvmecontrol/nvmecontrol.8 projects/fuse2/secure/lib/libcrypto/Makefile.inc projects/fuse2/secure/lib/libcrypto/Makefile.man projects/fuse2/secure/lib/libcrypto/Version.map projects/fuse2/secure/lib/libcrypto/man/ADMISSIONS.3 projects/fuse2/secure/lib/libcrypto/man/ASN1_INTEGER_get_int64.3 projects/fuse2/secure/lib/libcrypto/man/ASN1_ITEM_lookup.3 projects/fuse2/secure/lib/libcrypto/man/ASN1_OBJECT_new.3 projects/fuse2/secure/lib/libcrypto/man/ASN1_STRING_TABLE_add.3 projects/fuse2/secure/lib/libcrypto/man/ASN1_STRING_length.3 projects/fuse2/secure/lib/libcrypto/man/ASN1_STRING_new.3 projects/fuse2/secure/lib/libcrypto/man/ASN1_STRING_print_ex.3 projects/fuse2/secure/lib/libcrypto/man/ASN1_TIME_set.3 projects/fuse2/secure/lib/libcrypto/man/ASN1_TYPE_get.3 projects/fuse2/secure/lib/libcrypto/man/ASN1_generate_nconf.3 projects/fuse2/secure/lib/libcrypto/man/ASYNC_WAIT_CTX_new.3 projects/fuse2/secure/lib/libcrypto/man/ASYNC_start_job.3 projects/fuse2/secure/lib/libcrypto/man/BF_encrypt.3 projects/fuse2/secure/lib/libcrypto/man/BIO_ADDR.3 projects/fuse2/secure/lib/libcrypto/man/BIO_ADDRINFO.3 projects/fuse2/secure/lib/libcrypto/man/BIO_connect.3 projects/fuse2/secure/lib/libcrypto/man/BIO_ctrl.3 projects/fuse2/secure/lib/libcrypto/man/BIO_f_base64.3 projects/fuse2/secure/lib/libcrypto/man/BIO_f_buffer.3 projects/fuse2/secure/lib/libcrypto/man/BIO_f_cipher.3 projects/fuse2/secure/lib/libcrypto/man/BIO_f_md.3 projects/fuse2/secure/lib/libcrypto/man/BIO_f_null.3 projects/fuse2/secure/lib/libcrypto/man/BIO_f_ssl.3 projects/fuse2/secure/lib/libcrypto/man/BIO_find_type.3 projects/fuse2/secure/lib/libcrypto/man/BIO_get_data.3 projects/fuse2/secure/lib/libcrypto/man/BIO_get_ex_new_index.3 projects/fuse2/secure/lib/libcrypto/man/BIO_meth_new.3 projects/fuse2/secure/lib/libcrypto/man/BIO_new.3 projects/fuse2/secure/lib/libcrypto/man/BIO_new_CMS.3 projects/fuse2/secure/lib/libcrypto/man/BIO_parse_hostserv.3 projects/fuse2/secure/lib/libcrypto/man/BIO_printf.3 projects/fuse2/secure/lib/libcrypto/man/BIO_push.3 projects/fuse2/secure/lib/libcrypto/man/BIO_read.3 projects/fuse2/secure/lib/libcrypto/man/BIO_s_accept.3 projects/fuse2/secure/lib/libcrypto/man/BIO_s_bio.3 projects/fuse2/secure/lib/libcrypto/man/BIO_s_connect.3 projects/fuse2/secure/lib/libcrypto/man/BIO_s_fd.3 projects/fuse2/secure/lib/libcrypto/man/BIO_s_file.3 projects/fuse2/secure/lib/libcrypto/man/BIO_s_mem.3 projects/fuse2/secure/lib/libcrypto/man/BIO_s_null.3 projects/fuse2/secure/lib/libcrypto/man/BIO_s_socket.3 projects/fuse2/secure/lib/libcrypto/man/BIO_set_callback.3 projects/fuse2/secure/lib/libcrypto/man/BIO_should_retry.3 projects/fuse2/secure/lib/libcrypto/man/BN_BLINDING_new.3 projects/fuse2/secure/lib/libcrypto/man/BN_CTX_new.3 projects/fuse2/secure/lib/libcrypto/man/BN_CTX_start.3 projects/fuse2/secure/lib/libcrypto/man/BN_add.3 projects/fuse2/secure/lib/libcrypto/man/BN_add_word.3 projects/fuse2/secure/lib/libcrypto/man/BN_bn2bin.3 projects/fuse2/secure/lib/libcrypto/man/BN_cmp.3 projects/fuse2/secure/lib/libcrypto/man/BN_copy.3 projects/fuse2/secure/lib/libcrypto/man/BN_generate_prime.3 projects/fuse2/secure/lib/libcrypto/man/BN_mod_inverse.3 projects/fuse2/secure/lib/libcrypto/man/BN_mod_mul_montgomery.3 projects/fuse2/secure/lib/libcrypto/man/BN_mod_mul_reciprocal.3 projects/fuse2/secure/lib/libcrypto/man/BN_new.3 projects/fuse2/secure/lib/libcrypto/man/BN_num_bytes.3 projects/fuse2/secure/lib/libcrypto/man/BN_rand.3 projects/fuse2/secure/lib/libcrypto/man/BN_security_bits.3 projects/fuse2/secure/lib/libcrypto/man/BN_set_bit.3 projects/fuse2/secure/lib/libcrypto/man/BN_swap.3 projects/fuse2/secure/lib/libcrypto/man/BN_zero.3 projects/fuse2/secure/lib/libcrypto/man/BUF_MEM_new.3 projects/fuse2/secure/lib/libcrypto/man/CMS_add0_cert.3 projects/fuse2/secure/lib/libcrypto/man/CMS_add1_recipient_cert.3 projects/fuse2/secure/lib/libcrypto/man/CMS_add1_signer.3 projects/fuse2/secure/lib/libcrypto/man/CMS_compress.3 projects/fuse2/secure/lib/libcrypto/man/CMS_decrypt.3 projects/fuse2/secure/lib/libcrypto/man/CMS_encrypt.3 projects/fuse2/secure/lib/libcrypto/man/CMS_final.3 projects/fuse2/secure/lib/libcrypto/man/CMS_get0_RecipientInfos.3 projects/fuse2/secure/lib/libcrypto/man/CMS_get0_SignerInfos.3 projects/fuse2/secure/lib/libcrypto/man/CMS_get0_type.3 projects/fuse2/secure/lib/libcrypto/man/CMS_get1_ReceiptRequest.3 projects/fuse2/secure/lib/libcrypto/man/CMS_sign.3 projects/fuse2/secure/lib/libcrypto/man/CMS_sign_receipt.3 projects/fuse2/secure/lib/libcrypto/man/CMS_uncompress.3 projects/fuse2/secure/lib/libcrypto/man/CMS_verify.3 projects/fuse2/secure/lib/libcrypto/man/CMS_verify_receipt.3 projects/fuse2/secure/lib/libcrypto/man/CONF_modules_free.3 projects/fuse2/secure/lib/libcrypto/man/CONF_modules_load_file.3 projects/fuse2/secure/lib/libcrypto/man/CRYPTO_THREAD_run_once.3 projects/fuse2/secure/lib/libcrypto/man/CRYPTO_get_ex_new_index.3 projects/fuse2/secure/lib/libcrypto/man/CTLOG_STORE_get0_log_by_id.3 projects/fuse2/secure/lib/libcrypto/man/CTLOG_STORE_new.3 projects/fuse2/secure/lib/libcrypto/man/CTLOG_new.3 projects/fuse2/secure/lib/libcrypto/man/CT_POLICY_EVAL_CTX_new.3 projects/fuse2/secure/lib/libcrypto/man/DEFINE_STACK_OF.3 projects/fuse2/secure/lib/libcrypto/man/DES_random_key.3 projects/fuse2/secure/lib/libcrypto/man/DH_generate_key.3 projects/fuse2/secure/lib/libcrypto/man/DH_generate_parameters.3 projects/fuse2/secure/lib/libcrypto/man/DH_get0_pqg.3 projects/fuse2/secure/lib/libcrypto/man/DH_get_1024_160.3 projects/fuse2/secure/lib/libcrypto/man/DH_meth_new.3 projects/fuse2/secure/lib/libcrypto/man/DH_new.3 projects/fuse2/secure/lib/libcrypto/man/DH_new_by_nid.3 projects/fuse2/secure/lib/libcrypto/man/DH_set_method.3 projects/fuse2/secure/lib/libcrypto/man/DH_size.3 projects/fuse2/secure/lib/libcrypto/man/DSA_SIG_new.3 projects/fuse2/secure/lib/libcrypto/man/DSA_do_sign.3 projects/fuse2/secure/lib/libcrypto/man/DSA_dup_DH.3 projects/fuse2/secure/lib/libcrypto/man/DSA_generate_key.3 projects/fuse2/secure/lib/libcrypto/man/DSA_generate_parameters.3 projects/fuse2/secure/lib/libcrypto/man/DSA_get0_pqg.3 projects/fuse2/secure/lib/libcrypto/man/DSA_meth_new.3 projects/fuse2/secure/lib/libcrypto/man/DSA_new.3 projects/fuse2/secure/lib/libcrypto/man/DSA_set_method.3 projects/fuse2/secure/lib/libcrypto/man/DSA_sign.3 projects/fuse2/secure/lib/libcrypto/man/DSA_size.3 projects/fuse2/secure/lib/libcrypto/man/DTLS_get_data_mtu.3 projects/fuse2/secure/lib/libcrypto/man/DTLS_set_timer_cb.3 projects/fuse2/secure/lib/libcrypto/man/DTLSv1_listen.3 projects/fuse2/secure/lib/libcrypto/man/ECDSA_SIG_new.3 projects/fuse2/secure/lib/libcrypto/man/ECPKParameters_print.3 projects/fuse2/secure/lib/libcrypto/man/EC_GFp_simple_method.3 projects/fuse2/secure/lib/libcrypto/man/EC_GROUP_copy.3 projects/fuse2/secure/lib/libcrypto/man/EC_GROUP_new.3 projects/fuse2/secure/lib/libcrypto/man/EC_KEY_get_enc_flags.3 projects/fuse2/secure/lib/libcrypto/man/EC_KEY_new.3 projects/fuse2/secure/lib/libcrypto/man/EC_POINT_add.3 projects/fuse2/secure/lib/libcrypto/man/EC_POINT_new.3 projects/fuse2/secure/lib/libcrypto/man/ENGINE_add.3 projects/fuse2/secure/lib/libcrypto/man/ERR_GET_LIB.3 projects/fuse2/secure/lib/libcrypto/man/ERR_clear_error.3 projects/fuse2/secure/lib/libcrypto/man/ERR_error_string.3 projects/fuse2/secure/lib/libcrypto/man/ERR_get_error.3 projects/fuse2/secure/lib/libcrypto/man/ERR_load_crypto_strings.3 projects/fuse2/secure/lib/libcrypto/man/ERR_load_strings.3 projects/fuse2/secure/lib/libcrypto/man/ERR_print_errors.3 projects/fuse2/secure/lib/libcrypto/man/ERR_put_error.3 projects/fuse2/secure/lib/libcrypto/man/ERR_remove_state.3 projects/fuse2/secure/lib/libcrypto/man/ERR_set_mark.3 projects/fuse2/secure/lib/libcrypto/man/EVP_BytesToKey.3 projects/fuse2/secure/lib/libcrypto/man/EVP_CIPHER_CTX_get_cipher_data.3 projects/fuse2/secure/lib/libcrypto/man/EVP_CIPHER_meth_new.3 projects/fuse2/secure/lib/libcrypto/man/EVP_DigestInit.3 projects/fuse2/secure/lib/libcrypto/man/EVP_DigestSignInit.3 projects/fuse2/secure/lib/libcrypto/man/EVP_DigestVerifyInit.3 projects/fuse2/secure/lib/libcrypto/man/EVP_EncodeInit.3 projects/fuse2/secure/lib/libcrypto/man/EVP_EncryptInit.3 projects/fuse2/secure/lib/libcrypto/man/EVP_MD_meth_new.3 projects/fuse2/secure/lib/libcrypto/man/EVP_OpenInit.3 projects/fuse2/secure/lib/libcrypto/man/EVP_PKEY_ASN1_METHOD.3 projects/fuse2/secure/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3 projects/fuse2/secure/lib/libcrypto/man/EVP_PKEY_CTX_new.3 projects/fuse2/secure/lib/libcrypto/man/EVP_PKEY_CTX_set1_pbe_pass.3 projects/fuse2/secure/lib/libcrypto/man/EVP_PKEY_CTX_set_hkdf_md.3 projects/fuse2/secure/lib/libcrypto/man/EVP_PKEY_CTX_set_rsa_pss_keygen_md.3 projects/fuse2/secure/lib/libcrypto/man/EVP_PKEY_CTX_set_scrypt_N.3 projects/fuse2/secure/lib/libcrypto/man/EVP_PKEY_CTX_set_tls1_prf_md.3 projects/fuse2/secure/lib/libcrypto/man/EVP_PKEY_asn1_get_count.3 projects/fuse2/secure/lib/libcrypto/man/EVP_PKEY_cmp.3 projects/fuse2/secure/lib/libcrypto/man/EVP_PKEY_decrypt.3 projects/fuse2/secure/lib/libcrypto/man/EVP_PKEY_derive.3 projects/fuse2/secure/lib/libcrypto/man/EVP_PKEY_encrypt.3 projects/fuse2/secure/lib/libcrypto/man/EVP_PKEY_get_default_digest_nid.3 projects/fuse2/secure/lib/libcrypto/man/EVP_PKEY_keygen.3 projects/fuse2/secure/lib/libcrypto/man/EVP_PKEY_meth_get_count.3 projects/fuse2/secure/lib/libcrypto/man/EVP_PKEY_meth_new.3 projects/fuse2/secure/lib/libcrypto/man/EVP_PKEY_new.3 projects/fuse2/secure/lib/libcrypto/man/EVP_PKEY_print_private.3 projects/fuse2/secure/lib/libcrypto/man/EVP_PKEY_set1_RSA.3 projects/fuse2/secure/lib/libcrypto/man/EVP_PKEY_sign.3 projects/fuse2/secure/lib/libcrypto/man/EVP_PKEY_verify.3 projects/fuse2/secure/lib/libcrypto/man/EVP_PKEY_verify_recover.3 projects/fuse2/secure/lib/libcrypto/man/EVP_SealInit.3 projects/fuse2/secure/lib/libcrypto/man/EVP_SignInit.3 projects/fuse2/secure/lib/libcrypto/man/EVP_VerifyInit.3 projects/fuse2/secure/lib/libcrypto/man/EVP_aes.3 projects/fuse2/secure/lib/libcrypto/man/EVP_aria.3 projects/fuse2/secure/lib/libcrypto/man/EVP_bf_cbc.3 projects/fuse2/secure/lib/libcrypto/man/EVP_blake2b512.3 projects/fuse2/secure/lib/libcrypto/man/EVP_camellia.3 projects/fuse2/secure/lib/libcrypto/man/EVP_cast5_cbc.3 projects/fuse2/secure/lib/libcrypto/man/EVP_chacha20.3 projects/fuse2/secure/lib/libcrypto/man/EVP_des.3 projects/fuse2/secure/lib/libcrypto/man/EVP_desx_cbc.3 projects/fuse2/secure/lib/libcrypto/man/EVP_idea_cbc.3 projects/fuse2/secure/lib/libcrypto/man/EVP_md2.3 projects/fuse2/secure/lib/libcrypto/man/EVP_md4.3 projects/fuse2/secure/lib/libcrypto/man/EVP_md5.3 projects/fuse2/secure/lib/libcrypto/man/EVP_mdc2.3 projects/fuse2/secure/lib/libcrypto/man/EVP_rc2_cbc.3 projects/fuse2/secure/lib/libcrypto/man/EVP_rc4.3 projects/fuse2/secure/lib/libcrypto/man/EVP_rc5_32_12_16_cbc.3 projects/fuse2/secure/lib/libcrypto/man/EVP_ripemd160.3 projects/fuse2/secure/lib/libcrypto/man/EVP_seed_cbc.3 projects/fuse2/secure/lib/libcrypto/man/EVP_sha1.3 projects/fuse2/secure/lib/libcrypto/man/EVP_sha224.3 projects/fuse2/secure/lib/libcrypto/man/EVP_sha3_224.3 projects/fuse2/secure/lib/libcrypto/man/EVP_sm3.3 projects/fuse2/secure/lib/libcrypto/man/EVP_sm4_cbc.3 projects/fuse2/secure/lib/libcrypto/man/EVP_whirlpool.3 projects/fuse2/secure/lib/libcrypto/man/HMAC.3 projects/fuse2/secure/lib/libcrypto/man/MD5.3 projects/fuse2/secure/lib/libcrypto/man/MDC2_Init.3 projects/fuse2/secure/lib/libcrypto/man/OBJ_nid2obj.3 projects/fuse2/secure/lib/libcrypto/man/OCSP_REQUEST_new.3 projects/fuse2/secure/lib/libcrypto/man/OCSP_cert_to_id.3 projects/fuse2/secure/lib/libcrypto/man/OCSP_request_add1_nonce.3 projects/fuse2/secure/lib/libcrypto/man/OCSP_resp_find_status.3 projects/fuse2/secure/lib/libcrypto/man/OCSP_response_status.3 projects/fuse2/secure/lib/libcrypto/man/OCSP_sendreq_new.3 projects/fuse2/secure/lib/libcrypto/man/OPENSSL_Applink.3 projects/fuse2/secure/lib/libcrypto/man/OPENSSL_LH_COMPFUNC.3 projects/fuse2/secure/lib/libcrypto/man/OPENSSL_LH_stats.3 projects/fuse2/secure/lib/libcrypto/man/OPENSSL_VERSION_NUMBER.3 projects/fuse2/secure/lib/libcrypto/man/OPENSSL_config.3 projects/fuse2/secure/lib/libcrypto/man/OPENSSL_fork_prepare.3 projects/fuse2/secure/lib/libcrypto/man/OPENSSL_ia32cap.3 projects/fuse2/secure/lib/libcrypto/man/OPENSSL_init_crypto.3 projects/fuse2/secure/lib/libcrypto/man/OPENSSL_init_ssl.3 projects/fuse2/secure/lib/libcrypto/man/OPENSSL_instrument_bus.3 projects/fuse2/secure/lib/libcrypto/man/OPENSSL_load_builtin_modules.3 projects/fuse2/secure/lib/libcrypto/man/OPENSSL_malloc.3 projects/fuse2/secure/lib/libcrypto/man/OPENSSL_secure_malloc.3 projects/fuse2/secure/lib/libcrypto/man/OSSL_STORE_INFO.3 projects/fuse2/secure/lib/libcrypto/man/OSSL_STORE_LOADER.3 projects/fuse2/secure/lib/libcrypto/man/OSSL_STORE_SEARCH.3 projects/fuse2/secure/lib/libcrypto/man/OSSL_STORE_expect.3 projects/fuse2/secure/lib/libcrypto/man/OSSL_STORE_open.3 projects/fuse2/secure/lib/libcrypto/man/OpenSSL_add_all_algorithms.3 projects/fuse2/secure/lib/libcrypto/man/PEM_bytes_read_bio.3 projects/fuse2/secure/lib/libcrypto/man/PEM_read.3 projects/fuse2/secure/lib/libcrypto/man/PEM_read_CMS.3 projects/fuse2/secure/lib/libcrypto/man/PEM_read_bio_PrivateKey.3 projects/fuse2/secure/lib/libcrypto/man/PEM_read_bio_ex.3 projects/fuse2/secure/lib/libcrypto/man/PEM_write_bio_CMS_stream.3 projects/fuse2/secure/lib/libcrypto/man/PEM_write_bio_PKCS7_stream.3 projects/fuse2/secure/lib/libcrypto/man/PKCS12_create.3 projects/fuse2/secure/lib/libcrypto/man/PKCS12_newpass.3 projects/fuse2/secure/lib/libcrypto/man/PKCS12_parse.3 projects/fuse2/secure/lib/libcrypto/man/PKCS5_PBKDF2_HMAC.3 projects/fuse2/secure/lib/libcrypto/man/PKCS7_decrypt.3 projects/fuse2/secure/lib/libcrypto/man/PKCS7_encrypt.3 projects/fuse2/secure/lib/libcrypto/man/PKCS7_sign.3 projects/fuse2/secure/lib/libcrypto/man/PKCS7_sign_add_signer.3 projects/fuse2/secure/lib/libcrypto/man/PKCS7_verify.3 projects/fuse2/secure/lib/libcrypto/man/RAND_DRBG_generate.3 projects/fuse2/secure/lib/libcrypto/man/RAND_DRBG_get0_master.3 projects/fuse2/secure/lib/libcrypto/man/RAND_DRBG_new.3 projects/fuse2/secure/lib/libcrypto/man/RAND_DRBG_reseed.3 projects/fuse2/secure/lib/libcrypto/man/RAND_DRBG_set_callbacks.3 projects/fuse2/secure/lib/libcrypto/man/RAND_DRBG_set_ex_data.3 projects/fuse2/secure/lib/libcrypto/man/RAND_add.3 projects/fuse2/secure/lib/libcrypto/man/RAND_bytes.3 projects/fuse2/secure/lib/libcrypto/man/RAND_cleanup.3 projects/fuse2/secure/lib/libcrypto/man/RAND_egd.3 projects/fuse2/secure/lib/libcrypto/man/RAND_load_file.3 projects/fuse2/secure/lib/libcrypto/man/RAND_set_rand_method.3 projects/fuse2/secure/lib/libcrypto/man/RC4_set_key.3 projects/fuse2/secure/lib/libcrypto/man/RIPEMD160_Init.3 projects/fuse2/secure/lib/libcrypto/man/RSA_blinding_on.3 projects/fuse2/secure/lib/libcrypto/man/RSA_check_key.3 projects/fuse2/secure/lib/libcrypto/man/RSA_generate_key.3 projects/fuse2/secure/lib/libcrypto/man/RSA_get0_key.3 projects/fuse2/secure/lib/libcrypto/man/RSA_meth_new.3 projects/fuse2/secure/lib/libcrypto/man/RSA_new.3 projects/fuse2/secure/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3 projects/fuse2/secure/lib/libcrypto/man/RSA_print.3 projects/fuse2/secure/lib/libcrypto/man/RSA_private_encrypt.3 projects/fuse2/secure/lib/libcrypto/man/RSA_public_encrypt.3 projects/fuse2/secure/lib/libcrypto/man/RSA_set_method.3 projects/fuse2/secure/lib/libcrypto/man/RSA_sign.3 projects/fuse2/secure/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.3 projects/fuse2/secure/lib/libcrypto/man/RSA_size.3 projects/fuse2/secure/lib/libcrypto/man/SCT_new.3 projects/fuse2/secure/lib/libcrypto/man/SCT_print.3 projects/fuse2/secure/lib/libcrypto/man/SCT_validate.3 projects/fuse2/secure/lib/libcrypto/man/SHA256_Init.3 projects/fuse2/secure/lib/libcrypto/man/SMIME_read_CMS.3 projects/fuse2/secure/lib/libcrypto/man/SMIME_read_PKCS7.3 projects/fuse2/secure/lib/libcrypto/man/SMIME_write_CMS.3 projects/fuse2/secure/lib/libcrypto/man/SMIME_write_PKCS7.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CIPHER_get_name.3 projects/fuse2/secure/lib/libcrypto/man/SSL_COMP_add_compression_method.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CONF_CTX_new.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CONF_CTX_set1_prefix.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CONF_CTX_set_flags.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CONF_CTX_set_ssl_ctx.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CONF_cmd.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CONF_cmd_argv.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_add1_chain_cert.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_add_extra_chain_cert.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_add_session.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_config.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_ctrl.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_dane_enable.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_flush_sessions.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_free.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_get0_param.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_get_verify_mode.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_has_client_custom_ext.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_load_verify_locations.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_new.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_sess_number.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_sess_set_cache_size.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_sess_set_get_cb.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_sessions.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set0_CA_list.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set1_curves.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set1_sigalgs.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set1_verify_cert_store.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_alpn_select_cb.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_cert_cb.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_cert_store.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_cert_verify_callback.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_cipher_list.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_client_cert_cb.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_client_hello_cb.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_ct_validation_callback.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_ctlog_list_file.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_default_passwd_cb.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_ex_data.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_generate_session_id.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_info_callback.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_keylog_callback.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_max_cert_list.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_min_proto_version.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_mode.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_msg_callback.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_num_tickets.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_options.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_psk_client_callback.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_quiet_shutdown.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_read_ahead.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_record_padding_callback.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_security_level.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_session_cache_mode.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_session_id_context.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_session_ticket_cb.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_split_send_fragment.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_ssl_version.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_stateless_cookie_generate_cb.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_timeout.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_tlsext_servername_callback.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_tlsext_status_cb.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_tlsext_ticket_key_cb.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_tlsext_use_srtp.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_tmp_dh_callback.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_set_verify.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_use_certificate.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_use_psk_identity_hint.3 projects/fuse2/secure/lib/libcrypto/man/SSL_CTX_use_serverinfo.3 projects/fuse2/secure/lib/libcrypto/man/SSL_SESSION_free.3 projects/fuse2/secure/lib/libcrypto/man/SSL_SESSION_get0_cipher.3 projects/fuse2/secure/lib/libcrypto/man/SSL_SESSION_get0_hostname.3 projects/fuse2/secure/lib/libcrypto/man/SSL_SESSION_get0_id_context.3 projects/fuse2/secure/lib/libcrypto/man/SSL_SESSION_get0_peer.3 projects/fuse2/secure/lib/libcrypto/man/SSL_SESSION_get_compress_id.3 projects/fuse2/secure/lib/libcrypto/man/SSL_SESSION_get_ex_data.3 projects/fuse2/secure/lib/libcrypto/man/SSL_SESSION_get_protocol_version.3 projects/fuse2/secure/lib/libcrypto/man/SSL_SESSION_get_time.3 projects/fuse2/secure/lib/libcrypto/man/SSL_SESSION_has_ticket.3 projects/fuse2/secure/lib/libcrypto/man/SSL_SESSION_is_resumable.3 projects/fuse2/secure/lib/libcrypto/man/SSL_SESSION_print.3 projects/fuse2/secure/lib/libcrypto/man/SSL_SESSION_set1_id.3 projects/fuse2/secure/lib/libcrypto/man/SSL_accept.3 projects/fuse2/secure/lib/libcrypto/man/SSL_alert_type_string.3 projects/fuse2/secure/lib/libcrypto/man/SSL_alloc_buffers.3 projects/fuse2/secure/lib/libcrypto/man/SSL_check_chain.3 projects/fuse2/secure/lib/libcrypto/man/SSL_clear.3 projects/fuse2/secure/lib/libcrypto/man/SSL_connect.3 projects/fuse2/secure/lib/libcrypto/man/SSL_do_handshake.3 projects/fuse2/secure/lib/libcrypto/man/SSL_export_keying_material.3 projects/fuse2/secure/lib/libcrypto/man/SSL_extension_supported.3 projects/fuse2/secure/lib/libcrypto/man/SSL_free.3 projects/fuse2/secure/lib/libcrypto/man/SSL_get0_peer_scts.3 projects/fuse2/secure/lib/libcrypto/man/SSL_get_SSL_CTX.3 projects/fuse2/secure/lib/libcrypto/man/SSL_get_all_async_fds.3 projects/fuse2/secure/lib/libcrypto/man/SSL_get_ciphers.3 projects/fuse2/secure/lib/libcrypto/man/SSL_get_client_random.3 projects/fuse2/secure/lib/libcrypto/man/SSL_get_current_cipher.3 projects/fuse2/secure/lib/libcrypto/man/SSL_get_default_timeout.3 projects/fuse2/secure/lib/libcrypto/man/SSL_get_error.3 projects/fuse2/secure/lib/libcrypto/man/SSL_get_extms_support.3 projects/fuse2/secure/lib/libcrypto/man/SSL_get_fd.3 projects/fuse2/secure/lib/libcrypto/man/SSL_get_peer_cert_chain.3 projects/fuse2/secure/lib/libcrypto/man/SSL_get_peer_certificate.3 projects/fuse2/secure/lib/libcrypto/man/SSL_get_peer_signature_nid.3 projects/fuse2/secure/lib/libcrypto/man/SSL_get_peer_tmp_key.3 projects/fuse2/secure/lib/libcrypto/man/SSL_get_psk_identity.3 projects/fuse2/secure/lib/libcrypto/man/SSL_get_rbio.3 projects/fuse2/secure/lib/libcrypto/man/SSL_get_session.3 projects/fuse2/secure/lib/libcrypto/man/SSL_get_shared_sigalgs.3 projects/fuse2/secure/lib/libcrypto/man/SSL_get_verify_result.3 projects/fuse2/secure/lib/libcrypto/man/SSL_get_version.3 projects/fuse2/secure/lib/libcrypto/man/SSL_in_init.3 projects/fuse2/secure/lib/libcrypto/man/SSL_key_update.3 projects/fuse2/secure/lib/libcrypto/man/SSL_library_init.3 projects/fuse2/secure/lib/libcrypto/man/SSL_load_client_CA_file.3 projects/fuse2/secure/lib/libcrypto/man/SSL_new.3 projects/fuse2/secure/lib/libcrypto/man/SSL_pending.3 projects/fuse2/secure/lib/libcrypto/man/SSL_read.3 projects/fuse2/secure/lib/libcrypto/man/SSL_read_early_data.3 projects/fuse2/secure/lib/libcrypto/man/SSL_rstate_string.3 projects/fuse2/secure/lib/libcrypto/man/SSL_session_reused.3 projects/fuse2/secure/lib/libcrypto/man/SSL_set1_host.3 projects/fuse2/secure/lib/libcrypto/man/SSL_set_bio.3 projects/fuse2/secure/lib/libcrypto/man/SSL_set_connect_state.3 projects/fuse2/secure/lib/libcrypto/man/SSL_set_fd.3 projects/fuse2/secure/lib/libcrypto/man/SSL_set_session.3 projects/fuse2/secure/lib/libcrypto/man/SSL_set_shutdown.3 projects/fuse2/secure/lib/libcrypto/man/SSL_set_verify_result.3 projects/fuse2/secure/lib/libcrypto/man/SSL_shutdown.3 projects/fuse2/secure/lib/libcrypto/man/SSL_state_string.3 projects/fuse2/secure/lib/libcrypto/man/SSL_want.3 projects/fuse2/secure/lib/libcrypto/man/SSL_write.3 projects/fuse2/secure/lib/libcrypto/man/UI_STRING.3 projects/fuse2/secure/lib/libcrypto/man/UI_UTIL_read_pw.3 projects/fuse2/secure/lib/libcrypto/man/UI_create_method.3 projects/fuse2/secure/lib/libcrypto/man/UI_new.3 projects/fuse2/secure/lib/libcrypto/man/X509V3_get_d2i.3 projects/fuse2/secure/lib/libcrypto/man/X509_ALGOR_dup.3 projects/fuse2/secure/lib/libcrypto/man/X509_CRL_get0_by_serial.3 projects/fuse2/secure/lib/libcrypto/man/X509_EXTENSION_set_object.3 projects/fuse2/secure/lib/libcrypto/man/X509_LOOKUP_hash_dir.3 projects/fuse2/secure/lib/libcrypto/man/X509_LOOKUP_meth_new.3 projects/fuse2/secure/lib/libcrypto/man/X509_NAME_ENTRY_get_object.3 projects/fuse2/secure/lib/libcrypto/man/X509_NAME_add_entry_by_txt.3 projects/fuse2/secure/lib/libcrypto/man/X509_NAME_get0_der.3 projects/fuse2/secure/lib/libcrypto/man/X509_NAME_get_index_by_NID.3 projects/fuse2/secure/lib/libcrypto/man/X509_NAME_print_ex.3 projects/fuse2/secure/lib/libcrypto/man/X509_PUBKEY_new.3 projects/fuse2/secure/lib/libcrypto/man/X509_SIG_get0.3 projects/fuse2/secure/lib/libcrypto/man/X509_STORE_CTX_get_error.3 projects/fuse2/secure/lib/libcrypto/man/X509_STORE_CTX_new.3 projects/fuse2/secure/lib/libcrypto/man/X509_STORE_CTX_set_verify_cb.3 projects/fuse2/secure/lib/libcrypto/man/X509_STORE_add_cert.3 projects/fuse2/secure/lib/libcrypto/man/X509_STORE_get0_param.3 projects/fuse2/secure/lib/libcrypto/man/X509_STORE_new.3 projects/fuse2/secure/lib/libcrypto/man/X509_STORE_set_verify_cb_func.3 projects/fuse2/secure/lib/libcrypto/man/X509_VERIFY_PARAM_set_flags.3 projects/fuse2/secure/lib/libcrypto/man/X509_check_ca.3 projects/fuse2/secure/lib/libcrypto/man/X509_check_host.3 projects/fuse2/secure/lib/libcrypto/man/X509_check_issued.3 projects/fuse2/secure/lib/libcrypto/man/X509_check_private_key.3 projects/fuse2/secure/lib/libcrypto/man/X509_cmp_time.3 projects/fuse2/secure/lib/libcrypto/man/X509_digest.3 projects/fuse2/secure/lib/libcrypto/man/X509_dup.3 projects/fuse2/secure/lib/libcrypto/man/X509_get0_notBefore.3 projects/fuse2/secure/lib/libcrypto/man/X509_get0_signature.3 projects/fuse2/secure/lib/libcrypto/man/X509_get0_uids.3 projects/fuse2/secure/lib/libcrypto/man/X509_get_extension_flags.3 projects/fuse2/secure/lib/libcrypto/man/X509_get_pubkey.3 projects/fuse2/secure/lib/libcrypto/man/X509_get_serialNumber.3 projects/fuse2/secure/lib/libcrypto/man/X509_get_subject_name.3 projects/fuse2/secure/lib/libcrypto/man/X509_get_version.3 projects/fuse2/secure/lib/libcrypto/man/X509_new.3 projects/fuse2/secure/lib/libcrypto/man/X509_sign.3 projects/fuse2/secure/lib/libcrypto/man/X509_verify_cert.3 projects/fuse2/secure/lib/libcrypto/man/X509v3_get_ext_by_NID.3 projects/fuse2/secure/lib/libcrypto/man/d2i_DHparams.3 projects/fuse2/secure/lib/libcrypto/man/d2i_PKCS8PrivateKey_bio.3 projects/fuse2/secure/lib/libcrypto/man/d2i_PrivateKey.3 projects/fuse2/secure/lib/libcrypto/man/d2i_SSL_SESSION.3 projects/fuse2/secure/lib/libcrypto/man/d2i_X509.3 projects/fuse2/secure/lib/libcrypto/man/i2d_CMS_bio_stream.3 projects/fuse2/secure/lib/libcrypto/man/i2d_PKCS7_bio_stream.3 projects/fuse2/secure/lib/libcrypto/man/i2d_re_X509_tbs.3 projects/fuse2/secure/lib/libcrypto/man/o2i_SCT_LIST.3 projects/fuse2/secure/usr.bin/openssl/man/CA.pl.1 projects/fuse2/secure/usr.bin/openssl/man/asn1parse.1 projects/fuse2/secure/usr.bin/openssl/man/ca.1 projects/fuse2/secure/usr.bin/openssl/man/ciphers.1 projects/fuse2/secure/usr.bin/openssl/man/cms.1 projects/fuse2/secure/usr.bin/openssl/man/crl.1 projects/fuse2/secure/usr.bin/openssl/man/crl2pkcs7.1 projects/fuse2/secure/usr.bin/openssl/man/dgst.1 projects/fuse2/secure/usr.bin/openssl/man/dhparam.1 projects/fuse2/secure/usr.bin/openssl/man/dsa.1 projects/fuse2/secure/usr.bin/openssl/man/dsaparam.1 projects/fuse2/secure/usr.bin/openssl/man/ec.1 projects/fuse2/secure/usr.bin/openssl/man/ecparam.1 projects/fuse2/secure/usr.bin/openssl/man/enc.1 projects/fuse2/secure/usr.bin/openssl/man/engine.1 projects/fuse2/secure/usr.bin/openssl/man/errstr.1 projects/fuse2/secure/usr.bin/openssl/man/gendsa.1 projects/fuse2/secure/usr.bin/openssl/man/genpkey.1 projects/fuse2/secure/usr.bin/openssl/man/genrsa.1 projects/fuse2/secure/usr.bin/openssl/man/list.1 projects/fuse2/secure/usr.bin/openssl/man/nseq.1 projects/fuse2/secure/usr.bin/openssl/man/ocsp.1 projects/fuse2/secure/usr.bin/openssl/man/openssl.1 projects/fuse2/secure/usr.bin/openssl/man/passwd.1 projects/fuse2/secure/usr.bin/openssl/man/pkcs12.1 projects/fuse2/secure/usr.bin/openssl/man/pkcs7.1 projects/fuse2/secure/usr.bin/openssl/man/pkcs8.1 projects/fuse2/secure/usr.bin/openssl/man/pkey.1 projects/fuse2/secure/usr.bin/openssl/man/pkeyparam.1 projects/fuse2/secure/usr.bin/openssl/man/pkeyutl.1 projects/fuse2/secure/usr.bin/openssl/man/prime.1 projects/fuse2/secure/usr.bin/openssl/man/rand.1 projects/fuse2/secure/usr.bin/openssl/man/req.1 projects/fuse2/secure/usr.bin/openssl/man/rsa.1 projects/fuse2/secure/usr.bin/openssl/man/rsautl.1 projects/fuse2/secure/usr.bin/openssl/man/s_client.1 projects/fuse2/secure/usr.bin/openssl/man/s_server.1 projects/fuse2/secure/usr.bin/openssl/man/s_time.1 projects/fuse2/secure/usr.bin/openssl/man/sess_id.1 projects/fuse2/secure/usr.bin/openssl/man/smime.1 projects/fuse2/secure/usr.bin/openssl/man/speed.1 projects/fuse2/secure/usr.bin/openssl/man/spkac.1 projects/fuse2/secure/usr.bin/openssl/man/srp.1 projects/fuse2/secure/usr.bin/openssl/man/storeutl.1 projects/fuse2/secure/usr.bin/openssl/man/ts.1 projects/fuse2/secure/usr.bin/openssl/man/tsget.1 projects/fuse2/secure/usr.bin/openssl/man/verify.1 projects/fuse2/secure/usr.bin/openssl/man/version.1 projects/fuse2/secure/usr.bin/openssl/man/x509.1 projects/fuse2/share/examples/Makefile projects/fuse2/share/man/man4/Makefile projects/fuse2/share/man/man4/ae.4 projects/fuse2/share/man/man4/ccr.4 projects/fuse2/share/man/man4/ena.4 projects/fuse2/share/man/man4/gpioled.4 projects/fuse2/share/man/man4/ipheth.4 projects/fuse2/share/man/man4/man4.i386/Makefile projects/fuse2/share/man/man4/man4.powerpc/Makefile projects/fuse2/share/man/man4/mpr.4 projects/fuse2/share/man/man4/mps.4 projects/fuse2/share/man/man4/ng_eiface.4 projects/fuse2/share/man/man4/nvd.4 projects/fuse2/share/man/man4/nvme.4 projects/fuse2/share/man/man4/unix.4 projects/fuse2/share/man/man4/virtio.4 projects/fuse2/share/man/man5/devfs.5 projects/fuse2/share/man/man5/devfs.conf.5 projects/fuse2/share/man/man5/rc.conf.5 projects/fuse2/share/man/man7/development.7 projects/fuse2/share/man/man7/tests.7 projects/fuse2/share/man/man9/DRIVER_MODULE.9 projects/fuse2/share/man/man9/MODULE_PNP_INFO.9 projects/fuse2/share/man/man9/Makefile projects/fuse2/share/man/man9/VFS_FHTOVP.9 projects/fuse2/share/man/man9/VOP_ADVLOCK.9 projects/fuse2/share/man/man9/style.9 projects/fuse2/share/man/man9/vmem.9 projects/fuse2/share/misc/bsd-family-tree projects/fuse2/share/misc/committers-doc.dot projects/fuse2/share/misc/committers-src.dot projects/fuse2/share/termcap/Makefile projects/fuse2/stand/common/interp_simple.c projects/fuse2/stand/common/load_elf.c projects/fuse2/stand/common/module.c projects/fuse2/stand/common/paths.h projects/fuse2/stand/efi/boot1/Makefile projects/fuse2/stand/efi/boot1/boot1.c projects/fuse2/stand/efi/boot1/zfs_module.c projects/fuse2/stand/efi/include/efilib.h projects/fuse2/stand/efi/libefi/devpath.c projects/fuse2/stand/fdt/fdt_loader_cmd.c projects/fuse2/stand/fdt/fdt_platform.h projects/fuse2/stand/ficl.mk projects/fuse2/stand/ficl/loader.c projects/fuse2/stand/i386/Makefile projects/fuse2/stand/i386/gptboot/gptboot.c projects/fuse2/stand/i386/zfsboot/zfsboot.c projects/fuse2/stand/libsa/gpt.c projects/fuse2/stand/libsa/gpt.h projects/fuse2/stand/libsa/stand.h projects/fuse2/stand/libsa/zfs/zfs.c projects/fuse2/stand/libsa/zfs/zfsimpl.c projects/fuse2/stand/ofw/libofw/ofw_net.c projects/fuse2/stand/ofw/libofw/openfirm.c projects/fuse2/stand/powerpc/Makefile projects/fuse2/stand/powerpc/boot1.chrp/boot1.c projects/fuse2/stand/powerpc/kboot/Makefile projects/fuse2/stand/powerpc/kboot/main.c projects/fuse2/stand/powerpc/ofw/elf_freebsd.c projects/fuse2/stand/powerpc/ofw/ppc64_elf_freebsd.c projects/fuse2/sys/amd64/amd64/copyout.c projects/fuse2/sys/amd64/amd64/efirt_support.S projects/fuse2/sys/amd64/amd64/exception.S projects/fuse2/sys/amd64/amd64/fpu.c projects/fuse2/sys/amd64/amd64/genassym.c projects/fuse2/sys/amd64/amd64/initcpu.c projects/fuse2/sys/amd64/amd64/machdep.c projects/fuse2/sys/amd64/amd64/pmap.c projects/fuse2/sys/amd64/amd64/support.S projects/fuse2/sys/amd64/amd64/trap.c projects/fuse2/sys/amd64/amd64/vm_machdep.c projects/fuse2/sys/amd64/conf/GENERIC projects/fuse2/sys/amd64/conf/NOTES projects/fuse2/sys/amd64/include/efi.h projects/fuse2/sys/amd64/include/pcpu.h projects/fuse2/sys/amd64/include/pmap.h projects/fuse2/sys/amd64/include/proc.h projects/fuse2/sys/amd64/linux/Makefile projects/fuse2/sys/amd64/linux/linux.h projects/fuse2/sys/amd64/linux/linux_machdep.c projects/fuse2/sys/amd64/linux/linux_ptrace.c projects/fuse2/sys/amd64/linux/linux_sysvec.c projects/fuse2/sys/amd64/linux32/Makefile projects/fuse2/sys/amd64/linux32/linux.h projects/fuse2/sys/amd64/linux32/linux32_machdep.c projects/fuse2/sys/amd64/linux32/linux32_sysvec.c projects/fuse2/sys/amd64/vmm/io/iommu.c projects/fuse2/sys/amd64/vmm/io/ppt.c projects/fuse2/sys/amd64/vmm/vmm.c projects/fuse2/sys/amd64/vmm/x86.c projects/fuse2/sys/arm/allwinner/a10/a10_intc.c projects/fuse2/sys/arm/allwinner/a10_dmac.c projects/fuse2/sys/arm/allwinner/a10_fb.c projects/fuse2/sys/arm/allwinner/a10_hdmi.c projects/fuse2/sys/arm/allwinner/a31_dmac.c projects/fuse2/sys/arm/allwinner/aw_ccu.c projects/fuse2/sys/arm/allwinner/aw_reset.c projects/fuse2/sys/arm/allwinner/aw_rsb.c projects/fuse2/sys/arm/allwinner/aw_spi.c projects/fuse2/sys/arm/allwinner/aw_thermal.c projects/fuse2/sys/arm/allwinner/aw_wdog.c projects/fuse2/sys/arm/allwinner/clkng/aw_ccung.c projects/fuse2/sys/arm/allwinner/clkng/aw_ccung.h projects/fuse2/sys/arm/allwinner/clkng/aw_clk.h projects/fuse2/sys/arm/allwinner/clkng/aw_clk_nm.c projects/fuse2/sys/arm/allwinner/clkng/aw_clk_nm.h projects/fuse2/sys/arm/allwinner/clkng/ccu_a10.c projects/fuse2/sys/arm/allwinner/clkng/ccu_a31.c projects/fuse2/sys/arm/allwinner/clkng/ccu_a64.c projects/fuse2/sys/arm/allwinner/clkng/ccu_h3.c projects/fuse2/sys/arm/allwinner/files.allwinner projects/fuse2/sys/arm/amlogic/aml8726/aml8726_wdt.c projects/fuse2/sys/arm/arm/machdep.c projects/fuse2/sys/arm/arm/pl190.c projects/fuse2/sys/arm/broadcom/bcm2835/bcm2835_rng.c projects/fuse2/sys/arm/broadcom/bcm2835/bcm2835_wdog.c projects/fuse2/sys/arm/broadcom/bcm2835/bcm2836.c projects/fuse2/sys/arm/freescale/imx/imx6_ipu.c projects/fuse2/sys/arm/freescale/imx/imx_i2c.c projects/fuse2/sys/arm/freescale/imx/imx_wdog.c projects/fuse2/sys/arm/include/cpufunc.h projects/fuse2/sys/arm/mv/armada/thermal.c projects/fuse2/sys/arm/mv/armada/wdt.c projects/fuse2/sys/arm/mv/mv_spi.c projects/fuse2/sys/arm/mv/timer.c projects/fuse2/sys/arm/nvidia/tegra124/tegra124_machdep.c projects/fuse2/sys/arm/nvidia/tegra124/tegra124_pmc.c projects/fuse2/sys/arm/nvidia/tegra_xhci.c projects/fuse2/sys/arm/rockchip/rk30xx_wdog.c projects/fuse2/sys/arm/ti/am335x/am335x_lcd.c projects/fuse2/sys/arm/ti/am335x/tda19988.c projects/fuse2/sys/arm/ti/ti_pruss.c projects/fuse2/sys/arm/ti/ti_wdt.c projects/fuse2/sys/arm/versatile/versatile_pci.c projects/fuse2/sys/arm/versatile/versatile_sic.c projects/fuse2/sys/arm64/arm64/busdma_bounce.c projects/fuse2/sys/arm64/arm64/elf32_machdep.c projects/fuse2/sys/arm64/arm64/freebsd32_machdep.c projects/fuse2/sys/arm64/arm64/gic_v3.c projects/fuse2/sys/arm64/arm64/gic_v3_var.h projects/fuse2/sys/arm64/arm64/gicv3_its.c projects/fuse2/sys/arm64/arm64/machdep.c projects/fuse2/sys/arm64/arm64/mp_machdep.c projects/fuse2/sys/arm64/arm64/nexus.c projects/fuse2/sys/arm64/arm64/trap.c projects/fuse2/sys/arm64/coresight/coresight.c projects/fuse2/sys/arm64/include/bus_dma.h projects/fuse2/sys/arm64/include/bus_dma_impl.h projects/fuse2/sys/arm64/include/cpufunc.h projects/fuse2/sys/arm64/include/ifunc.h projects/fuse2/sys/arm64/linux/Makefile projects/fuse2/sys/arm64/linux/linux.h projects/fuse2/sys/arm64/linux/linux_sysvec.c projects/fuse2/sys/arm64/rockchip/clk/rk_cru.c projects/fuse2/sys/cam/cam_periph.h projects/fuse2/sys/cam/ctl/ctl_ha.c projects/fuse2/sys/cam/nvme/nvme_xpt.c projects/fuse2/sys/cam/scsi/scsi_all.c projects/fuse2/sys/cddl/compat/opensolaris/kern/opensolaris.c projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/abd.c projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/aggsum.c projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zil_impl.h projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_disk.c projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_indirect_mapping.c projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zcp_get.c projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c projects/fuse2/sys/cddl/dev/dtrace/amd64/dtrace_isa.c projects/fuse2/sys/cddl/dev/dtrace/powerpc/dtrace_asm.S projects/fuse2/sys/cddl/dev/dtrace/powerpc/dtrace_isa.c projects/fuse2/sys/cddl/dev/fbt/powerpc/fbt_isa.c projects/fuse2/sys/compat/cloudabi32/Makefile projects/fuse2/sys/compat/cloudabi64/Makefile projects/fuse2/sys/compat/freebsd32/Makefile projects/fuse2/sys/compat/lindebugfs/lindebugfs.c projects/fuse2/sys/compat/linux/linux.c projects/fuse2/sys/compat/linux/linux.h projects/fuse2/sys/compat/linux/linux_common.h projects/fuse2/sys/compat/linux/linux_emul.h projects/fuse2/sys/compat/linux/linux_file.c projects/fuse2/sys/compat/linux/linux_fork.c projects/fuse2/sys/compat/linux/linux_getcwd.c projects/fuse2/sys/compat/linux/linux_ioctl.c projects/fuse2/sys/compat/linux/linux_misc.c projects/fuse2/sys/compat/linux/linux_misc.h projects/fuse2/sys/compat/linux/linux_signal.c projects/fuse2/sys/compat/linux/linux_socket.c projects/fuse2/sys/compat/linux/linux_socket.h projects/fuse2/sys/compat/linux/linux_stats.c projects/fuse2/sys/compat/linuxkpi/common/include/asm/uaccess.h projects/fuse2/sys/compat/linuxkpi/common/include/linux/atomic.h projects/fuse2/sys/compat/linuxkpi/common/include/linux/compiler.h projects/fuse2/sys/compat/linuxkpi/common/include/linux/device.h projects/fuse2/sys/compat/linuxkpi/common/include/linux/interrupt.h projects/fuse2/sys/compat/linuxkpi/common/include/linux/kernel.h projects/fuse2/sys/compat/linuxkpi/common/include/linux/ktime.h projects/fuse2/sys/compat/linuxkpi/common/include/linux/mm_types.h projects/fuse2/sys/compat/linuxkpi/common/include/linux/preempt.h projects/fuse2/sys/compat/linuxkpi/common/include/linux/random.h projects/fuse2/sys/compat/linuxkpi/common/include/linux/sched.h projects/fuse2/sys/compat/linuxkpi/common/include/linux/seq_file.h projects/fuse2/sys/compat/linuxkpi/common/include/linux/timer.h projects/fuse2/sys/compat/linuxkpi/common/include/linux/uaccess.h projects/fuse2/sys/compat/linuxkpi/common/include/linux/ww_mutex.h projects/fuse2/sys/compat/linuxkpi/common/src/linux_compat.c projects/fuse2/sys/compat/linuxkpi/common/src/linux_current.c projects/fuse2/sys/compat/linuxkpi/common/src/linux_pci.c projects/fuse2/sys/compat/linuxkpi/common/src/linux_tasklet.c projects/fuse2/sys/conf/NOTES projects/fuse2/sys/conf/files projects/fuse2/sys/conf/files.amd64 projects/fuse2/sys/conf/files.arm projects/fuse2/sys/conf/files.arm64 projects/fuse2/sys/conf/files.i386 projects/fuse2/sys/conf/files.powerpc projects/fuse2/sys/conf/kern.opts.mk projects/fuse2/sys/conf/kern.pre.mk projects/fuse2/sys/conf/kmod.mk projects/fuse2/sys/conf/ldscript.amd64 projects/fuse2/sys/conf/ldscript.arm projects/fuse2/sys/conf/ldscript.arm64 projects/fuse2/sys/conf/ldscript.i386 projects/fuse2/sys/conf/ldscript.mips projects/fuse2/sys/conf/ldscript.mips.cfe projects/fuse2/sys/conf/ldscript.mips.mips64 projects/fuse2/sys/conf/ldscript.mips.octeon1 projects/fuse2/sys/conf/ldscript.powerpc projects/fuse2/sys/conf/ldscript.powerpc64 projects/fuse2/sys/conf/ldscript.powerpcspe projects/fuse2/sys/conf/ldscript.riscv projects/fuse2/sys/conf/ldscript.sparc64 projects/fuse2/sys/conf/newvers.sh projects/fuse2/sys/contrib/ena-com/ena_com.c projects/fuse2/sys/contrib/ena-com/ena_com.h projects/fuse2/sys/contrib/ena-com/ena_defs/ena_admin_defs.h projects/fuse2/sys/contrib/ena-com/ena_defs/ena_common_defs.h projects/fuse2/sys/contrib/ena-com/ena_defs/ena_eth_io_defs.h projects/fuse2/sys/contrib/ena-com/ena_defs/ena_gen_info.h projects/fuse2/sys/contrib/ena-com/ena_defs/ena_regs_defs.h projects/fuse2/sys/contrib/ena-com/ena_eth_com.c projects/fuse2/sys/contrib/ena-com/ena_eth_com.h projects/fuse2/sys/contrib/ena-com/ena_plat.h projects/fuse2/sys/contrib/ipfilter/netinet/fil.c projects/fuse2/sys/contrib/ipfilter/netinet/ip_fil.h projects/fuse2/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c projects/fuse2/sys/contrib/ipfilter/netinet/ip_frag.c projects/fuse2/sys/contrib/ipfilter/netinet/ip_proxy.h projects/fuse2/sys/contrib/ipfilter/netinet/ip_rules.c projects/fuse2/sys/contrib/ipfilter/netinet/mlfk_ipl.c projects/fuse2/sys/contrib/vchiq/interface/vchiq_arm/vchiq_arm.c projects/fuse2/sys/crypto/aesni/aesni.c projects/fuse2/sys/crypto/aesni/aesni.h projects/fuse2/sys/crypto/aesni/aesni_wrap.c projects/fuse2/sys/crypto/armv8/armv8_crypto.c projects/fuse2/sys/crypto/blake2/blake2_cryptodev.c projects/fuse2/sys/crypto/ccp/ccp.c projects/fuse2/sys/crypto/ccp/ccp_hardware.c projects/fuse2/sys/ddb/db_command.c projects/fuse2/sys/ddb/db_ps.c projects/fuse2/sys/dev/aac/aac_pci.c projects/fuse2/sys/dev/aacraid/aacraid.c projects/fuse2/sys/dev/aacraid/aacraid_cam.c projects/fuse2/sys/dev/aacraid/aacraid_reg.h projects/fuse2/sys/dev/aacraid/aacraid_var.h projects/fuse2/sys/dev/acpi_support/acpi_panasonic.c projects/fuse2/sys/dev/acpica/acpi.c projects/fuse2/sys/dev/acpica/acpi_battery.c projects/fuse2/sys/dev/acpica/acpi_dock.c projects/fuse2/sys/dev/acpica/acpi_ec.c projects/fuse2/sys/dev/acpica/acpi_hpet.c projects/fuse2/sys/dev/acpica/acpi_lid.c projects/fuse2/sys/dev/acpica/acpi_thermal.c projects/fuse2/sys/dev/acpica/acpi_video.c projects/fuse2/sys/dev/acpica/acpivar.h projects/fuse2/sys/dev/adb/adb_kbd.c projects/fuse2/sys/dev/adb/adb_mouse.c projects/fuse2/sys/dev/ae/if_ae.c projects/fuse2/sys/dev/amdgpio/amdgpio.c projects/fuse2/sys/dev/amdsbwd/amdsbwd.c projects/fuse2/sys/dev/ath/ath_hal/ah.c projects/fuse2/sys/dev/atkbdc/psm.c projects/fuse2/sys/dev/bge/if_bge.c projects/fuse2/sys/dev/bge/if_bgereg.h projects/fuse2/sys/dev/cardbus/cardbus.c projects/fuse2/sys/dev/cmx/cmx.c projects/fuse2/sys/dev/coretemp/coretemp.c projects/fuse2/sys/dev/cpuctl/cpuctl.c projects/fuse2/sys/dev/ctau/ctddk.c projects/fuse2/sys/dev/cxgbe/cxgbei/cxgbei.c projects/fuse2/sys/dev/cxgbe/cxgbei/icl_cxgbei.c projects/fuse2/sys/dev/cxgbe/t4_main.c projects/fuse2/sys/dev/cxgbe/t4_sched.c projects/fuse2/sys/dev/cxgbe/t4_sge.c projects/fuse2/sys/dev/cxgbe/tom/t4_connect.c projects/fuse2/sys/dev/cxgbe/tom/t4_cpl_io.c projects/fuse2/sys/dev/cxgbe/tom/t4_ddp.c projects/fuse2/sys/dev/cxgbe/tom/t4_listen.c projects/fuse2/sys/dev/cxgbe/tom/t4_tls.c projects/fuse2/sys/dev/cxgbe/tom/t4_tom.c projects/fuse2/sys/dev/cxgbe/tom/t4_tom.h projects/fuse2/sys/dev/dcons/dcons_crom.c projects/fuse2/sys/dev/dcons/dcons_os.c projects/fuse2/sys/dev/dcons/dcons_os.h projects/fuse2/sys/dev/drm2/ttm/ttm_page_alloc.c projects/fuse2/sys/dev/efidev/efirt.c projects/fuse2/sys/dev/ena/ena.c projects/fuse2/sys/dev/ena/ena.h projects/fuse2/sys/dev/ena/ena_sysctl.c projects/fuse2/sys/dev/ena/ena_sysctl.h projects/fuse2/sys/dev/evdev/evdev_private.h projects/fuse2/sys/dev/extres/syscon/syscon_generic.c projects/fuse2/sys/dev/fb/creator.c projects/fuse2/sys/dev/fb/fbd.c projects/fuse2/sys/dev/firewire/firewire.c projects/fuse2/sys/dev/firewire/fwohci.c projects/fuse2/sys/dev/flash/at45d.c projects/fuse2/sys/dev/flash/mx25l.c projects/fuse2/sys/dev/gpio/gpioled.c projects/fuse2/sys/dev/hdmi/dwc_hdmi.c projects/fuse2/sys/dev/hwpmc/hwpmc_armv7.c projects/fuse2/sys/dev/hwpmc/hwpmc_intel.c projects/fuse2/sys/dev/ichwd/ichwd.c projects/fuse2/sys/dev/ida/ida_disk.c projects/fuse2/sys/dev/ida/ida_pci.c projects/fuse2/sys/dev/iicbus/ds1307.c projects/fuse2/sys/dev/iicbus/ds13rtc.c projects/fuse2/sys/dev/iicbus/icee.c projects/fuse2/sys/dev/iicbus/iicbus.c projects/fuse2/sys/dev/iicbus/iicbus.h projects/fuse2/sys/dev/iicbus/iiconf.c projects/fuse2/sys/dev/iicbus/isl12xx.c projects/fuse2/sys/dev/iicbus/nxprtc.c projects/fuse2/sys/dev/iicbus/rtc8583.c projects/fuse2/sys/dev/iicbus/sy8106a.c projects/fuse2/sys/dev/iicbus/syr827.c projects/fuse2/sys/dev/iicbus/twsi/a10_twsi.c projects/fuse2/sys/dev/iicbus/twsi/mv_twsi.c projects/fuse2/sys/dev/iir/iir_ctrl.c projects/fuse2/sys/dev/ioat/ioat.c projects/fuse2/sys/dev/ipmi/ipmi.c projects/fuse2/sys/dev/ipmi/ipmi_opal.c projects/fuse2/sys/dev/ips/ips.c projects/fuse2/sys/dev/iscsi/icl_soft_proxy.c projects/fuse2/sys/dev/iscsi_initiator/iscsi.c projects/fuse2/sys/dev/iscsi_initiator/iscsivar.h projects/fuse2/sys/dev/isp/isp.c projects/fuse2/sys/dev/isp/isp_freebsd.c projects/fuse2/sys/dev/iwm/if_iwm_notif_wait.c projects/fuse2/sys/dev/ixgbe/if_sriov.c projects/fuse2/sys/dev/ixl/i40e_common.c projects/fuse2/sys/dev/ksyms/ksyms.c projects/fuse2/sys/dev/led/led.c projects/fuse2/sys/dev/liquidio/lio_bsd.h projects/fuse2/sys/dev/mfi/mfi_disk.c projects/fuse2/sys/dev/mfi/mfi_pci.c projects/fuse2/sys/dev/mfi/mfi_syspd.c projects/fuse2/sys/dev/mlx/mlxvar.h projects/fuse2/sys/dev/mlx4/mlx4_en/mlx4_en_netdev.c projects/fuse2/sys/dev/mlx5/mlx5_en/mlx5_en_main.c projects/fuse2/sys/dev/mlx5/mlx5_en/mlx5_en_rl.c projects/fuse2/sys/dev/mlx5/mlx5_en/mlx5_en_tx.c projects/fuse2/sys/dev/mmc/host/dwmmc.c projects/fuse2/sys/dev/mpr/mpr_user.c projects/fuse2/sys/dev/mpr/mprvar.h projects/fuse2/sys/dev/mps/mps_user.c projects/fuse2/sys/dev/mps/mpsvar.h projects/fuse2/sys/dev/mrsas/mrsas.c projects/fuse2/sys/dev/mrsas/mrsas.h projects/fuse2/sys/dev/netmap/if_ptnet.c projects/fuse2/sys/dev/netmap/netmap_freebsd.c projects/fuse2/sys/dev/nmdm/nmdm.c projects/fuse2/sys/dev/ntb/if_ntb/if_ntb.c projects/fuse2/sys/dev/ntb/ntb_hw/ntb_hw_intel.c projects/fuse2/sys/dev/nvme/nvme_qpair.c projects/fuse2/sys/dev/oce/oce_if.c projects/fuse2/sys/dev/ofw/ofw_bus_subr.h projects/fuse2/sys/dev/ow/ow.c projects/fuse2/sys/dev/pccard/pccard.c projects/fuse2/sys/dev/pci/pci.c projects/fuse2/sys/dev/pci/pci_host_generic.c projects/fuse2/sys/dev/pci/pci_host_generic_acpi.c projects/fuse2/sys/dev/pci/pci_host_generic_fdt.c projects/fuse2/sys/dev/pci/pci_iov.c projects/fuse2/sys/dev/pci/pci_pci.c projects/fuse2/sys/dev/pci/pcivar.h projects/fuse2/sys/dev/random/fortuna.c projects/fuse2/sys/dev/random/ivy.c projects/fuse2/sys/dev/random/random_harvestq.c projects/fuse2/sys/dev/random/random_infra.c projects/fuse2/sys/dev/random/randomdev.c projects/fuse2/sys/dev/scc/scc_core.c projects/fuse2/sys/dev/scc/scc_dev_quicc.c projects/fuse2/sys/dev/scc/scc_dev_sab82532.c projects/fuse2/sys/dev/scc/scc_dev_z8530.c projects/fuse2/sys/dev/sdhci/sdhci.c projects/fuse2/sys/dev/smartpqi/smartpqi_includes.h projects/fuse2/sys/dev/sound/pcm/sound.h projects/fuse2/sys/dev/spibus/spi.h projects/fuse2/sys/dev/tws/tws.h projects/fuse2/sys/dev/uart/uart_cpu_acpi.h projects/fuse2/sys/dev/uart/uart_cpu_arm64.c projects/fuse2/sys/dev/uart/uart_cpu_x86.c projects/fuse2/sys/dev/usb/controller/xhci.c projects/fuse2/sys/dev/usb/net/if_cdce.c projects/fuse2/sys/dev/usb/net/if_muge.c projects/fuse2/sys/dev/usb/net/if_mugereg.h projects/fuse2/sys/dev/usb/net/if_smsc.c projects/fuse2/sys/dev/usb/net/if_usie.c projects/fuse2/sys/dev/usb/net/uhso.c projects/fuse2/sys/dev/usb/serial/u3g.c projects/fuse2/sys/dev/usb/usb_device.c projects/fuse2/sys/dev/usb/usb_generic.c projects/fuse2/sys/dev/usb/usbdevs projects/fuse2/sys/dev/usb/usbdi.h projects/fuse2/sys/dev/usb/wlan/if_run.c projects/fuse2/sys/dev/veriexec/veriexec_ioctl.h projects/fuse2/sys/dev/veriexec/verified_exec.c projects/fuse2/sys/dev/viawd/viawd.c projects/fuse2/sys/dev/virtio/balloon/virtio_balloon.c projects/fuse2/sys/dev/virtio/block/virtio_blk.c projects/fuse2/sys/dev/virtio/console/virtio_console.c projects/fuse2/sys/dev/virtio/mmio/virtio_mmio.c projects/fuse2/sys/dev/virtio/network/if_vtnet.c projects/fuse2/sys/dev/virtio/pci/virtio_pci.c projects/fuse2/sys/dev/virtio/random/virtio_random.c projects/fuse2/sys/dev/virtio/scsi/virtio_scsi.c projects/fuse2/sys/dev/virtio/virtio.c projects/fuse2/sys/dev/virtio/virtio.h projects/fuse2/sys/dev/vkbd/vkbd.c projects/fuse2/sys/dev/vmware/vmci/vmci.c projects/fuse2/sys/dev/vt/hw/efifb/efifb.c projects/fuse2/sys/dev/vt/vt_cpulogos.c projects/fuse2/sys/dev/vt/vt_sysmouse.c projects/fuse2/sys/dev/watchdog/watchdog.c projects/fuse2/sys/dev/xdma/xdma.c projects/fuse2/sys/dev/xdma/xdma_bank.c projects/fuse2/sys/dev/xdma/xdma_bio.c projects/fuse2/sys/dev/xdma/xdma_mbuf.c projects/fuse2/sys/dev/xdma/xdma_queue.c projects/fuse2/sys/dev/xdma/xdma_sg.c projects/fuse2/sys/dev/xen/console/xen_console.c projects/fuse2/sys/dev/xen/debug/debug.c projects/fuse2/sys/fs/devfs/devfs_vnops.c projects/fuse2/sys/fs/ext2fs/ext2_inode.c projects/fuse2/sys/fs/fuse/fuse_internal.c projects/fuse2/sys/fs/fuse/fuse_internal.h projects/fuse2/sys/fs/fuse/fuse_io.c projects/fuse2/sys/fs/fuse/fuse_node.c projects/fuse2/sys/fs/fuse/fuse_node.h projects/fuse2/sys/fs/fuse/fuse_vfsops.c projects/fuse2/sys/fs/fuse/fuse_vnops.c projects/fuse2/sys/fs/msdosfs/msdosfs_denode.c projects/fuse2/sys/fs/nfsclient/nfs.h projects/fuse2/sys/fs/nfsclient/nfs_clbio.c projects/fuse2/sys/fs/nfsclient/nfs_clvnops.c projects/fuse2/sys/fs/nullfs/null_vnops.c projects/fuse2/sys/fs/pseudofs/pseudofs_vnops.c projects/fuse2/sys/fs/tmpfs/tmpfs_subr.c projects/fuse2/sys/fs/unionfs/union_subr.c projects/fuse2/sys/geom/eli/g_eli.c projects/fuse2/sys/geom/eli/g_eli.h projects/fuse2/sys/geom/eli/g_eli_hmac.c projects/fuse2/sys/geom/eli/pkcs5v2.c projects/fuse2/sys/geom/eli/pkcs5v2.h projects/fuse2/sys/geom/nop/g_nop.c projects/fuse2/sys/i386/conf/GENERIC projects/fuse2/sys/i386/conf/NOTES projects/fuse2/sys/i386/i386/elan-mmcr.c projects/fuse2/sys/i386/i386/exception.s projects/fuse2/sys/i386/i386/genassym.c projects/fuse2/sys/i386/i386/geode.c projects/fuse2/sys/i386/i386/initcpu.c projects/fuse2/sys/i386/i386/longrun.c projects/fuse2/sys/i386/i386/npx.c projects/fuse2/sys/i386/i386/pmap.c projects/fuse2/sys/i386/i386/pmap_base.c projects/fuse2/sys/i386/i386/support.s projects/fuse2/sys/i386/include/pcpu.h projects/fuse2/sys/i386/linux/Makefile projects/fuse2/sys/i386/linux/linux.h projects/fuse2/sys/i386/linux/linux_machdep.c projects/fuse2/sys/i386/linux/linux_sysvec.c projects/fuse2/sys/kern/bus_if.m projects/fuse2/sys/kern/imgact_elf.c projects/fuse2/sys/kern/init_main.c projects/fuse2/sys/kern/kern_clock.c projects/fuse2/sys/kern/kern_ctf.c projects/fuse2/sys/kern/kern_descrip.c projects/fuse2/sys/kern/kern_exec.c projects/fuse2/sys/kern/kern_exit.c projects/fuse2/sys/kern/kern_fork.c projects/fuse2/sys/kern/kern_intr.c projects/fuse2/sys/kern/kern_kcov.c projects/fuse2/sys/kern/kern_mbuf.c projects/fuse2/sys/kern/kern_mib.c projects/fuse2/sys/kern/kern_proc.c projects/fuse2/sys/kern/kern_prot.c projects/fuse2/sys/kern/kern_shutdown.c projects/fuse2/sys/kern/kern_sig.c projects/fuse2/sys/kern/kern_thread.c projects/fuse2/sys/kern/kern_ubsan.c projects/fuse2/sys/kern/link_elf_obj.c projects/fuse2/sys/kern/makesyscalls.sh projects/fuse2/sys/kern/stack_protector.c projects/fuse2/sys/kern/subr_bus.c projects/fuse2/sys/kern/subr_bus_dma.c projects/fuse2/sys/kern/subr_eventhandler.c projects/fuse2/sys/kern/subr_intr.c projects/fuse2/sys/kern/subr_param.c projects/fuse2/sys/kern/subr_power.c projects/fuse2/sys/kern/subr_sleepqueue.c projects/fuse2/sys/kern/subr_turnstile.c projects/fuse2/sys/kern/subr_vmem.c projects/fuse2/sys/kern/subr_witness.c projects/fuse2/sys/kern/sys_process.c projects/fuse2/sys/kern/tty_tty.c projects/fuse2/sys/kern/uipc_mbuf.c projects/fuse2/sys/kern/uipc_mqueue.c projects/fuse2/sys/kern/uipc_shm.c projects/fuse2/sys/kern/uipc_usrreq.c projects/fuse2/sys/kern/vfs_bio.c projects/fuse2/sys/kern/vfs_cache.c projects/fuse2/sys/kern/vfs_default.c projects/fuse2/sys/kern/vfs_lookup.c projects/fuse2/sys/kern/vfs_mount.c projects/fuse2/sys/kern/vfs_mountroot.c projects/fuse2/sys/kern/vfs_subr.c projects/fuse2/sys/kern/vfs_vnops.c projects/fuse2/sys/mips/atheros/ar531x/ar5315_machdep.c projects/fuse2/sys/mips/atheros/ar531x/ar5315_wdog.c projects/fuse2/sys/mips/atheros/ar71xx_gpio.c projects/fuse2/sys/mips/atheros/ar71xx_machdep.c projects/fuse2/sys/mips/atheros/ar71xx_wdog.c projects/fuse2/sys/mips/cavium/octeon_wdog.c projects/fuse2/sys/mips/cavium/usb/octusb_octeon.c projects/fuse2/sys/mips/include/pmap.h projects/fuse2/sys/mips/ingenic/jz4780_lcd.c projects/fuse2/sys/mips/mediatek/mtk_spi_v1.c projects/fuse2/sys/mips/mips/elf_trampoline.c projects/fuse2/sys/mips/mips/freebsd32_machdep.c projects/fuse2/sys/mips/mips/machdep.c projects/fuse2/sys/mips/mips/pm_machdep.c projects/fuse2/sys/mips/mips/pmap.c projects/fuse2/sys/mips/mips/trap.c projects/fuse2/sys/modules/Makefile projects/fuse2/sys/modules/aesni/Makefile projects/fuse2/sys/modules/ena/Makefile projects/fuse2/sys/modules/ipfilter/Makefile projects/fuse2/sys/modules/linprocfs/Makefile projects/fuse2/sys/modules/linsysfs/Makefile projects/fuse2/sys/modules/linux/Makefile projects/fuse2/sys/modules/linux64/Makefile projects/fuse2/sys/modules/linux_common/Makefile projects/fuse2/sys/modules/linuxkpi/Makefile projects/fuse2/sys/modules/usb/usb/Makefile projects/fuse2/sys/net/bpf.c projects/fuse2/sys/net/bpf.h projects/fuse2/sys/net/bpf_buffer.c projects/fuse2/sys/net/ethernet.h projects/fuse2/sys/net/if.c projects/fuse2/sys/net/if_bridge.c projects/fuse2/sys/net/if_clone.h projects/fuse2/sys/net/if_ethersubr.c projects/fuse2/sys/net/if_lagg.c projects/fuse2/sys/net/if_llatbl.c projects/fuse2/sys/net/if_llatbl.h projects/fuse2/sys/net/if_tuntap.c projects/fuse2/sys/net/if_var.h projects/fuse2/sys/net/if_vlan.c projects/fuse2/sys/net/if_vlan_var.h projects/fuse2/sys/net/iflib.c projects/fuse2/sys/net/iflib.h projects/fuse2/sys/net/netisr.c projects/fuse2/sys/net/route.c projects/fuse2/sys/net80211/ieee80211_hwmp.c projects/fuse2/sys/net80211/ieee80211_mesh.c projects/fuse2/sys/net80211/ieee80211_output.c projects/fuse2/sys/net80211/ieee80211_wds.c projects/fuse2/sys/netinet/if_ether.c projects/fuse2/sys/netinet/in_pcb.c projects/fuse2/sys/netinet/ip_output.c projects/fuse2/sys/netinet/netdump/netdump_client.c projects/fuse2/sys/netinet/sctp_usrreq.c projects/fuse2/sys/netinet/sctputil.c projects/fuse2/sys/netinet/sctputil.h projects/fuse2/sys/netinet/tcp_offload.c projects/fuse2/sys/netinet/tcp_stacks/rack.c projects/fuse2/sys/netinet/tcp_syncache.c projects/fuse2/sys/netinet/toecore.c projects/fuse2/sys/netinet/toecore.h projects/fuse2/sys/netinet/udp_usrreq.c projects/fuse2/sys/netinet6/icmp6.c projects/fuse2/sys/netinet6/in6_src.c projects/fuse2/sys/netinet6/ip6_output.c projects/fuse2/sys/netinet6/nd6.c projects/fuse2/sys/netinet6/nd6_nbr.c projects/fuse2/sys/netinet6/nd6_rtr.c projects/fuse2/sys/netipsec/xform_ah.c projects/fuse2/sys/netipsec/xform_esp.c projects/fuse2/sys/netpfil/ipfw/ip_fw2.c projects/fuse2/sys/netpfil/ipfw/nat64/ip_fw_nat64.c projects/fuse2/sys/netpfil/pf/pf.c projects/fuse2/sys/ofed/drivers/infiniband/core/ib_roce_gid_mgmt.c projects/fuse2/sys/ofed/drivers/infiniband/core/ib_verbs.c projects/fuse2/sys/ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c projects/fuse2/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c projects/fuse2/sys/opencrypto/cryptodeflate.c projects/fuse2/sys/powerpc/aim/mmu_oea64.c projects/fuse2/sys/powerpc/aim/moea64_native.c projects/fuse2/sys/powerpc/aim/trap_subr64.S projects/fuse2/sys/powerpc/booke/pmap.c projects/fuse2/sys/powerpc/conf/GENERIC projects/fuse2/sys/powerpc/conf/GENERIC64 projects/fuse2/sys/powerpc/conf/NOTES projects/fuse2/sys/powerpc/mpc85xx/platform_mpc85xx.c projects/fuse2/sys/powerpc/ofw/ofw_machdep.c projects/fuse2/sys/powerpc/powermac/cpcht.c projects/fuse2/sys/powerpc/powermac/cuda.c projects/fuse2/sys/powerpc/powermac/pmu.c projects/fuse2/sys/powerpc/powermac/smu.c projects/fuse2/sys/powerpc/powermac/vcoregpio.c projects/fuse2/sys/powerpc/powernv/opal.h projects/fuse2/sys/powerpc/powernv/opal_async.c projects/fuse2/sys/powerpc/powernv/opal_console.c projects/fuse2/sys/powerpc/powernv/opal_dev.c projects/fuse2/sys/powerpc/powernv/opal_flash.c projects/fuse2/sys/powerpc/powernv/opal_sensor.c projects/fuse2/sys/powerpc/powernv/xive.c projects/fuse2/sys/powerpc/powerpc/cpu.c projects/fuse2/sys/powerpc/powerpc/cpu_subr64.S projects/fuse2/sys/powerpc/powerpc/openpic.c projects/fuse2/sys/powerpc/ps3/ps3bus.c projects/fuse2/sys/powerpc/pseries/rtas_dev.c projects/fuse2/sys/powerpc/pseries/xics.c projects/fuse2/sys/riscv/riscv/intr_machdep.c projects/fuse2/sys/riscv/riscv/machdep.c projects/fuse2/sys/riscv/riscv/mp_machdep.c projects/fuse2/sys/riscv/riscv/trap.c projects/fuse2/sys/security/audit/audit.c projects/fuse2/sys/security/audit/audit_trigger.c projects/fuse2/sys/security/mac_veriexec/mac_veriexec.c projects/fuse2/sys/security/mac_veriexec/mac_veriexec.h projects/fuse2/sys/security/mac_veriexec/mac_veriexec_internal.h projects/fuse2/sys/security/mac_veriexec/veriexec_metadata.c projects/fuse2/sys/sparc64/conf/GENERIC projects/fuse2/sys/sys/_lock.h projects/fuse2/sys/sys/ata.h projects/fuse2/sys/sys/bufobj.h projects/fuse2/sys/sys/bus.h projects/fuse2/sys/sys/bus_dma.h projects/fuse2/sys/sys/conf.h projects/fuse2/sys/sys/cpu.h projects/fuse2/sys/sys/disk/mbr.h projects/fuse2/sys/sys/elf_common.h projects/fuse2/sys/sys/eventhandler.h projects/fuse2/sys/sys/interrupt.h projects/fuse2/sys/sys/kerneldump.h projects/fuse2/sys/sys/lock.h projects/fuse2/sys/sys/malloc.h projects/fuse2/sys/sys/mbuf.h projects/fuse2/sys/sys/param.h projects/fuse2/sys/sys/pcpu.h projects/fuse2/sys/sys/power.h projects/fuse2/sys/sys/proc.h projects/fuse2/sys/sys/systm.h projects/fuse2/sys/sys/ucred.h projects/fuse2/sys/sys/user.h projects/fuse2/sys/sys/vmmeter.h projects/fuse2/sys/sys/vnode.h projects/fuse2/sys/sys/watchdog.h projects/fuse2/sys/ufs/ffs/ffs_alloc.c projects/fuse2/sys/ufs/ffs/ffs_inode.c projects/fuse2/sys/ufs/ffs/ffs_snapshot.c projects/fuse2/sys/ufs/ffs/ffs_softdep.c projects/fuse2/sys/ufs/ffs/ffs_vfsops.c projects/fuse2/sys/ufs/ffs/softdep.h projects/fuse2/sys/ufs/ufs/ufs_extattr.c projects/fuse2/sys/vm/memguard.c projects/fuse2/sys/vm/swap_pager.c projects/fuse2/sys/vm/uma_core.c projects/fuse2/sys/vm/vm_fault.c projects/fuse2/sys/vm/vm_glue.c projects/fuse2/sys/vm/vm_map.c projects/fuse2/sys/vm/vm_map.h projects/fuse2/sys/vm/vm_meter.c projects/fuse2/sys/vm/vm_mmap.c projects/fuse2/sys/vm/vm_object.c projects/fuse2/sys/vm/vm_page.c projects/fuse2/sys/vm/vm_page.h projects/fuse2/sys/vm/vm_pageout.c projects/fuse2/sys/vm/vm_pageout.h projects/fuse2/sys/vm/vm_phys.c projects/fuse2/sys/vm/vm_phys.h projects/fuse2/sys/vm/vm_reserv.c projects/fuse2/sys/vm/vm_reserv.h projects/fuse2/sys/vm/vm_unix.c projects/fuse2/sys/vm/vnode_pager.c projects/fuse2/sys/x86/acpica/OsdEnvironment.c projects/fuse2/sys/x86/cpufreq/smist.c projects/fuse2/sys/x86/include/bus_dma.h projects/fuse2/sys/x86/include/busdma_impl.h projects/fuse2/sys/x86/include/ifunc.h projects/fuse2/sys/x86/include/specialreg.h projects/fuse2/sys/x86/include/x86_var.h projects/fuse2/sys/x86/iommu/busdma_dmar.c projects/fuse2/sys/x86/iommu/intel_drv.c projects/fuse2/sys/x86/iommu/intel_fault.c projects/fuse2/sys/x86/iommu/intel_gas.c projects/fuse2/sys/x86/iommu/intel_intrmap.c projects/fuse2/sys/x86/iommu/intel_qi.c projects/fuse2/sys/x86/iommu/intel_quirks.c projects/fuse2/sys/x86/x86/busdma_bounce.c projects/fuse2/sys/x86/x86/cpu_machdep.c projects/fuse2/sys/x86/x86/identcpu.c projects/fuse2/sys/x86/x86/mca.c projects/fuse2/sys/x86/x86/tsc.c projects/fuse2/sys/x86/x86/ucode.c projects/fuse2/targets/pseudo/userland/Makefile.depend projects/fuse2/targets/pseudo/userland/misc/Makefile.depend projects/fuse2/tests/sys/geom/class/eli/conf.sh projects/fuse2/tests/sys/geom/class/eli/init_test.sh projects/fuse2/tests/sys/netinet/Makefile projects/fuse2/tests/sys/netipsec/tunnel/utils.subr projects/fuse2/tests/sys/opencrypto/cryptodev.py projects/fuse2/tests/sys/opencrypto/cryptotest.py projects/fuse2/tests/sys/opencrypto/runtests.sh projects/fuse2/tests/sys/sys/rb_test.c projects/fuse2/tests/sys/sys/splay_test.c projects/fuse2/tools/build/beinstall.sh projects/fuse2/tools/build/mk/OptionalObsoleteFiles.inc projects/fuse2/tools/tools/ath/athani/main.c projects/fuse2/tools/tools/nanobsd/dhcpd/common projects/fuse2/tools/tools/nanobsd/pcengines/common.conf projects/fuse2/tools/tools/tinybsd/conf/firewall/etc/rc.firewall projects/fuse2/usr.bin/Makefile projects/fuse2/usr.bin/awk/Makefile projects/fuse2/usr.bin/calendar/calendars/calendar.freebsd projects/fuse2/usr.bin/clang/Makefile projects/fuse2/usr.bin/grep/grep.c projects/fuse2/usr.bin/login/Makefile projects/fuse2/usr.bin/tail/Makefile projects/fuse2/usr.bin/tail/tail.c projects/fuse2/usr.bin/tar/tests/Makefile projects/fuse2/usr.bin/vmstat/vmstat.c projects/fuse2/usr.bin/vtfontcvt/vtfontcvt.c projects/fuse2/usr.sbin/Makefile.amd64 projects/fuse2/usr.sbin/Makefile.i386 projects/fuse2/usr.sbin/amd/include/newvers.sh projects/fuse2/usr.sbin/bhyve/gdb.c projects/fuse2/usr.sbin/bhyve/mem.c projects/fuse2/usr.sbin/bhyve/mem.h projects/fuse2/usr.sbin/bhyve/pci_emul.c projects/fuse2/usr.sbin/bhyve/pci_passthru.c projects/fuse2/usr.sbin/bhyve/virtio.c projects/fuse2/usr.sbin/bhyve/xmsr.c projects/fuse2/usr.sbin/camdd/camdd.c projects/fuse2/usr.sbin/daemon/daemon.c projects/fuse2/usr.sbin/etcupdate/etcupdate.sh projects/fuse2/usr.sbin/i2c/i2c.8 projects/fuse2/usr.sbin/i2c/i2c.c projects/fuse2/usr.sbin/jail/jail.8 projects/fuse2/usr.sbin/kldxref/kldxref.c projects/fuse2/usr.sbin/mountd/mountd.c projects/fuse2/usr.sbin/mountd/pathnames.h projects/fuse2/usr.sbin/mpsutil/mps_cmd.c projects/fuse2/usr.sbin/ntp/ntpd/leap-seconds projects/fuse2/usr.sbin/pmc/cmd_pmc_filter.cc projects/fuse2/usr.sbin/pw/pw_user.c projects/fuse2/usr.sbin/rpc.yppasswdd/yppasswdd_server.c projects/fuse2/usr.sbin/services_mkdb/Makefile Directory Properties: projects/fuse2/ (props changed) projects/fuse2/cddl/ (props changed) projects/fuse2/cddl/contrib/opensolaris/ (props changed) projects/fuse2/cddl/contrib/opensolaris/cmd/zdb/ (props changed) projects/fuse2/cddl/contrib/opensolaris/cmd/zfs/ (props changed) projects/fuse2/cddl/contrib/opensolaris/lib/libzfs/ (props changed) projects/fuse2/contrib/elftoolchain/ (props changed) projects/fuse2/contrib/libarchive/ (props changed) projects/fuse2/contrib/llvm/ (props changed) projects/fuse2/contrib/netbsd-tests/ (props changed) projects/fuse2/contrib/one-true-awk/ (props changed) projects/fuse2/contrib/wpa/ (props changed) projects/fuse2/crypto/heimdal/ (props changed) projects/fuse2/crypto/openssl/ (props changed) projects/fuse2/gnu/usr.bin/binutils/ (props changed) projects/fuse2/sys/cddl/contrib/opensolaris/ (props changed) projects/fuse2/sys/contrib/ena-com/ (props changed) projects/fuse2/sys/contrib/ipfilter/ (props changed) Modified: projects/fuse2/Makefile ============================================================================== --- projects/fuse2/Makefile Thu Jun 6 16:09:19 2019 (r348743) +++ projects/fuse2/Makefile Thu Jun 6 16:20:50 2019 (r348744) @@ -4,7 +4,8 @@ # The user-driven targets are: # # universe - *Really* build *everything* (buildworld and -# all kernels on all architectures). +# all kernels on all architectures). Define the +# MAKE_JUST_KERNELS variable to only build kernels. # tinderbox - Same as universe, but presents a list of failed build # targets and exits with an error if there were any. # buildworld - Rebuild *everything*, including glue to help do @@ -45,12 +46,6 @@ # native-xtools-install # - Install the files to the given DESTDIR/NXTP where # NXTP defaults to /nxb-bin. -# -# "quick" way to test all kernel builds: -# _jflag=`sysctl -n hw.ncpu` -# _jflag=$(($_jflag * 2)) -# [ $_jflag -gt 12 ] && _jflag=12 -# make universe -DMAKE_JUST_KERNELS JFLAG=-j${_jflag} # # This makefile is simple by design. The FreeBSD make automatically reads # the /usr/share/mk/sys.mk unless the -m argument is specified on the Modified: projects/fuse2/Makefile.inc1 ============================================================================== --- projects/fuse2/Makefile.inc1 Thu Jun 6 16:09:19 2019 (r348743) +++ projects/fuse2/Makefile.inc1 Thu Jun 6 16:20:50 2019 (r348744) @@ -939,13 +939,8 @@ _sanity_check: .PHONY .MAKE _cleanobj_fast_depend_hack: .PHONY # Syscall stubs rewritten in C and obsolete MD assembly implementations # Date SVN Rev Syscalls -# 20180404 r332048 sigreturn -# 20180405 r332080 shmat -# 20180406 r332119 setlogin -# 20180411 r332443 exect -# 20180525 r334224 vadvise # 20180604 r334626 brk sbrk -.for f in brk exect sbrk setlogin shmat sigreturn vadvise +.for f in brk sbrk @if [ -e "${OBJTOP}/lib/libc/.depend.${f}.o" ] && \ egrep -qw '${f}\.[sS]' ${OBJTOP}/lib/libc/.depend.${f}.o; then \ echo "Removing stale dependencies for ${f} syscall wrappers"; \ @@ -2105,7 +2100,8 @@ _bootstrap_tools_links+=m4 lex # r334881 added libdwarf constants used by ctfconvert. # r338478 fixed a crash in objcopy for mips64el objects # r339083 libelf: correct mips64el test to use ELF header -.if ${BOOTSTRAPPING} < 1200085 +# r348347 Add missing powerpc64 relocation support to libdwarf +.if ${BOOTSTRAPPING} < 1300030 _elftoolchain_libs= lib/libelf lib/libdwarf ${_bt}-lib/libelf: ${_bt_m4_depend} ${_bt}-lib/libdwarf: ${_bt_m4_depend} Modified: projects/fuse2/ObsoleteFiles.inc ============================================================================== --- projects/fuse2/ObsoleteFiles.inc Thu Jun 6 16:09:19 2019 (r348743) +++ projects/fuse2/ObsoleteFiles.inc Thu Jun 6 16:20:50 2019 (r348744) @@ -38,9 +38,44 @@ # xargs -n1 | sort | uniq -d; # done +# 20190523: Remove obsolete kgzip and support files +OLD_FILES+=usr/sbin/kgzip +OLD_FILES+=usr/lib/kgzldr.o +OLD_FILES+=usr/share/man/man8/kgzip.8.gz + +# 20190517: Remove obsolete 10 and 10/100 ethernet drivers. +OLD_FILES+=usr/share/man/man4/bm.4.gz +OLD_FILES+=usr/share/man/man4/cs.4.gz +OLD_FILES+=usr/share/man/man4/de.4.gz +OLD_FILES+=usr/share/man/man4/if_de.4.gz +OLD_FILES+=usr/share/man/man4/ed.4.gz +OLD_FILES+=usr/share/man/man4/if_ed.4.gz +OLD_FILES+=usr/share/man/man4/ep.4.gz +OLD_FILES+=usr/share/man/man4/ex.4.gz +OLD_FILES+=usr/share/man/man4/fe.4.gz +OLD_FILES+=usr/share/man/man4/pcn.4.gz +OLD_FILES+=usr/share/man/man4/if_pcn.4.gz +OLD_FILES+=usr/share/man/man4/sf.4.gz +OLD_FILES+=usr/share/man/man4/if_sf.4.gz +OLD_FILES+=usr/share/man/man4/sn.4.gz +OLD_FILES+=usr/share/man/man4/if_sn.4.gz +OLD_FILES+=usr/share/man/man4/tl.4.gz +OLD_FILES+=usr/share/man/man4/if_tl.4.gz +OLD_FILES+=usr/share/man/man4/tx.4.gz +OLD_FILES+=usr/share/man/man4/if_tx.4.gz +OLD_FILES+=usr/share/man/man4/txp.4.gz +OLD_FILES+=usr/share/man/man4/if_txp.4.gz +OLD_FILES+=usr/share/man/man4/vx.4.gz +OLD_FILES+=usr/share/man/man4/wb.4.gz +OLD_FILES+=usr/share/man/man4/xe.4.gz +OLD_FILES+=usr/share/man/man4/if_xe.4.gz +# 20190513: libcap_sysctl interface change +OLD_FILES+=lib/casper/libcap_sysctl.1 # 20190509: tests/sys/opencrypto requires the net/py-dpkt package. OLD_FILES+=usr/tests/sys/opencrypto/dpkt.py OLD_FILES+=usr/tests/sys/opencrypto/dpkt.pyc +# 20190326: tzdata 2019a import +OLD_FILES+=usr/share/zoneinfo/Etc/UCT # 20190304: new libc++ import which bumps version from 7.0.1 to 8.0.0. OLD_FILES+=usr/include/c++/v1/experimental/dynarray # 20190304: new clang import which bumps version from 7.0.1 to 8.0.0. @@ -199,16 +234,21 @@ OLD_FILES+=usr/include/sys/seq.h OLD_FILES+=usr/lib/libprivateifconfig.a OLD_FILES+=usr/lib/libprivateifconfig_p.a # 20190131: pfil(9) changed -OLD_FILES+=usr/share/man/man9/pfil_hook_get.9 -OLD_FILES+=usr/share/man/man9/pfil_rlock.9 -OLD_FILES+=usr/share/man/man9/pfil_runlock.9 -OLD_FILES+=usr/share/man/man9/pfil_wlock.9 -OLD_FILES+=usr/share/man/man9/pfil_wunlock.9 +OLD_FILES+=usr/share/man/man9/pfil_hook_get.9.gz +OLD_FILES+=usr/share/man/man9/pfil_rlock.9.gz +OLD_FILES+=usr/share/man/man9/pfil_runlock.9.gz +OLD_FILES+=usr/share/man/man9/pfil_wlock.9.gz +OLD_FILES+=usr/share/man/man9/pfil_wunlock.9.gz # 20190126: adv(4) / adw(4) removal OLD_FILES+=usr/share/man/man4/adv.4.gz OLD_FILES+=usr/share/man/man4/adw.4.gz +# 20190123: nonexistant cred_update_thread(9) removed +OLD_FILES+=usr/share/man/man9/cred_update_thread.9.gz # 20190114: old pbuf allocator removed +OLD_FILES+=usr/share/man/man9/getpbuf.9.gz OLD_FILES+=usr/share/man/man9/pbuf.9.gz +OLD_FILES+=usr/share/man/man9/relpbuf.9.gz +OLD_FILES+=usr/share/man/man9/trypbuf.9.gz # 20181219: ibcs removal OLD_FILES+=usr/share/examples/ibcs2/hello.uu OLD_FILES+=usr/share/examples/ibcs2/README Modified: projects/fuse2/UPDATING ============================================================================== --- projects/fuse2/UPDATING Thu Jun 6 16:09:19 2019 (r348743) +++ projects/fuse2/UPDATING Thu Jun 6 16:20:50 2019 (r348744) @@ -31,7 +31,7 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 13.x IS SLOW: disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) -20190513: +20190606: The vfs.fusefs.sync_unmount and vfs.fusefs.init_backgrounded sysctls and the "-o sync_unmount" and "-o init_backgrounded" mount options have been removed from mount_fusefs(8). You can safely remove them from @@ -43,6 +43,14 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 13.x IS SLOW: felt the need to set any of them to a non-default value, please tell asomers@FreeBSD.org why. +20190513: + User-wired pages now have their own counter, + vm.stats.vm.v_user_wire_count. The vm.max_wired sysctl was renamed + to vm.max_user_wired and changed from an unsigned int to an unsigned + long. bhyve VMs wired with the -S are now subject to the user + wiring limit; the vm.max_user_wired sysctl may need to be tuned to + avoid running into the limit. + 20190507: The IPSEC option has been removed from GENERIC. Users requiring ipsec(4) must now load the ipsec(4) kernel module. @@ -78,13 +86,6 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 13.x IS SLOW: non-zero to disable warnings in dmesg when the same conditions are met as for the diagnostic sysctls above. Defaults to zero, i.e., produce warnings in dmesg when the conditions are met. - -20190416: - The tunable "security.stack_protect.permit_nonrandom_cookies" may be - set to a non-zero value to boot systems that do not provide early - entropy. Otherwise, such systems may see the panic message: - "cannot initialize stack cookies because random device is not yet - seeded." 20190416: The loadable random module KPI has changed; the random_infra_init() Modified: projects/fuse2/bin/freebsd-version/Makefile ============================================================================== --- projects/fuse2/bin/freebsd-version/Makefile Thu Jun 6 16:09:19 2019 (r348743) +++ projects/fuse2/bin/freebsd-version/Makefile Thu Jun 6 16:20:50 2019 (r348744) @@ -7,7 +7,7 @@ CLEANFILES = freebsd-version freebsd-version.sh NEWVERS = ${SRCTOP}/sys/conf/newvers.sh freebsd-version.sh: ${.CURDIR}/freebsd-version.sh.in ${NEWVERS} - eval $$(egrep '^(TYPE|REVISION|BRANCH)=' ${NEWVERS}) ; \ + eval $$(sh ${NEWVERS} -v); \ if ! sed -e "\ s/@@TYPE@@/$${TYPE}/g; \ s/@@REVISION@@/$${REVISION}/g; \ Modified: projects/fuse2/cddl/contrib/opensolaris/cmd/zdb/zdb.c ============================================================================== --- projects/fuse2/cddl/contrib/opensolaris/cmd/zdb/zdb.c Thu Jun 6 16:09:19 2019 (r348743) +++ projects/fuse2/cddl/contrib/opensolaris/cmd/zdb/zdb.c Thu Jun 6 16:20:50 2019 (r348744) @@ -63,6 +63,7 @@ #include #include #include +#include #include #include #undef verify @@ -111,6 +112,7 @@ static uint64_t max_inflight = 1000; static int leaked_objects = 0; static void snprintf_blkptr_compact(char *, size_t, const blkptr_t *); +static void mos_obj_refd(uint64_t); /* * These libumem hooks provide a reasonable set of defaults for the allocator's @@ -1592,6 +1594,8 @@ dump_dsl_dir(objset_t *os, uint64_t object, void *data DO(CHILD_RSRV); DO(REFRSRV); #undef DO + (void) printf("\t\tclones = %llu\n", + (u_longlong_t)dd->dd_clones); } /*ARGSUSED*/ @@ -1774,6 +1778,33 @@ dump_full_bpobj(bpobj_t *bpo, const char *name, int in } static void +bpobj_count_refd(bpobj_t *bpo) +{ + mos_obj_refd(bpo->bpo_object); + + if (bpo->bpo_havesubobj && bpo->bpo_phys->bpo_subobjs != 0) { + mos_obj_refd(bpo->bpo_phys->bpo_subobjs); + for (uint64_t i = 0; i < bpo->bpo_phys->bpo_num_subobjs; i++) { + uint64_t subobj; + bpobj_t subbpo; + int error; + VERIFY0(dmu_read(bpo->bpo_os, + bpo->bpo_phys->bpo_subobjs, + i * sizeof (subobj), sizeof (subobj), &subobj, 0)); + error = bpobj_open(&subbpo, bpo->bpo_os, subobj); + if (error != 0) { + (void) printf("ERROR %u while trying to open " + "subobj id %llu\n", + error, (u_longlong_t)subobj); + continue; + } + bpobj_count_refd(&subbpo); + bpobj_close(&subbpo); + } + } +} + +static void dump_deadlist(dsl_deadlist_t *dl) { dsl_deadlist_entry_t *dle; @@ -1781,7 +1812,24 @@ dump_deadlist(dsl_deadlist_t *dl) char bytes[32]; char comp[32]; char uncomp[32]; + uint64_t empty_bpobj = + dmu_objset_spa(dl->dl_os)->spa_dsl_pool->dp_empty_bpobj; + /* force the tree to be loaded */ + dsl_deadlist_space_range(dl, 0, UINT64_MAX, &unused, &unused, &unused); + + if (dl->dl_oldfmt) { + if (dl->dl_bpobj.bpo_object != empty_bpobj) + bpobj_count_refd(&dl->dl_bpobj); + } else { + mos_obj_refd(dl->dl_object); + for (dle = avl_first(&dl->dl_tree); dle; + dle = AVL_NEXT(&dl->dl_tree, dle)) { + if (dle->dle_bpobj.bpo_object != empty_bpobj) + bpobj_count_refd(&dle->dle_bpobj); + } + } + /* make sure nicenum has enough space */ CTASSERT(sizeof (bytes) >= NN_NUMBUF_SZ); CTASSERT(sizeof (comp) >= NN_NUMBUF_SZ); @@ -1806,9 +1854,6 @@ dump_deadlist(dsl_deadlist_t *dl) (void) printf("\n"); - /* force the tree to be loaded */ - dsl_deadlist_space_range(dl, 0, UINT64_MAX, &unused, &unused, &unused); - for (dle = avl_first(&dl->dl_tree); dle; dle = AVL_NEXT(&dl->dl_tree, dle)) { if (dump_opt['d'] >= 5) { @@ -2219,6 +2264,30 @@ dump_object(objset_t *os, uint64_t object, int verbosi dmu_buf_rele(db, FTAG); } +static void +count_dir_mos_objects(dsl_dir_t *dd) +{ + mos_obj_refd(dd->dd_object); + mos_obj_refd(dsl_dir_phys(dd)->dd_child_dir_zapobj); + mos_obj_refd(dsl_dir_phys(dd)->dd_deleg_zapobj); + mos_obj_refd(dsl_dir_phys(dd)->dd_props_zapobj); + mos_obj_refd(dsl_dir_phys(dd)->dd_clones); +} + +static void +count_ds_mos_objects(dsl_dataset_t *ds) +{ + mos_obj_refd(ds->ds_object); + mos_obj_refd(dsl_dataset_phys(ds)->ds_next_clones_obj); + mos_obj_refd(dsl_dataset_phys(ds)->ds_props_obj); + mos_obj_refd(dsl_dataset_phys(ds)->ds_userrefs_obj); + mos_obj_refd(dsl_dataset_phys(ds)->ds_snapnames_zapobj); + + if (!dsl_dataset_is_snapshot(ds)) { + count_dir_mos_objects(ds->ds_dir); + } +} + static const char *objset_types[DMU_OST_NUMTYPES] = { "NONE", "META", "ZPL", "ZVOL", "OTHER", "ANY" }; @@ -2271,10 +2340,11 @@ dump_dir(objset_t *os) dmu_objset_name(os, osname); (void) printf("Dataset %s [%s], ID %llu, cr_txg %llu, " - "%s, %llu objects%s\n", + "%s, %llu objects%s%s\n", osname, type, (u_longlong_t)dmu_objset_id(os), (u_longlong_t)dds.dds_creation_txg, - numbuf, (u_longlong_t)usedobjs, blkbuf); + numbuf, (u_longlong_t)usedobjs, blkbuf, + (dds.dds_inconsistent) ? " (inconsistent)" : ""); if (zopt_objects != 0) { for (i = 0; i < zopt_objects; i++) @@ -2295,6 +2365,7 @@ dump_dir(objset_t *os) (void) printf("ds_remap_deadlist:\n"); dump_deadlist(&ds->ds_remap_deadlist); } + count_ds_mos_objects(ds); } if (verbosity < 2) @@ -4459,7 +4530,162 @@ verify_checkpoint(spa_t *spa) return (error); } +/* ARGSUSED */ static void +mos_leaks_cb(void *arg, uint64_t start, uint64_t size) +{ + for (uint64_t i = start; i < size; i++) { + (void) printf("MOS object %llu referenced but not allocated\n", + (u_longlong_t)i); + } +} + +static range_tree_t *mos_refd_objs; + +static void +mos_obj_refd(uint64_t obj) +{ + if (obj != 0 && mos_refd_objs != NULL) + range_tree_add(mos_refd_objs, obj, 1); +} + +static void +mos_leak_vdev(vdev_t *vd) +{ + mos_obj_refd(vd->vdev_dtl_object); + mos_obj_refd(vd->vdev_ms_array); + mos_obj_refd(vd->vdev_top_zap); + mos_obj_refd(vd->vdev_indirect_config.vic_births_object); + mos_obj_refd(vd->vdev_indirect_config.vic_mapping_object); + mos_obj_refd(vd->vdev_leaf_zap); + if (vd->vdev_checkpoint_sm != NULL) + mos_obj_refd(vd->vdev_checkpoint_sm->sm_object); + if (vd->vdev_indirect_mapping != NULL) { + mos_obj_refd(vd->vdev_indirect_mapping-> + vim_phys->vimp_counts_object); + } + if (vd->vdev_obsolete_sm != NULL) + mos_obj_refd(vd->vdev_obsolete_sm->sm_object); + + for (uint64_t m = 0; m < vd->vdev_ms_count; m++) { + metaslab_t *ms = vd->vdev_ms[m]; + mos_obj_refd(space_map_object(ms->ms_sm)); + } + + for (uint64_t c = 0; c < vd->vdev_children; c++) { + mos_leak_vdev(vd->vdev_child[c]); + } +} + +static int +dump_mos_leaks(spa_t *spa) +{ + int rv = 0; + objset_t *mos = spa->spa_meta_objset; + dsl_pool_t *dp = spa->spa_dsl_pool; + + /* Visit and mark all referenced objects in the MOS */ + + mos_obj_refd(DMU_POOL_DIRECTORY_OBJECT); + mos_obj_refd(spa->spa_pool_props_object); + mos_obj_refd(spa->spa_config_object); + mos_obj_refd(spa->spa_ddt_stat_object); + mos_obj_refd(spa->spa_feat_desc_obj); + mos_obj_refd(spa->spa_feat_enabled_txg_obj); + mos_obj_refd(spa->spa_feat_for_read_obj); + mos_obj_refd(spa->spa_feat_for_write_obj); + mos_obj_refd(spa->spa_history); + mos_obj_refd(spa->spa_errlog_last); + mos_obj_refd(spa->spa_errlog_scrub); + mos_obj_refd(spa->spa_all_vdev_zaps); + mos_obj_refd(spa->spa_dsl_pool->dp_bptree_obj); + mos_obj_refd(spa->spa_dsl_pool->dp_tmp_userrefs_obj); + mos_obj_refd(spa->spa_dsl_pool->dp_scan->scn_phys.scn_queue_obj); + bpobj_count_refd(&spa->spa_deferred_bpobj); + mos_obj_refd(dp->dp_empty_bpobj); + bpobj_count_refd(&dp->dp_obsolete_bpobj); + bpobj_count_refd(&dp->dp_free_bpobj); + mos_obj_refd(spa->spa_l2cache.sav_object); + mos_obj_refd(spa->spa_spares.sav_object); + + mos_obj_refd(spa->spa_condensing_indirect_phys. + scip_next_mapping_object); + mos_obj_refd(spa->spa_condensing_indirect_phys. + scip_prev_obsolete_sm_object); + if (spa->spa_condensing_indirect_phys.scip_next_mapping_object != 0) { + vdev_indirect_mapping_t *vim = + vdev_indirect_mapping_open(mos, + spa->spa_condensing_indirect_phys.scip_next_mapping_object); + mos_obj_refd(vim->vim_phys->vimp_counts_object); + vdev_indirect_mapping_close(vim); + } + + if (dp->dp_origin_snap != NULL) { + dsl_dataset_t *ds; + + dsl_pool_config_enter(dp, FTAG); + VERIFY0(dsl_dataset_hold_obj(dp, + dsl_dataset_phys(dp->dp_origin_snap)->ds_next_snap_obj, + FTAG, &ds)); + count_ds_mos_objects(ds); + dump_deadlist(&ds->ds_deadlist); + dsl_dataset_rele(ds, FTAG); + dsl_pool_config_exit(dp, FTAG); + + count_ds_mos_objects(dp->dp_origin_snap); + dump_deadlist(&dp->dp_origin_snap->ds_deadlist); + } + count_dir_mos_objects(dp->dp_mos_dir); + if (dp->dp_free_dir != NULL) + count_dir_mos_objects(dp->dp_free_dir); + if (dp->dp_leak_dir != NULL) + count_dir_mos_objects(dp->dp_leak_dir); + + mos_leak_vdev(spa->spa_root_vdev); + + for (uint64_t class = 0; class < DDT_CLASSES; class++) { + for (uint64_t type = 0; type < DDT_TYPES; type++) { + for (uint64_t cksum = 0; + cksum < ZIO_CHECKSUM_FUNCTIONS; cksum++) { + ddt_t *ddt = spa->spa_ddt[cksum]; + mos_obj_refd(ddt->ddt_object[type][class]); + } + } + } + + /* + * Visit all allocated objects and make sure they are referenced. + */ + uint64_t object = 0; + while (dmu_object_next(mos, &object, B_FALSE, 0) == 0) { + if (range_tree_contains(mos_refd_objs, object, 1)) { + range_tree_remove(mos_refd_objs, object, 1); + } else { + dmu_object_info_t doi; + const char *name; + dmu_object_info(mos, object, &doi); + if (doi.doi_type & DMU_OT_NEWTYPE) { + dmu_object_byteswap_t bswap = + DMU_OT_BYTESWAP(doi.doi_type); + name = dmu_ot_byteswap[bswap].ob_name; + } else { + name = dmu_ot[doi.doi_type].ot_name; + } + + (void) printf("MOS object %llu (%s) leaked\n", + (u_longlong_t)object, name); + rv = 2; + } + } + (void) range_tree_walk(mos_refd_objs, mos_leaks_cb, NULL); + if (!range_tree_is_empty(mos_refd_objs)) + rv = 2; + range_tree_vacate(mos_refd_objs, NULL, NULL); + range_tree_destroy(mos_refd_objs); + return (rv); +} + +static void dump_zpool(spa_t *spa) { dsl_pool_t *dp = spa_get_dsl(spa); @@ -4490,7 +4716,9 @@ dump_zpool(spa_t *spa) dump_metaslab_groups(spa); if (dump_opt['d'] || dump_opt['i']) { + mos_refd_objs = range_tree_create(NULL, NULL); dump_dir(dp->dp_meta_objset); + if (dump_opt['d'] >= 3) { dsl_pool_t *dp = spa->spa_dsl_pool; dump_full_bpobj(&spa->spa_deferred_bpobj, @@ -4517,6 +4745,9 @@ dump_zpool(spa_t *spa) (void) dmu_objset_find(spa_name(spa), dump_one_dir, NULL, DS_FIND_SNAPSHOTS | DS_FIND_CHILDREN); + if (rc == 0 && !dump_opt['L']) + rc = dump_mos_leaks(spa); + for (spa_feature_t f = 0; f < SPA_FEATURES; f++) { uint64_t refcount; @@ -4546,6 +4777,7 @@ dump_zpool(spa_t *spa) rc = verify_device_removal_feature_counts(spa); } } + if (rc == 0 && (dump_opt['b'] || dump_opt['c'])) rc = dump_block_stats(spa); Modified: projects/fuse2/cddl/contrib/opensolaris/cmd/zfs/zfs-program.8 ============================================================================== --- projects/fuse2/cddl/contrib/opensolaris/cmd/zfs/zfs-program.8 Thu Jun 6 16:09:19 2019 (r348743) +++ projects/fuse2/cddl/contrib/opensolaris/cmd/zfs/zfs-program.8 Thu Jun 6 16:20:50 2019 (r348744) @@ -9,6 +9,7 @@ .\" .\" .\" Copyright (c) 2016, 2017 by Delphix. All rights reserved. +.\" Copyright (c) 2018 Datto Inc. .\" .Dd October 02, 2017 .Dt ZFS-PROGRAM 1M @@ -18,7 +19,7 @@ .Nd executes ZFS channel programs .Sh SYNOPSIS .Cm zfs program -.Op Fl n +.Op Fl jn .Op Fl t Ar instruction-limit .Op Fl m Ar memory-limit .Ar pool @@ -46,6 +47,11 @@ will be run on and any attempts to access or modify other pools will cause an error. .Sh OPTIONS .Bl -tag -width "-t" +.It Fl j +Display channel program output in JSON format. +When this flag is specified and standard output is empty - +channel program encountered an error. +The details of such an error will be printed to standard error in plain text. .It Fl n Executes a read-only channel program, which runs faster. The program cannot change on-disk state by calling functions from the Modified: projects/fuse2/cddl/contrib/opensolaris/cmd/zfs/zfs.8 ============================================================================== --- projects/fuse2/cddl/contrib/opensolaris/cmd/zfs/zfs.8 Thu Jun 6 16:09:19 2019 (r348743) +++ projects/fuse2/cddl/contrib/opensolaris/cmd/zfs/zfs.8 Thu Jun 6 16:20:50 2019 (r348744) @@ -29,6 +29,7 @@ .\" Copyright (c) 2014, Xin LI .\" Copyright (c) 2014-2015, The FreeBSD Foundation, All Rights Reserved. .\" Copyright 2018 Joyent, Inc. +.\" Copyright (c) 2018 Datto Inc. .\" .\" $FreeBSD$ .\" @@ -291,7 +292,7 @@ .Op Ar snapshot Ns | Ns Ar filesystem .Nm .Cm program -.Op Fl n +.Op Fl jn .Op Fl t Ar timeout .Op Fl m Ar memory_limit .Ar pool script @@ -3364,7 +3365,7 @@ Display the path's inode change time as the first colu .It Xo .Nm .Cm program -.Op Fl n +.Op Fl jn .Op Fl t Ar timeout .Op Fl m Ar memory_limit .Ar pool script @@ -3387,6 +3388,11 @@ For full documentation of the ZFS channel program inte page for .Xr zfs-program 8 . .Bl -tag -width indent +.It Fl j +Display channel program output in JSON format. +When this flag is specified and standard output is empty - +channel program encountered an error. +The details of such an error will be printed to standard error in plain text. .It Fl n Executes a read-only channel program, which runs faster. The program cannot change on-disk state by calling functions from Modified: projects/fuse2/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c ============================================================================== --- projects/fuse2/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Thu Jun 6 16:09:19 2019 (r348743) +++ projects/fuse2/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c Thu Jun 6 16:20:50 2019 (r348744) @@ -30,6 +30,7 @@ * Copyright (c) 2014 Integros [integros.com] * Copyright 2016 Igor Kozhukhov . * Copyright 2016 Nexenta Systems, Inc. + * Copyright (c) 2018 Datto Inc. */ #include @@ -351,7 +352,7 @@ get_usage(zfs_help_t idx) case HELP_BOOKMARK: return (gettext("\tbookmark \n")); case HELP_CHANNEL_PROGRAM: - return (gettext("\tprogram [-n] [-t ] " + return (gettext("\tprogram [-jn] [-t ] " "[-m ] " "[lua args...]\n")); } @@ -2361,6 +2362,7 @@ us_compare(const void *larg, const void *rarg, void *u case ZFS_PROP_NAME: propname = "name"; if (numname) { +compare_nums: (void) nvlist_lookup_uint64(lnvl, propname, &lv64); (void) nvlist_lookup_uint64(rnvl, propname, @@ -2368,10 +2370,12 @@ us_compare(const void *larg, const void *rarg, void *u if (rv64 != lv64) rc = (rv64 < lv64) ? 1 : -1; } else { - (void) nvlist_lookup_string(lnvl, propname, - &lvstr); - (void) nvlist_lookup_string(rnvl, propname, - &rvstr); + if ((nvlist_lookup_string(lnvl, propname, + &lvstr) == ENOENT) || + (nvlist_lookup_string(rnvl, propname, + &rvstr) == ENOENT)) { + goto compare_nums; + } rc = strcmp(lvstr, rvstr); } break; @@ -7235,12 +7239,12 @@ zfs_do_channel_program(int argc, char **argv) nvlist_t *outnvl; uint64_t instrlimit = ZCP_DEFAULT_INSTRLIMIT; uint64_t memlimit = ZCP_DEFAULT_MEMLIMIT; - boolean_t sync_flag = B_TRUE; + boolean_t sync_flag = B_TRUE, json_output = B_FALSE; zpool_handle_t *zhp; /* check options */ while (-1 != - (c = getopt(argc, argv, "nt:(instr-limit)m:(memory-limit)"))) { + (c = getopt(argc, argv, "jnt:(instr-limit)m:(memory-limit)"))) { switch (c) { case 't': case 'm': { @@ -7282,6 +7286,10 @@ zfs_do_channel_program(int argc, char **argv) sync_flag = B_FALSE; break; } + case 'j': { + json_output = B_TRUE; + break; + } case '?': (void) fprintf(stderr, gettext("invalid option '%c'\n"), optopt); @@ -7404,11 +7412,14 @@ zfs_do_channel_program(int argc, char **argv) gettext("Channel program execution failed:\n%s\n"), errstring); } else { - (void) printf("Channel program fully executed "); - if (nvlist_empty(outnvl)) { - (void) printf("with no return value.\n"); + if (json_output) { + (void) nvlist_print_json(stdout, outnvl); + } else if (nvlist_empty(outnvl)) { + (void) fprintf(stdout, gettext("Channel program fully " + "executed and did not produce output.\n")); } else { - (void) printf("with return value:\n"); + (void) fprintf(stdout, gettext("Channel program fully " + "executed and produced output:\n")); dump_nvlist(outnvl, 4); } } Modified: projects/fuse2/cddl/contrib/opensolaris/cmd/zpool/zpool.8 ============================================================================== --- projects/fuse2/cddl/contrib/opensolaris/cmd/zpool/zpool.8 Thu Jun 6 16:09:19 2019 (r348743) +++ projects/fuse2/cddl/contrib/opensolaris/cmd/zpool/zpool.8 Thu Jun 6 16:20:50 2019 (r348744) @@ -604,10 +604,6 @@ Amount of storage space within the pool that has been .It Sy capacity Percentage of pool space used. This property can also be referred to by its shortened column name, "cap". -.It Sy comment -A text string consisting of printable ASCII characters that will be stored -such that it is available even if the pool becomes faulted. An administrator -can provide additional information about a pool using this property. .It Sy dedupratio The deduplication ratio specified for a pool, expressed as a multiplier. For example, a Modified: projects/fuse2/cddl/contrib/opensolaris/cmd/ztest/ztest.c ============================================================================== --- projects/fuse2/cddl/contrib/opensolaris/cmd/ztest/ztest.c Thu Jun 6 16:09:19 2019 (r348743) +++ projects/fuse2/cddl/contrib/opensolaris/cmd/ztest/ztest.c Thu Jun 6 16:20:50 2019 (r348744) @@ -338,7 +338,6 @@ ztest_func_t ztest_spa_create_destroy; ztest_func_t ztest_fault_inject; ztest_func_t ztest_ddt_repair; ztest_func_t ztest_dmu_snapshot_hold; -ztest_func_t ztest_spa_rename; ztest_func_t ztest_scrub; ztest_func_t ztest_dsl_dataset_promote_busy; ztest_func_t ztest_vdev_attach_detach; @@ -384,7 +383,6 @@ ztest_info_t ztest_info[] = { { ztest_ddt_repair, 1, &zopt_sometimes }, { ztest_dmu_snapshot_hold, 1, &zopt_sometimes }, { ztest_reguid, 1, &zopt_rarely }, - { ztest_spa_rename, 1, &zopt_rarely }, { ztest_scrub, 1, &zopt_often }, { ztest_spa_upgrade, 1, &zopt_rarely }, { ztest_dsl_dataset_promote_busy, 1, &zopt_rarely }, @@ -1935,6 +1933,7 @@ zil_replay_func_t *ztest_replay_vector[TX_MAX_TYPE] = * ZIL get_data callbacks */ +/* ARGSUSED */ static void ztest_get_done(zgd_t *zgd, int error) { @@ -1947,9 +1946,6 @@ ztest_get_done(zgd_t *zgd, int error) ztest_range_unlock(zgd->zgd_rl); ztest_object_unlock(zd, object); - if (error == 0 && zgd->zgd_bp) - zil_lwb_add_block(zgd->zgd_lwb, zgd->zgd_bp); - umem_free(zgd, sizeof (*zgd)); } @@ -5550,59 +5546,6 @@ ztest_reguid(ztest_ds_t *zd, uint64_t id) VERIFY3U(load, ==, spa_load_guid(spa)); } -/* - * Rename the pool to a different name and then rename it back. - */ -/* ARGSUSED */ -void -ztest_spa_rename(ztest_ds_t *zd, uint64_t id) -{ - char *oldname, *newname; - spa_t *spa; - - rw_enter(&ztest_name_lock, RW_WRITER); - - oldname = ztest_opts.zo_pool; - newname = umem_alloc(strlen(oldname) + 5, UMEM_NOFAIL); - (void) strcpy(newname, oldname); - (void) strcat(newname, "_tmp"); - - /* - * Do the rename - */ - VERIFY3U(0, ==, spa_rename(oldname, newname)); - - /* - * Try to open it under the old name, which shouldn't exist - */ - VERIFY3U(ENOENT, ==, spa_open(oldname, &spa, FTAG)); - - /* - * Open it under the new name and make sure it's still the same spa_t. - */ - VERIFY3U(0, ==, spa_open(newname, &spa, FTAG)); - - ASSERT(spa == ztest_spa); - spa_close(spa, FTAG); - - /* - * Rename it back to the original - */ - VERIFY3U(0, ==, spa_rename(newname, oldname)); - - /* - * Make sure it can still be opened - */ - VERIFY3U(0, ==, spa_open(oldname, &spa, FTAG)); - - ASSERT(spa == ztest_spa); - spa_close(spa, FTAG); - - umem_free(newname, strlen(newname) + 1); - - rw_exit(&ztest_name_lock); -} - static vdev_t * ztest_random_concrete_vdev_leaf(vdev_t *vd) { @@ -6661,7 +6604,6 @@ main(int argc, char **argv) ztest_shared_callstate_t *zc; char timebuf[100]; char numbuf[NN_NUMBUF_SZ]; - spa_t *spa; char *cmd; boolean_t hasalt; char *fd_data_str = getenv("ZTEST_FD_DATA"); @@ -6835,24 +6777,6 @@ main(int argc, char **argv) } (void) printf("\n"); } - - /* - * It's possible that we killed a child during a rename test, - * in which case we'll have a 'ztest_tmp' pool lying around - * instead of 'ztest'. Do a blind rename in case this happened. - */ - kernel_init(FREAD); - if (spa_open(ztest_opts.zo_pool, &spa, FTAG) == 0) { - spa_close(spa, FTAG); - } else { - char tmpname[ZFS_MAX_DATASET_NAME_LEN]; - kernel_fini(); - kernel_init(FREAD | FWRITE); - (void) snprintf(tmpname, sizeof (tmpname), "%s_tmp", - ztest_opts.zo_pool); - (void) spa_rename(tmpname, ztest_opts.zo_pool); - } - kernel_fini(); ztest_run_zdb(ztest_opts.zo_pool); } Modified: projects/fuse2/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c ============================================================================== --- projects/fuse2/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c Thu Jun 6 16:09:19 2019 (r348743) +++ projects/fuse2/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c Thu Jun 6 16:20:50 2019 (r348744) @@ -30,7 +30,7 @@ * Copyright (c) 2014 Integros [integros.com] * Copyright 2017 Nexenta Systems, Inc. * Copyright 2016 Igor Kozhukhov - * Copyright 2017 RackTop Systems. + * Copyright 2017-2018 RackTop Systems. */ #include @@ -1842,13 +1842,18 @@ zfs_prop_set_list(zfs_handle_t *zhp, nvlist_t *props) ret = zfs_ioctl(hdl, ZFS_IOC_SET_PROP, &zc); if (ret != 0) { + if (zc.zc_nvlist_dst_filled == B_FALSE) { + (void) zfs_standard_error(hdl, errno, errbuf); + goto error; + } + /* Get the list of unset properties back and report them. */ nvlist_t *errorprops = NULL; if (zcmd_read_dst_nvlist(hdl, &zc, &errorprops) != 0) goto error; - for (nvpair_t *elem = nvlist_next_nvpair(nvl, NULL); + for (nvpair_t *elem = nvlist_next_nvpair(errorprops, NULL); elem != NULL; - elem = nvlist_next_nvpair(nvl, elem)) { + elem = nvlist_next_nvpair(errorprops, elem)) { zfs_prop_t prop = zfs_name_to_prop(nvpair_name(elem)); zfs_setprop_error(hdl, prop, errno, errbuf); } Modified: projects/fuse2/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_diff.c ============================================================================== --- projects/fuse2/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_diff.c Thu Jun 6 16:09:19 2019 (r348743) +++ projects/fuse2/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_diff.c Thu Jun 6 16:20:50 2019 (r348744) @@ -22,7 +22,7 @@ /* * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. * Copyright 2015 Nexenta Systems, Inc. All rights reserved. - * Copyright (c) 2015, 2017 by Delphix. All rights reserved. + * Copyright (c) 2015, 2018 by Delphix. All rights reserved. * Copyright 2016 Joyent, Inc. * Copyright 2016 Igor Kozhukhov */ @@ -47,7 +47,7 @@ #include "libzfs_impl.h" #define ZDIFF_SNAPDIR "/.zfs/snapshot/" -#define ZDIFF_SHARESDIR "/.zfs/shares/" +#define ZDIFF_SHARESDIR "/.zfs/shares/" #define ZDIFF_PREFIX "zfs-diff-%d" #define ZDIFF_ADDED '+' @@ -114,7 +114,7 @@ get_stats_for_obj(differ_info_t *di, const char *dsnam (void) snprintf(di->errbuf, sizeof (di->errbuf), dgettext(TEXT_DOMAIN, "Unable to determine path or stats for " - "object %lld in %s"), obj, dsname); + "object %jd in %s"), (uintmax_t)obj, dsname); return (-1); } } @@ -361,13 +361,13 @@ describe_free(FILE *fp, differ_info_t *di, uint64_t ob if (get_stats_for_obj(di, di->fromsnap, object, namebuf, maxlen, &sb) != 0) { - /* Let it slide, if in the delete queue on from side */ - if (di->zerr == ENOENT && sb.zs_links == 0) { - di->zerr = 0; - return (0); - } return (-1); } + /* Don't print if in the delete queue on from side */ + if (di->zerr == ESTALE) { + di->zerr = 0; + return (0); + } print_file(fp, di, ZDIFF_REMOVED, namebuf, &sb); return (0); @@ -406,8 +406,8 @@ write_free_diffs(FILE *fp, differ_info_t *di, dmu_diff } else { (void) snprintf(di->errbuf, sizeof (di->errbuf), dgettext(TEXT_DOMAIN, - "next allocated object (> %lld) find failure"), - zc.zc_obj); + "next allocated object (> %jd) find failure"), + (uintmax_t)zc.zc_obj); di->zerr = errno; break; } Modified: projects/fuse2/cddl/usr.sbin/dtrace/tests/Makefile ============================================================================== --- projects/fuse2/cddl/usr.sbin/dtrace/tests/Makefile Thu Jun 6 16:09:19 2019 (r348743) +++ projects/fuse2/cddl/usr.sbin/dtrace/tests/Makefile Thu Jun 6 16:20:50 2019 (r348744) @@ -4,6 +4,14 @@ TESTS_SUBDIRS+= common +.if ${MACHINE_CPUARCH} == "i386" +TESTS_SUBDIRS+= i386 +.endif + +.if ${MACHINE_CPUARCH} == "amd64" +TESTS_SUBDIRS+= amd64 +.endif + .PATH: ${SRCTOP}/tests KYUAFILE= yes Modified: projects/fuse2/cddl/usr.sbin/dtrace/tests/tools/genmakefiles.sh ============================================================================== --- projects/fuse2/cddl/usr.sbin/dtrace/tests/tools/genmakefiles.sh Thu Jun 6 16:09:19 2019 (r348743) +++ projects/fuse2/cddl/usr.sbin/dtrace/tests/tools/genmakefiles.sh Thu Jun 6 16:20:50 2019 (r348744) @@ -24,9 +24,10 @@ fmtflist() genmakefile() { - local basedir=$1 + local class=$1 + local group=$2 - local tdir=${CONTRIB_TESTDIR}/${basedir} + local tdir=${CONTRIB_TESTDIR}/${class}/${group} local tfiles=$(find $tdir -type f -a \ \( -name \*.d -o -name \*.ksh -o -name \*.out \) | sort | fmtflist) local tcfiles=$(find $tdir -type f -a -name \*.c | sort | fmtflist) @@ -34,7 +35,7 @@ genmakefile() # One-off variable definitions. local special - case "$basedir" in + case "$group" in proc) special=" LIBADD.tst.sigwait.exe+= rt @@ -80,7 +81,7 @@ $special .include "../../dtrace.test.mk" __EOF__ - mv -f $makefile ${ORIGINDIR}/../common/${basedir}/Makefile + mv -f $makefile ${ORIGINDIR}/../${class}/${group}/Makefile } set -e @@ -93,9 +94,10 @@ export LC_ALL=C readonly ORIGINDIR=$(realpath $(dirname $0)) readonly TOPDIR=$(realpath ${ORIGINDIR}/../../../../..) -readonly CONTRIB_TESTDIR=${TOPDIR}/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common +readonly CONTRIB_TESTDIR=${TOPDIR}/cddl/contrib/opensolaris/cmd/dtrace/test/tst -# Generate a Makefile for each test group under common/. -for dir in $(find ${CONTRIB_TESTDIR} -mindepth 1 -maxdepth 1 -type d); do - genmakefile $(basename $dir) +for class in common i386 amd64; do + for group in $(find ${CONTRIB_TESTDIR}/$class -mindepth 1 -maxdepth 1 -type d); do + genmakefile $class $(basename $group) + done done Modified: projects/fuse2/contrib/elftoolchain/elfcopy/ascii.c ============================================================================== --- projects/fuse2/contrib/elftoolchain/elfcopy/ascii.c Thu Jun 6 16:09:19 2019 (r348743) +++ projects/fuse2/contrib/elftoolchain/elfcopy/ascii.c Thu Jun 6 16:20:50 2019 (r348744) @@ -378,9 +378,6 @@ done: errx(EXIT_FAILURE, "gelf_update_ehdr() failed: %s", elf_errmsg(-1)); - /* Generate section name string table (.shstrtab). */ - set_shstrtab(ecp); - /* Update sh_name pointer for each section header entry. */ update_shdr(ecp, 0); @@ -604,9 +601,6 @@ done: if (gelf_update_ehdr(ecp->eout, &oeh) == 0) errx(EXIT_FAILURE, "gelf_update_ehdr() failed: %s", elf_errmsg(-1)); - - /* Generate section name string table (.shstrtab). */ - set_shstrtab(ecp); /* Update sh_name pointer for each section header entry. */ update_shdr(ecp, 0); Modified: projects/fuse2/contrib/elftoolchain/elfcopy/binary.c ============================================================================== --- projects/fuse2/contrib/elftoolchain/elfcopy/binary.c Thu Jun 6 16:09:19 2019 (r348743) +++ projects/fuse2/contrib/elftoolchain/elfcopy/binary.c Thu Jun 6 16:20:50 2019 (r348744) @@ -250,11 +250,8 @@ create_elf_from_binary(struct elfcopy *ecp, int ifd, c *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Thu Jun 6 16:29:10 2019 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6286E15B8D70 for ; Thu, 6 Jun 2019 16:29:10 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 0B9E774906; Thu, 6 Jun 2019 16:29:10 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id DD4571F015; Thu, 6 Jun 2019 16:29:09 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x56GT9GR077021; Thu, 6 Jun 2019 16:29:09 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x56GT826077017; Thu, 6 Jun 2019 16:29:08 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201906061629.x56GT826077017@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers Date: Thu, 6 Jun 2019 16:29:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r348750 - projects/fuse2/tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/tests/sys/fs/fusefs X-SVN-Commit-Revision: 348750 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 0B9E774906 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.97)[-0.973,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US] X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 06 Jun 2019 16:29:10 -0000 Author: asomers Date: Thu Jun 6 16:29:08 2019 New Revision: 348750 URL: https://svnweb.freebsd.org/changeset/base/348750 Log: fusefs: add some explicit tests for FUSE_FORGET Sponsored by: The FreeBSD Foundation Added: projects/fuse2/tests/sys/fs/fusefs/forget.cc (contents, props changed) Modified: projects/fuse2/tests/sys/fs/fusefs/Makefile projects/fuse2/tests/sys/fs/fusefs/destroy.cc projects/fuse2/tests/sys/fs/fusefs/utils.cc projects/fuse2/tests/sys/fs/fusefs/utils.hh Modified: projects/fuse2/tests/sys/fs/fusefs/Makefile ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/Makefile Thu Jun 6 16:28:34 2019 (r348749) +++ projects/fuse2/tests/sys/fs/fusefs/Makefile Thu Jun 6 16:29:08 2019 (r348750) @@ -16,6 +16,7 @@ GTESTS+= destroy GTESTS+= dev_fuse_poll GTESTS+= fifo GTESTS+= flush +GTESTS+= forget GTESTS+= fsync GTESTS+= fsyncdir GTESTS+= getattr Modified: projects/fuse2/tests/sys/fs/fusefs/destroy.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/destroy.cc Thu Jun 6 16:28:34 2019 (r348749) +++ projects/fuse2/tests/sys/fs/fusefs/destroy.cc Thu Jun 6 16:29:08 2019 (r348750) @@ -37,9 +37,7 @@ class Destroy: public FuseTest {}; /* * On unmount the kernel should send a FUSE_DESTROY operation. It should also - * send FUSE_FORGET operations for all inodes with lookup_count > 0. It's hard - * to trigger FUSE_FORGET in any way except by unmounting, so this is the only - * testing that FUSE_FORGET gets. + * send FUSE_FORGET operations for all inodes with lookup_count > 0. */ TEST_F(Destroy, ok) { Added: projects/fuse2/tests/sys/fs/fusefs/forget.cc ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/fuse2/tests/sys/fs/fusefs/forget.cc Thu Jun 6 16:29:08 2019 (r348750) @@ -0,0 +1,153 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2019 The FreeBSD Foundation + * + * This software was developed by BFF Storage Systems, LLC under sponsorship + * from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +extern "C" { +#include +#include + +#include +#include +#include +} + +#include "mockfs.hh" +#include "utils.hh" + +using namespace testing; + +const char reclaim_mib[] = "debug.try_reclaim_vnode"; + +class Forget: public FuseTest { +public: +void SetUp() { + if (geteuid() != 0) + GTEST_SKIP() << "Only root may use " << reclaim_mib; + + if (-1 == sysctlbyname(reclaim_mib, NULL, 0, NULL, 0) && + errno == ENOENT) + GTEST_SKIP() << reclaim_mib << " is not available"; + + FuseTest::SetUp(); +} + +}; + +/* + * When a fusefs vnode is reclaimed, it should send a FUSE_FORGET operation. + */ +TEST_F(Forget, ok) +{ + const char FULLPATH[] = "mountpoint/some_file.txt"; + const char RELPATH[] = "some_file.txt"; + uint64_t ino = 42; + mode_t mode = S_IFREG | 0755; + sem_t sem; + int err; + + ASSERT_EQ(0, sem_init(&sem, 0, 0)) << strerror(errno); + + EXPECT_LOOKUP(FUSE_ROOT_ID, RELPATH) + .Times(3) + .WillRepeatedly(Invoke( + ReturnImmediate([=](auto in __unused, auto& out) { + SET_OUT_HEADER_LEN(out, entry); + out.body.entry.attr.mode = mode; + out.body.entry.nodeid = ino; + out.body.entry.attr.nlink = 1; + out.body.entry.attr_valid = UINT64_MAX; + }))); + expect_forget(ino, 3, &sem); + + /* + * access(2) the file to force a lookup. Access it twice to double its + * lookup count. + */ + ASSERT_EQ(0, access(FULLPATH, F_OK)) << strerror(errno); + ASSERT_EQ(0, access(FULLPATH, F_OK)) << strerror(errno); + + err = sysctlbyname(reclaim_mib, NULL, 0, FULLPATH, sizeof(FULLPATH)); + ASSERT_EQ(0, err) << strerror(errno); + + sem_wait(&sem); +} + +/* + * When a directory is reclaimed, the names of its entries vanish from the + * namecache + */ +TEST_F(Forget, invalidate_names) +{ + const char FULLFPATH[] = "mountpoint/some_dir/some_file.txt"; + const char FULLDPATH[] = "mountpoint/some_dir"; + const char DNAME[] = "some_dir"; + const char FNAME[] = "some_file.txt"; + uint64_t dir_ino = 42; + uint64_t file_ino = 43; + int err; + + EXPECT_LOOKUP(FUSE_ROOT_ID, DNAME) + .WillRepeatedly(Invoke( + ReturnImmediate([=](auto in __unused, auto& out) { + SET_OUT_HEADER_LEN(out, entry); + out.body.entry.attr.mode = S_IFDIR | 0755; + out.body.entry.nodeid = dir_ino; + out.body.entry.attr.nlink = 2; + out.body.entry.attr_valid = UINT64_MAX; + out.body.entry.entry_valid = UINT64_MAX; + }))); + + /* + * Even though we don't reclaim FNAME and its entry is cacheable, we + * should get two lookups because the reclaim of DNAME will invalidate + * the cached FNAME entry. + */ + EXPECT_LOOKUP(dir_ino, FNAME) + .Times(2) + .WillRepeatedly(Invoke( + ReturnImmediate([=](auto in __unused, auto& out) { + SET_OUT_HEADER_LEN(out, entry); + out.body.entry.attr.mode = S_IFREG | 0644; + out.body.entry.nodeid = file_ino; + out.body.entry.attr.nlink = 1; + out.body.entry.attr_valid = UINT64_MAX; + out.body.entry.entry_valid = UINT64_MAX; + }))); + expect_forget(dir_ino, 2); + + /* Access the file to cache its name */ + ASSERT_EQ(0, access(FULLFPATH, F_OK)) << strerror(errno); + + /* Reclaim the directory, invalidating its children from namecache */ + err = sysctlbyname(reclaim_mib, NULL, 0, FULLDPATH, sizeof(FULLDPATH)); + ASSERT_EQ(0, err) << strerror(errno); + + /* Access the file again, causing another lookup */ + ASSERT_EQ(0, access(FULLFPATH, F_OK)) << strerror(errno); +} Modified: projects/fuse2/tests/sys/fs/fusefs/utils.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/utils.cc Thu Jun 6 16:28:34 2019 (r348749) +++ projects/fuse2/tests/sys/fs/fusefs/utils.cc Thu Jun 6 16:29:08 2019 (r348750) @@ -162,7 +162,7 @@ FuseTest::expect_flush(uint64_t ino, int times, Proces } void -FuseTest::expect_forget(uint64_t ino, uint64_t nlookup) +FuseTest::expect_forget(uint64_t ino, uint64_t nlookup, sem_t *sem) { EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { @@ -171,7 +171,9 @@ FuseTest::expect_forget(uint64_t ino, uint64_t nlookup in.body.forget.nlookup == nlookup); }, Eq(true)), _) - ).WillOnce(Invoke([](auto in __unused, auto &out __unused) { + ).WillOnce(Invoke([=](auto in __unused, auto &out __unused) { + if (sem != NULL) + sem_post(sem); /* FUSE_FORGET has no response! */ })); } Modified: projects/fuse2/tests/sys/fs/fusefs/utils.hh ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/utils.hh Thu Jun 6 16:28:34 2019 (r348749) +++ projects/fuse2/tests/sys/fs/fusefs/utils.hh Thu Jun 6 16:29:08 2019 (r348750) @@ -28,6 +28,9 @@ * SUCH DAMAGE. */ +struct _sem; +typedef struct _sem sem_t; + /* Nanoseconds to sleep, for tests that must */ #define NAP_NS (100'000'000) @@ -92,9 +95,10 @@ class FuseTest : public ::testing::Test { /* * Create an expectation that FUSE_FORGET will be called for the given - * inode. There will be no response + * inode. There will be no response. If sem is provided, it will be + * posted after the operation is received by the daemon. */ - void expect_forget(uint64_t ino, uint64_t nlookup); + void expect_forget(uint64_t ino, uint64_t nlookup, sem_t *sem = NULL); /* * Create an expectation that FUSE_GETATTR will be called for the given From owner-svn-src-projects@freebsd.org Thu Jun 6 20:35:42 2019 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5BC5A15BF9A9 for ; Thu, 6 Jun 2019 20:35:42 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id BE73C87116; Thu, 6 Jun 2019 20:35:41 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 7A30A21AFC; Thu, 6 Jun 2019 20:35:41 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x56KZfr5008997; Thu, 6 Jun 2019 20:35:41 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x56KZf3D008996; Thu, 6 Jun 2019 20:35:41 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201906062035.x56KZf3D008996@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers Date: Thu, 6 Jun 2019 20:35:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r348758 - projects/fuse2/sys/fs/fuse X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/sys/fs/fuse X-SVN-Commit-Revision: 348758 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: BE73C87116 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.996,0]; NEURAL_HAM_SHORT(-0.98)[-0.976,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 06 Jun 2019 20:35:42 -0000 Author: asomers Date: Thu Jun 6 20:35:41 2019 New Revision: 348758 URL: https://svnweb.freebsd.org/changeset/base/348758 Log: fusefs: remove some stuff that was copy/pasted from nfsclient fusefs's I/O methods were originally copy/pasted from nfsclient. This commit removes some irrelevant parts, like stuff involving B_NEEDCOMMIT. Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_io.c Modified: projects/fuse2/sys/fs/fuse/fuse_io.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_io.c Thu Jun 6 20:12:04 2019 (r348757) +++ projects/fuse2/sys/fs/fuse/fuse_io.c Thu Jun 6 20:35:41 2019 (r348758) @@ -567,7 +567,7 @@ fuse_write_biobackend(struct vnode *vp, struct uio *ui const int biosize = fuse_iosize(vp); - KASSERT(uio->uio_rw == UIO_WRITE, ("ncl_write mode")); + KASSERT(uio->uio_rw == UIO_WRITE, ("fuse_write_biobackend mode")); if (vp->v_type != VREG) return (EIO); if (uio->uio_offset < 0) @@ -585,14 +585,6 @@ fuse_write_biobackend(struct vnode *vp, struct uio *ui if (vn_rlimit_fsize(vp, uio, uio->uio_td)) return (EFBIG); - /* - * Find all of this file's B_NEEDCOMMIT buffers. If our writes - * would exceed the local maximum per-file write commit size when - * combined with those, we must decide whether to flush, - * go synchronous, or return err. We don't bother checking - * IO_UNIT -- we just make all writes atomic anyway, as there's - * no point optimizing for something that really won't ever happen. - */ do { bool direct_append, extending; @@ -741,14 +733,6 @@ again: } err = uiomove((char *)bp->b_data + on, n, uio); - /* - * Since this block is being modified, it must be written - * again and not just committed. Since write clustering does - * not work for the stage 1 data write, only the stage 2 - * commit rpc, we have to clear B_CLUSTEROK as well. - */ - bp->b_flags &= ~(B_NEEDCOMMIT | B_CLUSTEROK); - if (err) { bp->b_ioflags |= BIO_ERROR; bp->b_error = err; @@ -860,13 +844,6 @@ fuse_io_strategy(struct vnode *vp, struct buf *bp) } } else { /* - * If we only need to commit, try to commit - */ - if (bp->b_flags & B_NEEDCOMMIT) { - SDT_PROBE2(fusefs, , io, trace, 1, - "write: B_NEEDCOMMIT flags set"); - } - /* * Setup for actual write */ error = fuse_vnode_size(vp, &filesize, cred, curthread); @@ -892,9 +869,7 @@ fuse_io_strategy(struct vnode *vp, struct buf *bp) error = fuse_write_directbackend(vp, uiop, cred, fufh, filesize, 0, false); - if (error == EINTR || error == ETIMEDOUT - || (!error && (bp->b_flags & B_NEEDCOMMIT))) { - + if (error == EINTR || error == ETIMEDOUT) { bp->b_flags &= ~(B_INVAL | B_NOCACHE); if ((bp->b_flags & B_PAGING) == 0) { bdirty(bp);