git: 3522f57b6ada - vendor/openzfs/zfs-2.1-release - vendor branch created

Martin Matuska mm at FreeBSD.org
Tue Jun 8 14:29:48 UTC 2021


The branch vendor/openzfs/zfs-2.1-release has been created by mm:

URL: https://cgit.FreeBSD.org/src/log/?id=3522f57b6ada

f1ca4da6f797 Initial commit.  All spl source written up to this point wrapped in an initial reasonable autoconf style build system.  This does not yet build but the configure system does appear to work properly and integrate with the kernel.  Hopefully the next commit gets us back to a buildable version we can run the test suite against.
8f48c2c853b6 Whoops, I knew I'd miss something small in the build system.  Fix it
564f6d1509f7 User space build fixes: - Add list handling compatibility library - Drop uu_* list handling in favor of local list implementation - libtoolize - generic makefile cleanup
3d4ea0ced6c2 More build fixes, I have the kernel module almost building and its feeling a lot more sane, cleaner, and linuxy.  I may finish this tonight.
f1b59d2620ae Lots of build fixes.  This is turning out to be a very good idea since it forcefully codifing the ABI.  Since the shim layer is no longer linked at build time in to the test suite we can;'t cut any corners and get away with it.
15821fd660fd Move dir
ce58df922657 Move dir
d01858a1ca78 Move dir
032d12a90053 Move dir
1735fa73f4ac New approach
a0aadf5666d5 OK, everything builds now.  My initial intent was to place all of the directories at the top level but that proved troublesome.  The kernel buildsystem and autoconf were conflicting too much.  To resolve the issue I moved the kernel bits in to a modules directory which can then only use the kernel build system.  We just pass along the likely make targets to the kernel build system.
e4009e98c756 Quiet libtool
70eadc19583d OK, it builds... and the modules load...  now for some more cleanup to remove the remaining vestages of the time it lives with the ZFS code.
7c50328b40df More cleanup. - Removed all references to kzt and replaced with splat - Moved portions of include files which do not need to be   available to all source files in to local.h files in   proper source subdirs.
07d339d46733 Add top level make check target which runs the validation suite.  Careful with this right now one of the tests still causes a lockup on the node.  This happened before the move from the ZFS repo so its not a new issue.
596e65b4e8e9 OK, I think this is the last of major cleanup and restructuring. We've dropped all the linux- prefixes on the file in favor of spl- which makes more sense.  And we've cleaned up some of the includes so everybody should be including their own dependencies properly. All a module which wants to use the spl support needs to do in include spl.h and ensure it has access to Module.symvers.
09b414e880b0 Minor nit, SOLARIS should be SPL
f4b377415b4b Reorganize /include/ to add a /sys/, this way we don't need to muck with #includes in existing Solaris style source to get it to find the right stuff.
ea70970ff5a3 Almost dropped this!
d5f087adef0e Remaining lose ends
dbb484ec6002 Stub out some missing headers which are expected.  I'll fill in what the contents need to be as I encounter the warnings about missing prototypes, symbols, and such.
14c5326ccd05 More stub headers, moved generic to sysmacros, added some more macros for kernel compatibility
48f940b94399 Fix type
23f28c4f75b6 Remove spl.h, just include the headers you need. Add a few more stubs.
a713518f5d9e Checkpoint for the night, added a few more stub headers, fleshed out a few stub headers, added a FIXME file, added various compatibility macros
77b1fe8fa868 Add highbit func, Add sloopy atomic declaration which will need to be fixed (eventually) Fill out more of the Solaris VM hooks Adjust the create_thread function
ed61a7d05eb9 Add some missing rw_lock symbols
b0dd3380aae2 Minor atomic cleanup, this needs to be done right. Fixed a bug in the timer code Added missing macros
3b3ba48fe9a6 Add missing cred.h functions Resolve compiler warning with kmem_free (unused len) Add stub for byteorder.h Add zlib shim for compress2 and uncompress functions
0b3cf046cb5b Add the initial vestigates of vnode support
05ae387b5024 Add somre debugging support
12472b242dc3 Just filling in more of the env.
6adf99e7d6c1 Add missing headers
4098c921b68e Fix systemic naming mistake
51f443a0741b Add some typedefs to make it clearer when we passing a function, Add fm_panic define Add another bad atomic hack (need to do this right)
ee4766827a6e Remap gethrestime() with #define to new symbol and export that new symbol to avoid direct use of GPL only symbol.
b123971fc2f9 Two more GPL only symbols moved to helper functions in the spl module.
9490c1483593 Apply fix from bug239 for rwlock deadlock.
4b17158506d5 - Implemented vnode interfaces and 6 test cases to the test suite. - Re-implmented kobj support based on the vnode support. - Add TESTS option to check.sh, and removed delay after module load.
2f5d55aac5bf Add copyin/copyout mapping Fix some vnode types
36e6f8614643 - Add some more missing headers - Map the LE/BE_* byteorder macros to the linux versions - More minor vnodes fixes
73e540a0d1cc Drop unicode support, provided in ZFS tree libport Update uio support
8ddd0ee4154e Add two more missing headers
ea19fbed0538 Add missing headers
af828292e585 Add missing headers Rework vnodes to be based on the slab cache, just like on Solaris.
79b31f3601af Fix KMEM_DEBUG support (enable by default) Add vmem_alloc/vmem_free support (and test case) Add missing time functions
c19c06f3b05a Fix kmem memory accounting
2bdb28fbe07d Missing headers, more minor fixes
1ec74a114cc4 Minimal signal handling interface.
5d86345d3753 Initial pass at a file API getf/releasef hooks
e4f1d29f89b7 OK, some pretty substantial rework here.  I've merged the spl-file stuff which only inclused the getf()/releasef() in to the vnode area where it will only really be used.  These calls allow a user to grab an open file struct given only the known open fd for a particular user context.  ZFS makes use of these, but they're a bit tricky to test from within the kernel since you already need the file open and know the fd.  So we basically spook the system calls to setup the environment we need for the splat test case and verify given just the know fd we can get the file, create the needed vnode, and then use the vnode interface as usual to read and write from it.
4e62fd4104e9 OK, a first reasonable attempt at a solaris module/chdev shim layer. This should handle the absolute minimum I need for ZFS.  It will register the chdev with the right callbacks.  Then the generic registered linux callback will find the right registered solaris callback for the function and munge the args just right before passing it on.  Should work, but untested (just compiled), so I expect bugs.
336bb0c0c1e0 Two fixes to the module interface.  Could be worse!
8ac547ec4c96 Relocated to zfs repo
d429b03d85ee - Thinko fix to the SPL module interface - Enhanse the VERIFY() support to output the values which   failed to compare as expected before crashing.  This make   debugging much much much easier.
4a4295b26736 Remove minor lingering CDDL tait of copied headers.  Required headers rewritten to include minimally what we need.
9f4c835a0efd Correctly functioning 64-bit atomic shim layer.  It's not what I would call effecient but it does have the advantage of being correct which is all I need right now.  I added a regression test as well.
e487ee08fb0b Fixed that.
8d0f1ee907d4 Add some crude debugging support.  It leaves alot to be desired, but it should allow more easy kernel debugging for now.
4fd2f7eea565 Add vmem_zalloc support.
e966e04fd52e Ensure all file ops pointer are NULL or we may end up calling garbage pointers on open/close etc and get what look like random crashes.
6a585c61de0f Double large kmalloc warning size to 4 pages.  It was 2 pages, and ideally it should be dropped to one page but in the short term we should be able to easily live with 4 page allocations.
0998fdd6dba7 Apparently it's OK for done to be NULL, which was not clear in the Solaris man page.  Anyway, since apparently this usage is accectable I've updated the function to handle it.
0a6fd143fd6d - Remapped ldi_handle_t to struct block_device * which is much more useful - Added liunx block device headers to sunldi.h - Made __taskq_dispatch safe for interrupt context where it turns out we   need to be useing it. - Fixed NULL const/dest bug for kmem slab caches - Places debug __dprintf debugging messages under a spin_lock_irqsave   so it's safe to use then in interrupt handlers.  For debugging only!
996faa68697e Correctly implement atomic_cas_ptr() function.  Ideally all of these atomic operations will be rewritten anyway with the correct arch specific assembly.  But not today.
968eccd1d1cb Update the thread shim to use the current kernel threading API. We need to use kthread_create() here for a few reasons.  First off to old kernel_thread() API functioin will be going away. Secondly, and more importantly if I use kthread_create() we can then properly implement a thread_exit() function which terminates the kernel thread at any point with do_exit().  This fixes our cleanup bug which was caused by dropping a mutex twice after thread_exit() didn't really exit.
728b9dd80074 - Fix write-only behavior in vn-open() - Ensure we have at least 1 write-only splat test - Fix return codes for vn_* Solaris does not use negative return   codes in the kernel.  So linux errno's must be inverted.
79f92663e369 Fix race in rwlock implementation which can occur when your task is rescheduled to a different cpu after you've taken the lock but before calling RW_LOCK_HELD is called. We need the spinlock to ensure there is a wmb() there.
115aed0dd8ea - Add more strict in_atomic() checking to the mutex entry function just to be extra safety and paranoid.
12ea923056d9 Adjust the condition variables to simply sleep uninteruptibly. This way we don't have to contend with superious wakeups which it appears ZFS is not so careful to handle anyway.  So this is probably for the best.
f23e92fabf09 Add hw_serial support based on a usermodehelper which runs at spl module load time can calls hostid.  The resolved hostid is then fed back in to a proc entry for latter use.  It's not a pretty thing, but it will work for now.  The hw_serial is required for things such as 'zpool status' to work.
c5fd77fcbf20 Just cleanup up an error case to avoid overspamming the console. We get the stack once from the BUG() no reason to dump it twice.
d61e12af5af3 - Add some spinlocks to cover all the private data in the mutex.  I don't think this should fix anything but it's a good idea regardless.
55152ebbb46f         * modules/spl/spl-kmem.c : Make sure to disable interrupts         when necessary to avoid deadlocks.  We were seeing the deadlock         when calling kmem_cache_generic_constructor() and then an interrupt         forced us to end up calling kmem_cache_generic_destructor()         which caused our deadlock.
57d1b1885897 First commit of lustre style internal debug support.  These changes bring over everything lustre had for debugging with two exceptions.  I dropped by the debug daemon and upcalls just because it made things a little easier.  They can be readded easily enough if we feel they are needed.
ce86265693be Whoops need this!
2fae1b3d0af1 Frist minor batch of fixes.  Catch a dropped ;, and use SBUG instead of BUG.
937879f11db1 Update SPL to use new debug infrastructure.  This means: - Replacing all BUG_ON()'s with proper ASSERT()'s - Using ENTRY,EXIT,GOTO, and RETURN macro to instument call paths
892d51061e04 Handful of minor stack checking fixes
a8ac0b89668d Whoops, missed an instance where we could recursively stack check... bad.
e5bbd245e351 Added 4 missing subsystem flags
*** 6569 LINES SKIPPED ***


More information about the dev-commits-src-all mailing list