Commit Graph

19511 Commits

Author SHA1 Message Date
Brian Behlendorf 96bd9f434d Merge branch 'fix-stack-traverse_impl' into refs/top-bases/fix-branch 2010-06-29 10:21:53 -07:00
Brian Behlendorf c3681c9f29 Merge commit 'refs/top-bases/fix-branch' into fix-branch 2010-06-29 10:21:53 -07:00
Brian Behlendorf 607b455090 New TopGit dependency: fix-stack-traverse_impl 2010-06-29 10:21:50 -07:00
Brian Behlendorf 8e2de85a6d Reduce stack usage of traverse_impl()
Stack use reduced from 560 bytes to 128 bytes.
2010-06-29 10:21:21 -07:00
Brian Behlendorf d2585f5921 Merge branch 'fix-stack-vn_open' into refs/top-bases/fix-branch 2010-06-29 10:15:05 -07:00
Brian Behlendorf 0a03ec3bf5 Merge commit 'refs/top-bases/fix-branch' into fix-branch 2010-06-29 10:15:05 -07:00
Brian Behlendorf 53324fbd1f New TopGit dependency: fix-stack-vn_open 2010-06-29 10:15:02 -07:00
Brian Behlendorf edbb93c11d Reduce stack usage by vn_open()
We should not put a 4k maxpathlen buffer on the stack, instead
locate it to the heap.  Even in user space we run ztest with 8K
2010-06-29 10:14:37 -07:00
Brian Behlendorf 78cb5e6f60 Merge commit 'refs/top-bases/fix-branch' into fix-branch 2010-06-29 10:12:04 -07:00
Brian Behlendorf 51a936233f Merge branch 'fix-stack-dsl_dataset_destroy' into refs/top-bases/fix-branch 2010-06-29 10:12:03 -07:00
Brian Behlendorf aa90238713 Merge branch 'fix-pthreads' into refs/top-bases/fix-branch 2010-06-29 10:12:03 -07:00
Brian Behlendorf eabeea3b7c New TopGit dependency: fix-stack-dsl_dataset_destroy 2010-06-29 10:12:00 -07:00
Brian Behlendorf 7334572416 Reduce stack usage by dsl_dataset_destroy()
Move dsl_dataset_t local variable from the stack to the heap.
This reduces the stack usage of this function from 2048 bytes
to 176 bytes for x84_64 arches.
2010-06-29 10:11:32 -07:00
Brian Behlendorf 9af7aa53eb Set stack frame limit
For all module/library functions ensure so stack frame exceeds 1024
bytes.  Ideally this should be set lower to say 512 bytes but there
are still numerous functions which exceed even this limit.  For now
this is set to 1024 to ensure we catch the worst offenders.

Additionally, set the limit for ztest to 1024 bytes since the idea
here is to catch stack issues in user space before we find them by
overrunning a kernel stack.  This should also be reduced to 512
bytes as soon as all the trouble makes are fixed.

Finally, add -fstack-check to gcc build options when --enable-debug
is specified at configure time.  This ensures that each page on the
stack will be touched and we will generate a segfault on stack
overflow.

Over time we can gradually fix the following functions:

536 zfs:dsl_deadlist_regenerate
536 zfs:dsl_load_sets
536 zfs:zil_parse
544 zfs:zfs_ioc_recv
552 zfs:dsl_deadlist_insert_bpobj
552 zfs:vdev_dtl_sync
584 zfs:copy_create_perms
608 zfs:ddt_class_contains
608 zfs:ddt_prefetch
608 zfs:__dprintf
616 zfs:ddt_lookup
648 zfs:dsl_scan_ddt
696 zfs:dsl_deadlist_merge
736 zfs:ddt_zap_walk
744 zfs:dsl_prop_get_all_impl
872 zfs:dnode_evict_dbufs
2010-06-29 10:08:48 -07:00
Brian Behlendorf 6fe1e37a5e Additional pthread related fixes for ztest
There are 3 fixes in thie commit.  First, update ztest_run() to store
the thread id and not the address of the kthread_t.  This will be freed
on thread exit and is not safe to use.  This is pretty close to how
things were done in the original ztest code before I got there.

Second, for extra paranoia update thread_exit() to return a special
TS_MAGIC value via pthread_exit().  This value is then verified in
pthread_join() to ensure the thread exited cleanly.  This can be
done cleanly because the kthread doesn't provide a return code
mechanism we need to worry about.

