summaryrefslogtreecommitdiffstats
path: root/modules
Commit message (Collapse)AuthorAgeFilesLines
* Update SPL to use new debug infrastructure. This means:behlendo2008-04-2113-177/+280
| | | | | | | | | - Replacing all BUG_ON()'s with proper ASSERT()'s - Using ENTRY,EXIT,GOTO, and RETURN macro to instument call paths git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@78 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Frist minor batch of fixes. Catch a dropped ;, and use SBUG instead of BUG.behlendo2008-04-191-2/+2
| | | | git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@77 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* First commit of lustre style internal debug support. Thesebehlendo2008-04-185-310/+1919
| | | | | | | | | | | | | | | | | 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. Everything compiles and seems to work on first inspection but I suspect there are a handful of issues still lingering which I'll be sorting out right away. I just wanted to get all these changes commited and safe. I'm getting a little paranoid about losing them. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@75 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* * modules/spl/spl-kmem.c : Make sure to disable interruptswartens22008-04-161-14/+21
| | | | | | | | | | 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. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@74 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* - Add some spinlocks to cover all the private data in the mutex. I don'tbehlendo2008-04-152-19/+30
| | | | | | | | | | | | | think this should fix anything but it's a good idea regardless. - Drop the lock before calling the construct/destructor for the slab otherwise we can't sleep in a constructor/destructor and for long running functions we may NMI. - Do something braindead, but safe for the console debug logs for now. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@73 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Add hw_serial support based on a usermodehelper which runsbehlendo2008-04-121-17/+116
| | | | | | | | | | | 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. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@71 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* - Add more strict in_atomic() checking to the mutex entrybehlendo2008-04-112-72/+105
| | | | | | | | | | | | | | | function just to be extra safety and paranoid. - Rewrite the thread shim to take full advantage of the new kernel kthread API. This greatly simplifies things. - Add a new regression test for thread_exit() to ensure it properly terminates a thread immediately without allowing futher execution of the thread. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@69 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Fix race in rwlock implementation which can occur whenbehlendo2008-04-071-2/+7
| | | | | | | | | 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. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@68 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* - Fix write-only behavior in vn-open()behlendo2008-04-043-23/+23
| | | | | | | | | | | - 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. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@67 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Update the thread shim to use the current kernel threading API.behlendo2008-04-041-13/+12
| | | | | | | | | | | | | | 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. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@66 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Correctly implement atomic_cas_ptr() function. Ideally all of thesebehlendo2008-04-031-2/+0
| | | | | | | | atomic operations will be rewritten anyway with the correct arch specific assembly. But not today. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@65 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* - Remapped ldi_handle_t to struct block_device * which is much more usefulbehlendo2008-04-033-7/+16
| | | | | | | | | | | | | - 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! git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@64 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Ensure all file ops pointer are NULL or we may end upbehlendo2008-04-011-1/+1
| | | | | | | | | calling garbage pointers on open/close etc and get what look like random crashes. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@61 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Add some crude debugging support. It leaves alot to bebehlendo2008-03-315-33/+236
| | | | | | | desired, but it should allow more easy kernel debugging for now. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@59 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Correctly functioning 64-bit atomic shim layer. It's notbehlendo2008-03-286-0/+208
| | | | | | | | | | 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. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@57 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Two fixes to the module interface. Could be worse!behlendo2008-03-211-10/+25
| | | | git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@53 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* OK, a first reasonable attempt at a solaris module/chdev shim layer.behlendo2008-03-204-2/+301
| | | | | | | | | | | | | 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. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@52 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* OK, some pretty substantial rework here. I've merged the spl-filebehlendo2008-03-1811-261/+332
| | | | | | | | | | | | | | | | | | | | 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. While I was hacking away I also noticed a NULL termination issue in the second kobj test case so I fixed that too. In fact, I fixed a few other things as well but all for the best! git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@51 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Initial pass at a file API getf/releasef hooksbehlendo2008-03-1810-23/+273
| | | | git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@50 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Fix kmem memory accountingbehlendo2008-03-143-5/+50
| | | | | | | | | Adjust kmem slab interface to make a copy of the slab name before passing it on to the linux slab (we free it latter too) git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@47 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Fix KMEM_DEBUG support (enable by default)behlendo2008-03-143-3/+77
| | | | | | | | | Add vmem_alloc/vmem_free support (and test case) Add missing time functions git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@46 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Add missing headersbehlendo2008-03-142-6/+77
| | | | | | | Rework vnodes to be based on the slab cache, just like on Solaris. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@45 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* - Add some more missing headersbehlendo2008-03-121-2/+7
| | | | | | | | - Map the LE/BE_* byteorder macros to the linux versions - More minor vnodes fixes git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@41 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Add copyin/copyout mappingbehlendo2008-03-123-7/+22
| | | | | | | | Fix some vnode types git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@40 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* - Implemented vnode interfaces and 6 test cases to the test suite.behlendo2008-03-127-172/+719
| | | | | | | | | - Re-implmented kobj support based on the vnode support. - Add TESTS option to check.sh, and removed delay after module load. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@39 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Apply fix from bug239 for rwlock deadlock.behlendo2008-03-116-0/+220
| | | | | | | | | | | | | | | Update check.sh script to take V=1 env var so you can run it verbosely as follows if your chasing something: sudo make check V=1 Add new kobj api and needed regression tests to allow reading of files from within the kernel. Normally thats not something I support but the spa layer needs the support for its config file. Add some more missing stub headers git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@38 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Two more GPL only symbols moved to helper functions in the spl module.behlendo2008-03-111-0/+14
| | | | git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@37 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Remap gethrestime() with #define to new symbol and export that newbehlendo2008-03-102-0/+12
| | | | | | | symbol to avoid direct use of GPL only symbol. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@36 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Add some typedefs to make it clearer when we passing a function,behlendo2008-03-101-2/+2
| | | | | | | | Add fm_panic define Add another bad atomic hack (need to do this right) git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@35 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Fix systemic naming mistakebehlendo2008-03-101-3/+3
| | | | git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@34 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Add somre debugging supportbehlendo2008-03-082-0/+46
| | | | git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@31 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Add the initial vestigates of vnode supportbehlendo2008-03-072-0/+169
| | | | git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@30 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Add some missing rw_lock symbolsbehlendo2008-03-061-10/+13
| | | | git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@27 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Add highbit func,behlendo2008-03-063-2/+33
| | | | | | | | | | Add sloopy atomic declaration which will need to be fixed (eventually) Fill out more of the Solaris VM hooks Adjust the create_thread function git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@26 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Remove spl.h, just include the headers you need.behlendo2008-03-041-1/+15
| | | | | | | | Add a few more stubs. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@24 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* More stub headers, behlendo2008-03-041-1/+1
| | | | | | | | moved generic to sysmacros, added some more macros for kernel compatibility git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@22 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Reorganize /include/ to add a /sys/, this way we don't need tobehlendo2008-03-016-6/+6
| | | | | | | | | muck with #includes in existing Solaris style source to get it to find the right stuff. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@18 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* OK, I think this is the last of major cleanup and restructuring.behlendo2008-02-287-30/+15
| | | | | | | | | | | | 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. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@16 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* Add top level make check target which runs the validationbehlendo2008-02-281-3/+1
| | | | | | | | | | 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. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@15 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* More cleanup.behlendo2008-02-2711-812/+1001
| | | | | | | | | | | - 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. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@14 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* OK, it builds... and the modules load... now for some morebehlendo2008-02-271-0/+19
| | | | | | | | cleanup to remove the remaining vestages of the time it lives with the ZFS code. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@13 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
* OK, everything builds now. My initial intent was to place all ofbehlendo2008-02-2717-0/+3715
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. git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@11 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c