mirror of
				https://git.proxmox.com/git/mirror_zfs
				synced 2025-11-04 15:40:35 +00:00 
			
		
		
		
	Minimal changes required to integrate the SPL sources in to the
ZFS repository build infrastructure and packaging.
Build system and packaging:
  * Renamed SPL_* autoconf m4 macros to ZFS_*.
  * Removed redundant SPL_* autoconf m4 macros.
  * Updated the RPM spec files to remove SPL package dependency.
  * The zfs package obsoletes the spl package, and the zfs-kmod
    package obsoletes the spl-kmod package.
  * The zfs-kmod-devel* packages were updated to add compatibility
    symlinks under /usr/src/spl-x.y.z until all dependent packages
    can be updated.  They will be removed in a future release.
  * Updated copy-builtin script for in-kernel builds.
  * Updated DKMS package to include the spl.ko.
  * Updated stale AUTHORS file to include all contributors.
  * Updated stale COPYRIGHT and included the SPL as an exception.
  * Renamed README.markdown to README.md
  * Renamed OPENSOLARIS.LICENSE to LICENSE.
  * Renamed DISCLAIMER to NOTICE.
Required code changes:
  * Removed redundant HAVE_SPL macro.
  * Removed _BOOT from nvpairs since it doesn't apply for Linux.
  * Initial header cleanup (removal of empty headers, refactoring).
  * Remove SPL repository clone/build from zimport.sh.
  * Use of DEFINE_RATELIMIT_STATE and DEFINE_SPINLOCK removed due
    to build issues when forcing C99 compilation.
  * Replaced legacy ACCESS_ONCE with READ_ONCE.
  * Include needed headers for `current` and `EXPORT_SYMBOL`.
Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Olaf Faaland <faaland1@llnl.gov>
Reviewed-by: Matthew Ahrens <mahrens@delphix.com>
Reviewed-by: Pavel Zakharov <pavel.zakharov@delphix.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
TEST_ZIMPORT_SKIP="yes"
Closes #7556
		
	
			
		
			
				
	
	
		
			77 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
dnl #
 | 
						|
dnl # 3.17 API change,
 | 
						|
dnl # wait_on_bit() no longer requires an action argument. The former
 | 
						|
dnl # "wait_on_bit" interface required an 'action' function to be provided
 | 
						|
dnl # which does the actual waiting. There were over 20 such functions in the
 | 
						|
dnl # kernel, many of them identical, though most cases can be satisfied by one
 | 
						|
dnl # of just two functions: one which uses io_schedule() and one which just
 | 
						|
dnl # uses schedule().  This API change was made to consolidate all of those
 | 
						|
dnl # redundant wait functions.
 | 
						|
dnl #
 | 
						|
AC_DEFUN([ZFS_AC_KERNEL_WAIT_ON_BIT], [
 | 
						|
	AC_MSG_CHECKING([whether wait_on_bit() takes an action])
 | 
						|
	ZFS_LINUX_TRY_COMPILE([
 | 
						|
		#include <linux/wait.h>
 | 
						|
	],[
 | 
						|
		int (*action)(void *) = NULL;
 | 
						|
		wait_on_bit(NULL, 0, action, 0);
 | 
						|
	],[
 | 
						|
		AC_MSG_RESULT(yes)
 | 
						|
		AC_DEFINE(HAVE_WAIT_ON_BIT_ACTION, 1, [yes])
 | 
						|
	],[
 | 
						|
		AC_MSG_RESULT(no)
 | 
						|
	])
 | 
						|
])
 | 
						|
dnl #
 | 
						|
dnl # 4.13 API change
 | 
						|
dnl # Renamed struct wait_queue -> struct wait_queue_entry.
 | 
						|
dnl #
 | 
						|
AC_DEFUN([ZFS_AC_KERNEL_WAIT_QUEUE_ENTRY_T], [
 | 
						|
	AC_MSG_CHECKING([whether wait_queue_entry_t exists])
 | 
						|
	ZFS_LINUX_TRY_COMPILE([
 | 
						|
		#include <linux/wait.h>
 | 
						|
	],[
 | 
						|
		wait_queue_entry_t *entry __attribute__ ((unused));
 | 
						|
	],[
 | 
						|
		AC_MSG_RESULT(yes)
 | 
						|
		AC_DEFINE(HAVE_WAIT_QUEUE_ENTRY_T, 1,
 | 
						|
		    [wait_queue_entry_t exists])
 | 
						|
	],[
 | 
						|
		AC_MSG_RESULT(no)
 | 
						|
	])
 | 
						|
])
 | 
						|
 | 
						|
dnl #
 | 
						|
dnl # 4.13 API change
 | 
						|
dnl # Renamed wait_queue_head::task_list -> wait_queue_head::head
 | 
						|
dnl # Renamed wait_queue_entry::task_list -> wait_queue_entry::entry
 | 
						|
dnl #
 | 
						|
AC_DEFUN([ZFS_AC_KERNEL_WAIT_QUEUE_HEAD_ENTRY], [
 | 
						|
	AC_MSG_CHECKING([whether wq_head->head and wq_entry->entry exist])
 | 
						|
	ZFS_LINUX_TRY_COMPILE([
 | 
						|
		#include <linux/wait.h>
 | 
						|
 | 
						|
		#ifdef HAVE_WAIT_QUEUE_ENTRY_T
 | 
						|
		typedef wait_queue_head_t	spl_wait_queue_head_t;
 | 
						|
		typedef wait_queue_entry_t	spl_wait_queue_entry_t;
 | 
						|
		#else
 | 
						|
		typedef wait_queue_head_t	spl_wait_queue_head_t;
 | 
						|
		typedef wait_queue_t		spl_wait_queue_entry_t;
 | 
						|
		#endif
 | 
						|
	],[
 | 
						|
		spl_wait_queue_head_t wq_head;
 | 
						|
		spl_wait_queue_entry_t wq_entry;
 | 
						|
		struct list_head *head __attribute__ ((unused));
 | 
						|
		struct list_head *entry __attribute__ ((unused));
 | 
						|
 | 
						|
		head = &wq_head.head;
 | 
						|
		entry = &wq_entry.entry;
 | 
						|
	],[
 | 
						|
		AC_MSG_RESULT(yes)
 | 
						|
		AC_DEFINE(HAVE_WAIT_QUEUE_HEAD_ENTRY, 1,
 | 
						|
		    [wq_head->head and wq_entry->entry exist])
 | 
						|
	],[
 | 
						|
		AC_MSG_RESULT(no)
 | 
						|
	])
 | 
						|
])
 |