Third, replace the ztest deadman thread with a signal handler.  We
cannot use the previous approach because the correct behavior for
pthreads is to wait for all threads to exit before terminating the
process.  Since the deadman thread won't call exit by design we
end up hanging in kernel_exit().  To avoid this we just setup a
SIGALRM signal handle and register a deadman alarm.  IMHO this
is simpler and cleaner anyway.
2010-06-29 10:06:09 -07:00
Brian Behlendorf ef8c360611 Merge branch 'linux-spa-thread' into refs/top-bases/linux-zfs-branch 2010-06-28 11:32:51 -07:00
Brian Behlendorf d8ebc2ab21 Merge commit 'refs/top-bases/linux-spa-thread' into linux-spa-thread 2010-06-28 11:32:49 -07:00
Brian Behlendorf 58a4452bfc Merge branch 'linux-topology' into refs/top-bases/linux-zfs-branch 2010-06-28 11:32:44 -07:00
Brian Behlendorf 799b8788a9 Merge commit 'refs/top-bases/linux-topology' into linux-topology 2010-06-28 11:32:41 -07:00
Brian Behlendorf c0ad9a1962 Merge branch 'linux-sha2' into refs/top-bases/linux-zfs-branch 2010-06-28 11:32:36 -07:00
Brian Behlendorf 086e6034ca Merge commit 'refs/top-bases/linux-sha2' into linux-sha2 2010-06-28 11:32:34 -07:00
Brian Behlendorf a9e5d32fb8 Merge branch 'linux-user-util' into refs/top-bases/linux-zfs-branch 2010-06-28 11:32:28 -07:00
Brian Behlendorf 4975fd71de Merge commit 'refs/top-bases/linux-user-util' into linux-user-util 2010-06-28 11:32:26 -07:00
Brian Behlendorf 55ce8b9e36 Merge branch 'linux-events' into refs/top-bases/linux-zfs-branch 2010-06-28 11:32:21 -07:00
Brian Behlendorf 90fa1ce7d6 Merge commit 'refs/top-bases/linux-events' into linux-events 2010-06-28 11:32:19 -07:00
Brian Behlendorf 5a8c1a3f95 Merge branch 'linux-kernel-module' into refs/top-bases/linux-zfs-branch 2010-06-28 11:32:13 -07:00
Brian Behlendorf ae2285b17d Merge commit 'refs/top-bases/linux-kernel-module' into linux-kernel-module 2010-06-28 11:32:11 -07:00
Brian Behlendorf f3924aea0e Merge branch 'linux-kernel-device' into refs/top-bases/linux-zfs-branch 2010-06-28 11:32:05 -07:00
Brian Behlendorf d843c10d7e Merge commit 'refs/top-bases/linux-kernel-device' into linux-kernel-device 2010-06-28 11:32:03 -07:00
Brian Behlendorf db396bcda0 Merge branch 'linux-have-idmap' into refs/top-bases/linux-zfs-branch 2010-06-28 11:31:58 -07:00
Brian Behlendorf 456ae258ee Merge commit 'refs/top-bases/linux-have-idmap' into linux-have-idmap 2010-06-28 11:31:56 -07:00
Brian Behlendorf f44dd08b58 Merge branch 'linux-ztest' into refs/top-bases/linux-zfs-branch 2010-06-28 11:31:50 -07:00
Brian Behlendorf 01f2707edd Merge commit 'refs/top-bases/linux-ztest' into linux-ztest 2010-06-28 11:31:48 -07:00
Brian Behlendorf 699cf2179f Merge branch 'linux-unused' into refs/top-bases/linux-zfs-branch 2010-06-28 11:31:42 -07:00
Brian Behlendorf c28d601c0d Merge commit 'refs/top-bases/linux-unused' into linux-unused 2010-06-28 11:31:40 -07:00
Brian Behlendorf f6ad0de60a Merge branch 'linux-libspl' into refs/top-bases/linux-zfs-branch 2010-06-28 11:31:35 -07:00
Brian Behlendorf 99cf2d2228 Merge commit 'refs/top-bases/linux-libspl' into linux-libspl 2010-06-28 11:31:33 -07:00
Brian Behlendorf b2313a226a Merge branch 'linux-zpios' into refs/top-bases/linux-zfs-branch 2010-06-28 11:31:27 -07:00
Brian Behlendorf 2a6d923e62 Merge commit 'refs/top-bases/linux-zpios' into linux-zpios 2010-06-28 11:31:25 -07:00
Brian Behlendorf 0528b9769b Merge branch 'linux-user-disk' into refs/top-bases/linux-zfs-branch 2010-06-28 11:31:19 -07:00
Brian Behlendorf fbed3151dd Merge commit 'refs/top-bases/linux-user-disk' into linux-user-disk 2010-06-28 11:31:17 -07:00
Brian Behlendorf dc3e2f3f92 Merge branch 'linux-symbol-collisions' into refs/top-bases/linux-zfs-branch 2010-06-28 11:31:11 -07:00
Brian Behlendorf 4452e42d9c Merge commit 'refs/top-bases/linux-symbol-collisions' into linux-symbol-collisions 2010-06-28 11:31:09 -07:00
Brian Behlendorf 759df09df2 Merge branch 'linux-kernel-mem' into refs/top-bases/linux-zfs-branch 2010-06-28 11:31:03 -07:00
Brian Behlendorf 7b16b35821 Merge commit 'refs/top-bases/linux-kernel-mem' into linux-kernel-mem 2010-06-28 11:31:01 -07:00
Brian Behlendorf 61adb3379a Merge branch 'linux-kernel-disk' into refs/top-bases/linux-zfs-branch 2010-06-28 11:30:55 -07:00
Brian Behlendorf 6412189f1b Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2010-06-28 11:30:53 -07:00
Brian Behlendorf c02813baef Merge branch 'linux-have-spl-debug' into refs/top-bases/linux-zfs-branch 2010-06-28 11:30:47 -07:00
Brian Behlendorf 671f1fbf43 Merge commit 'refs/top-bases/linux-have-spl-debug' into linux-have-spl-debug 2010-06-28 11:30:45 -07:00
Brian Behlendorf 5b33cbea31 Merge branch 'linux-have-mntent' into refs/top-bases/linux-zfs-branch 2010-06-28 11:30:39 -07:00