{"push_id":789865644,"size":30,"distinct_size":2,"ref":"refs/heads/master/ubuntu/vivid","head":"f2ed339d5232f2a3b342878a8367a17e15d21791","before":"3134ba90083ac68addd1615251cab3cc94098a1e","commits":[{"sha":"313b1ea622275e24c3046c3b04a98a933b18f8de","author":{"email":"0e6295540f566aad05a0dc0d8facf057c9f8e443@clusterhq.com","name":"Richard Yao"},"message":"vn_getf/vn_releasef should not accept negative file descriptors\n\nC type coercion rules require that negative numbers be converted into\npositive numbers via wraparound such that a negative -1 becomes a\npositive 1. This causes vn_getf to return a file handle when it should\nreturn NULL whenever a positive file descriptor existed with the same\nvalue. We should check for a negative file descriptor and return NULL\ninstead.\n\nThis was caught by ClusterHQ's unit testing.\n\nReference:\nhttp://stackoverflow.com/questions/50605/signed-to-unsigned-conversion-in-c-is-it-always-safe\n\nSigned-off-by: Richard Yao <ryao@gentoo.org>\nSigned-off-by: Andriy Gapon <avg@FreeBSD.org>\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nCloses #450","distinct":false,"url":"https://api.github.com/repos/zfsonlinux/pkg-spl/commits/313b1ea622275e24c3046c3b04a98a933b18f8de"},{"sha":"d3c677bcd330423c72cd4d4100727e5c1e8c1f38","author":{"email":"0e6295540f566aad05a0dc0d8facf057c9f8e443@clusterhq.com","name":"Richard Yao"},"message":"Implement areleasef()\n\nSigned-off-by: Richard Yao <ryao@gentoo.org>\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nCloses #449","distinct":false,"url":"https://api.github.com/repos/zfsonlinux/pkg-spl/commits/d3c677bcd330423c72cd4d4100727e5c1e8c1f38"},{"sha":"3d39d0afab44b217d51f7fbd97c3561d39e80f0c","author":{"email":"1d34d2e6c70ee806ecb1ebb590a2bf31fd995e1f@gmail.com","name":"Chunwei Chen"},"message":"Make tsd_set(key, NULL) remove the tsd entry for current thread\n\nTo prevent leaking tsd entries, we make tsd_set(key, NULL) remove the tsd\nentry for the current thread. This is alright since tsd_get() returns NULL\nwhen the entry doesn't exist.\n\nSigned-off-by: Chunwei Chen <tuxoko@gmail.com>\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nCloses #443","distinct":false,"url":"https://api.github.com/repos/zfsonlinux/pkg-spl/commits/3d39d0afab44b217d51f7fbd97c3561d39e80f0c"},{"sha":"62e2eb2329d99f7c39bcda47bc9ecb2887608fa5","author":{"email":"32d50ad1e384dcb9a5bf7e40fa470df5dabaf348@llnl.gov","name":"Brian Behlendorf"},"message":"Fix cstyle issues in spl-tsd.c\n\nThis patch only addresses the issues identified by the style checker\nin spl-tsd.c.  It contains no functional changes.\n\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>","distinct":false,"url":"https://api.github.com/repos/zfsonlinux/pkg-spl/commits/62e2eb2329d99f7c39bcda47bc9ecb2887608fa5"},{"sha":"dc5e8b70416e5d511bc361309bd426c767177723","author":{"email":"32d50ad1e384dcb9a5bf7e40fa470df5dabaf348@llnl.gov","name":"Brian Behlendorf"},"message":"Add boot_ncpus macro\n\nFor compatibility define boot_ncpus as num_online_cpus().\n\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>","distinct":false,"url":"https://api.github.com/repos/zfsonlinux/pkg-spl/commits/dc5e8b70416e5d511bc361309bd426c767177723"},{"sha":"a876b0305e94eea9505e7ecbae93cf7a1d24f743","author":{"email":"711c73f64afdce07b7e38039a96d2224209e9a6c@onthe.net.au","name":"Chris Dunlop"},"message":"Make taskq_wait() block until the queue is empty\n\nUnder Illumos taskq_wait() returns when there are no more tasks\nin the queue.  This behavior differs from ZoL and FreeBSD where\ntaskq_wait() returns when all the tasks in the queue at the\nbeginning of the taskq_wait() call are complete.  New tasks\nadded whilst taskq_wait() is running will be ignored.\n\nThis difference in semantics makes it possible that new subtle\nissues could be introduced when porting changes from Illumos.\nTo avoid that possibility the taskq_wait() function is being\nupdated such that it blocks until the queue in empty.\n\nThe previous behavior remains available through the\ntaskq_wait_outstanding() interface.  Note that this function\nwas previously called taskq_wait_all() but has been renamed\nto avoid confusion.\n\nSigned-off-by: Chris Dunlop <chris@onthe.net.au>\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nCloses #455","distinct":false,"url":"https://api.github.com/repos/zfsonlinux/pkg-spl/commits/a876b0305e94eea9505e7ecbae93cf7a1d24f743"},{"sha":"86c16c59fe0d78d44e9f3ebb10ee740bb1028045","author":{"email":"32d50ad1e384dcb9a5bf7e40fa470df5dabaf348@llnl.gov","name":"Brian Behlendorf"},"message":"Retire rwsem_is_locked() compat\n\nStock Linux 2.6.32 and earlier kernels contained a broken version of\nrwsem_is_locked() which could return an incorrect value.  Because of\nthis compatibility code was added to detect the broken implementation\nand replace it with our own if needed.\n\nThe fix for this issue was merged in to the mainline Linux kernel as\nof 2.6.33 and the major enterprise distributions based on 2.6.32 have\nall backported the fix.  Therefore there is no longer a need to carry\nthis code and it can be removed.\n\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nCloses #454","distinct":false,"url":"https://api.github.com/repos/zfsonlinux/pkg-spl/commits/86c16c59fe0d78d44e9f3ebb10ee740bb1028045"},{"sha":"2345368646151718fa59986d9e2d9d38bcdecb2c","author":{"email":"32d50ad1e384dcb9a5bf7e40fa470df5dabaf348@llnl.gov","name":"Brian Behlendorf"},"message":"Rename cv_wait_interruptible() to cv_wait_sig()\n\nCommit f752b46e added the cv_wait_interruptible() function to allow\ncondition variables to be woken by signals.  This function and its\ntimed wait counterpart should have been named cv_wait_sig() to match\nthe illumos interface which provides the same functionality.\n\nThis patch renames the symbol but leaves a #define compatibility\nwrapper in place until the ZFS code can be moved to the correct\nname.\n\nThis patch also makes a small number of cosmetic changes to make\nthe condvar source and header cstyle clean.\n\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nCloses #456","distinct":false,"url":"https://api.github.com/repos/zfsonlinux/pkg-spl/commits/2345368646151718fa59986d9e2d9d38bcdecb2c"},{"sha":"5acb2307b2edc55335996bf0ff78f6bdca24a98d","author":{"email":"32d50ad1e384dcb9a5bf7e40fa470df5dabaf348@llnl.gov","name":"Brian Behlendorf"},"message":"Add IMPLY() and EQUIV() macros\n\nAdded for upstream compatibility, they are of the form:\n\n* IMPLY(a, b) - if (a) then (b)\n* EQUIV(a, b) - if (a) then (b) *AND* if (b) then (a)\n\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>","distinct":false,"url":"https://api.github.com/repos/zfsonlinux/pkg-spl/commits/5acb2307b2edc55335996bf0ff78f6bdca24a98d"},{"sha":"f7a973d99b5e272f4a6223b8fb7db4fc6d363b41","author":{"email":"32d50ad1e384dcb9a5bf7e40fa470df5dabaf348@llnl.gov","name":"Brian Behlendorf"},"message":"Add TASKQ_DYNAMIC feature\n\nSetting the TASKQ_DYNAMIC flag will create a taskq with dynamic\nsemantics.  Initially only a single worker thread will be created\nto service tasks dispatched to the queue.  As additional threads\nare needed they will be dynamically spawned up to the max number\nspecified by 'nthreads'.  When the threads are no longer needed,\nbecause the taskq is empty, they will automatically terminate.\n\nDue to the low cost of creating and destroying threads under Linux\nby default new threads and spawned and terminated aggressively.\nThere are two modules options which can be tuned to adjust this\nbehavior if needed.\n\n* spl_taskq_thread_sequential - The number of sequential tasks,\nwithout interruption, which needed to be handled by a worker\nthread before a new worker thread is spawned.  Default 4.\n\n* spl_taskq_thread_dynamic - Provides the ability to completely\ndisable the use of dynamic taskqs on the system.  This is provided\nfor the purposes of debugging and troubleshooting.  Default 1\n(enabled).\n\nThis behavior is fundamentally consistent with the dynamic taskq\nimplementation found in both illumos and FreeBSD.\n\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nSigned-off-by: Tim Chase <tim@chase2k.com>\nCloses #458","distinct":false,"url":"https://api.github.com/repos/zfsonlinux/pkg-spl/commits/f7a973d99b5e272f4a6223b8fb7db4fc6d363b41"},{"sha":"3c82160ff2feb86fb7275fd941d203167340a187","author":{"email":"32d50ad1e384dcb9a5bf7e40fa470df5dabaf348@llnl.gov","name":"Brian Behlendorf"},"message":"Set TASKQ_DYNAMIC for kmem and system taskqs\n\nAdd the TASKQ_DYNAMIC flag to the kmem_cache and system taskqs\nto reduce the number of idle threads on the system.  Additional\nthreads will be created on demand up to the previous maximum\nthread counts.  This should have minimal, if any, impact on\nperformance.\n\nThis makes the system taskq consistent with illumos which is\nalways created as a dynamic taskq with up to 64 threads.\n\nThe task limits for the kmem_cache have been increased to avoid\nany unnessisary throttling and to keep a larger reserve of\ntask_t structures on the free list.\n\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nSigned-off-by: Tim Chase <tim@chase2k.com>\nCloses #458","distinct":false,"url":"https://api.github.com/repos/zfsonlinux/pkg-spl/commits/3c82160ff2feb86fb7275fd941d203167340a187"},{"sha":"77ab5dd33a99bdf7fb062f0ea327582236a225b3","author":{"email":"32d50ad1e384dcb9a5bf7e40fa470df5dabaf348@llnl.gov","name":"Brian Behlendorf"},"message":"Add memory compatibility wrappers\n\nThe function vmem_qcache_reap() and global variables 'needfree',\n'desfree', and 'lotsfree' are all used in the upstream.  While\nthese variables have no meaning under Linux they're being defined\nas 0's to avoid needing to make additional changes to the ARC code.\n\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>","distinct":false,"url":"https://api.github.com/repos/zfsonlinux/pkg-spl/commits/77ab5dd33a99bdf7fb062f0ea327582236a225b3"},{"sha":"37d7cd94f326896ffbd3f7609a20562c000cd4c8","author":{"email":"ae7481973e6c9f63ea91e7cd1b77d8821b8e072d@bayour.com","name":"Turbo Fredriksson"},"message":"Support parallel build trees (VPATH builds)\n\nBuild products from an out of tree build should be written\nrelative to the build directory.  Sources should be referred\nto by their locations in the source directory.\n\nThis is accomplished by adding the 'src' and 'obj' variables\nfor the module Makefile.am, using relative paths to reference\nsource files, and by setting VPATH when source files are not\nco-located with the Makefile.  This enables the following:\n\n  $ mkdir build\n  $ cd build\n  $ ../configure\n  $ make -s\n\nThis change also has the advantage of resolving the following\nwarning which is generated by modern versions of automake.\n\n  Makefile.am:00: warning: source file 'xxx' is in a subdirectory,\n  Makefile.am:00: but option 'subdir-objects' is disabled\n\nSigned-off-by: Turbo Fredriksson <turbo@bayour.com>\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nIssue zfsonlinux/zfs#1082","distinct":false,"url":"https://api.github.com/repos/zfsonlinux/pkg-spl/commits/37d7cd94f326896ffbd3f7609a20562c000cd4c8"},{"sha":"9eb361aaa537724c9a90ab6a9f33521bfd80bad9","author":{"email":"32d50ad1e384dcb9a5bf7e40fa470df5dabaf348@llnl.gov","name":"Brian Behlendorf"},"message":"Default to --disable-debug-kmem\n\nThe default kmem debugging (--enable-debug-kmem) can severely impact\nperformance on large-scale NUMA systems due to the atomic operations\nused in the memory accounting. A 32-thread fio test running on a\n40-core 80-thread system and performing 100% cached reads with kmem\ndebugging is:\n\nEnabled:\nREAD: io=177071MB, aggrb=2951.2MB/s, minb=2951.2MB/s, maxb=2951.2MB/s,\n\nDisabled:\nREAD: io=271454MB, aggrb=4524.4MB/s, minb=4524.4MB/s, maxb=4524.4MB/s,\n\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nSigned-off-by: Tim Chase <tim@chase2k.com>\nIssues #463","distinct":false,"url":"https://api.github.com/repos/zfsonlinux/pkg-spl/commits/9eb361aaa537724c9a90ab6a9f33521bfd80bad9"},{"sha":"62aa81a5776c0bc35f05f8923ea3e293527b5264","author":{"email":"32d50ad1e384dcb9a5bf7e40fa470df5dabaf348@llnl.gov","name":"Brian Behlendorf"},"message":"Add defclsyspri macro\n\nAdd a new defclsyspri macro which can be used to request the default\nLinux scheduler priority.  Neither the minclsyspri or maxclsyspri map\nto the default Linux kernel thread priority.  This makes it awkward to\ncreate taskqs which run with the same priority as the rest of the kernel\nthreads on the system which can lead to performance issues.\n\nAll SPL callers which previously used minclsyspri or maxclsyspri have\nbeen changed to use defclsyspri.  The vast majority of callers were\npart of the test suite which won't have an external impact.  The few\nplaces where it could impact performance the change was from maxclsyspri\nto defclsyspri.  This makes it more likely the process will be scheduled\nwhich may help performance.\n\nTo facilitate further performance analysis the spl_taskq_thread_priority\nmodule option has been added.  When disabled (0) all newly created kernel\nthreads will use the default kernel thread priority.  When enabled (1)\nthe specified taskq priority will be used.  By default this value is\nenabled (1).\n\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>","distinct":false,"url":"https://api.github.com/repos/zfsonlinux/pkg-spl/commits/62aa81a5776c0bc35f05f8923ea3e293527b5264"},{"sha":"4699d76d19f1ff4a59c16c10b2aedab6f5054a73","author":{"email":"32d50ad1e384dcb9a5bf7e40fa470df5dabaf348@llnl.gov","name":"Brian Behlendorf"},"message":"Remove skc_ref from alloc/free paths\n\nAs described in spl_kmem_cache_destroy() the ->skc_ref count was\nadded to address the case of a cache reap or grow racing with a\ndestroy.  They are not strictly needed in the alloc/free paths\nbecause consumers of the cache are responsible for not using it\nwhile it's being destroyed.\n\nRemoving this code is desirable because there is some evidence that\ncontention on this atomic negative impacts performance on large-scale\nNUMA systems.\n\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nSigned-off-by: Tim Chase <tim@chase2k.com>\nIssue #463","distinct":false,"url":"https://api.github.com/repos/zfsonlinux/pkg-spl/commits/4699d76d19f1ff4a59c16c10b2aedab6f5054a73"},{"sha":"9dc5ffbec845ec9c4d9b109c85569345c0c11766","author":{"email":"32d50ad1e384dcb9a5bf7e40fa470df5dabaf348@llnl.gov","name":"Brian Behlendorf"},"message":"Invert minclsyspri and maxclsyspri\n\nOn Linux the meaning of a processes priority is inverted with respect\nto illumos.  High values on Linux indicate a _low_ priority while high\nvalue on illumos indicate a _high_ priority.\n\nIn order to preserve the logical meaning of the minclsyspri and\nmaxclsyspri macros when they are used by the illumos wrapper functions\ntheir values have been inverted.  This way when changes are merged\nfrom upstream illumos we won't need to remember to invert the macro.\nIt could also lead to confusion.\n\nNote this change also reverts some of the priorities changes in prior\ncommit 62aa81a.  The rational is as follows:\n\nspl_kmem_cache    - High priority may result in blocked memory allocs\nspl_system_taskq  - May perform I/O for file backed VDEVs\nspl_dynamic_taskq - New taskq threads should be spawned promptly\n\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nSigned-off-by: Ned Bass <bass6@llnl.gov>\nIssue zfsonlinux/zfs#3607","distinct":false,"url":"https://api.github.com/repos/zfsonlinux/pkg-spl/commits/9dc5ffbec845ec9c4d9b109c85569345c0c11766"},{"sha":"8ac6ffecaf6dacfec6c5cb24d0bc8b3d40db63ef","author":{"email":"32d50ad1e384dcb9a5bf7e40fa470df5dabaf348@llnl.gov","name":"Brian Behlendorf"},"message":"Remove needfree, desfree, lotsfree #defines\n\nThis patch reverts 77ab5dd.  This is now possible because upstream has\nrefactored the ARC in such a way that these values are only used in a\nfew key places.  Those places have subsequently been updated to use\nthe Linux equivalent Linux functionality.\n\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nIssue zfsonlinux/zfs#3637","distinct":false,"url":"https://api.github.com/repos/zfsonlinux/pkg-spl/commits/8ac6ffecaf6dacfec6c5cb24d0bc8b3d40db63ef"},{"sha":"851a549305ad9001e7a6dfbf735f501b286e9d08","author":{"email":"5ee0edb9e2229c0838f1959779f1949031de0123@chase2k.com","name":"Tim Chase"},"message":"Include other sources of freeable memory in the freemem calculation\n\nPrevents ARC collapse when non-ZFS filesystems, the block layer or other\nmemory consumers use a lot of reclaimable memory in the page cache.\n\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nSigned-off-by: Tim Chase <tim@chase2k.com>\nCloses zfsonlinux/zfs#3680\nCloses #471","distinct":false,"url":"https://api.github.com/repos/zfsonlinux/pkg-spl/commits/851a549305ad9001e7a6dfbf735f501b286e9d08"},{"sha":"ebc2c9374bde0c53837e7c909809697088615a88","author":{"email":"32d50ad1e384dcb9a5bf7e40fa470df5dabaf348@llnl.gov","name":"Brian Behlendorf"},"message":"Linux 4.2 compat: vfs_rename()\n\nAttempting to perform a vfs_rename() on Linux 4.2 and newer kernels\nresults in an EACCES error.  Rather than attempting to add and\nmaintain more ugly compatibility code it's best to just retire\nthis interface.  As a first step the SPLAT test is disabled for\nLinux 4.2 and newer kernels.\n\n  vn_rename: Failed vn_rename /tmp/vn.tmp.1 -> /tmp/vn.tmp.2 (13)\n\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nIssue zfsonlinux/zfs#3653","distinct":false,"url":"https://api.github.com/repos/zfsonlinux/pkg-spl/commits/ebc2c9374bde0c53837e7c909809697088615a88"}]}