mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	xdr: header cleanup
#16047 notes that include/os/freebsd/spl/rpc/xdr.h carried an (apparently) incompatible license. While looking into it, it seems that this file is actually unnecessary these days - FreeBSD's kernel XDR has XDR_CONTROL, xdrmem_control and XDR_GET_BYTES_AVAIL, while userspace has XDR_CONTROL and xdrmem_control, and our implementation of XDR_GET_BYTES_AVAIL for libspl works nicely with it. So this removes that file outright. To keep the includes in nvpair.c tidy, I've made a few small adjustments to the Linux headers. By definition, rpc/types.h provides bool_t and is included before rpc/xdr.h, so I've created rpc/types.h for Linux. This isn't necessary for userspace; both FreeBSD native and tirpc on Linux already have these headers set up correctly. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Rob Norris <robn@despairlabs.com> Sponsored-by: https://despairlabs.com/sponsor/ Closes #16047 Closes #16051
This commit is contained in:
		
							parent
							
								
									e0cfa1592d
								
							
						
					
					
						commit
						5d859a2e22
					
				| @ -4,8 +4,6 @@ noinst_HEADERS = \ | |||||||
| 	\
 | 	\
 | ||||||
| 	%D%/spl/acl/acl_common.h \
 | 	%D%/spl/acl/acl_common.h \
 | ||||||
| 	\
 | 	\
 | ||||||
| 	%D%/spl/rpc/xdr.h \
 |  | ||||||
| 	\
 |  | ||||||
| 	%D%/spl/sys/ia32/asm_linkage.h \
 | 	%D%/spl/sys/ia32/asm_linkage.h \
 | ||||||
| 	\
 | 	\
 | ||||||
| 	%D%/spl/sys/acl.h \
 | 	%D%/spl/sys/acl.h \
 | ||||||
|  | |||||||
| @ -1,71 +0,0 @@ | |||||||
| /*
 |  | ||||||
|  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for |  | ||||||
|  * unrestricted use provided that this legend is included on all tape |  | ||||||
|  * media and as a part of the software program in whole or part.  Users |  | ||||||
|  * may copy or modify Sun RPC without charge, but are not authorized |  | ||||||
|  * to license or distribute it to anyone else except as part of a product or |  | ||||||
|  * program developed by the user. |  | ||||||
|  * |  | ||||||
|  * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE |  | ||||||
|  * WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR |  | ||||||
|  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. |  | ||||||
|  * |  | ||||||
|  * Sun RPC is provided with no support and without any obligation on the |  | ||||||
|  * part of Sun Microsystems, Inc. to assist in its use, correction, |  | ||||||
|  * modification or enhancement. |  | ||||||
|  * |  | ||||||
|  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE |  | ||||||
|  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC |  | ||||||
|  * OR ANY PART THEREOF. |  | ||||||
|  * |  | ||||||
|  * In no event will Sun Microsystems, Inc. be liable for any lost revenue |  | ||||||
|  * or profits or other special, indirect and consequential damages, even if |  | ||||||
|  * Sun has been advised of the possibility of such damages. |  | ||||||
|  * |  | ||||||
|  * Sun Microsystems, Inc. |  | ||||||
|  * 2550 Garcia Avenue |  | ||||||
|  * Mountain View, California  94043 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #ifndef	_OPENSOLARIS_RPC_XDR_H_ |  | ||||||
| #define	_OPENSOLARIS_RPC_XDR_H_ |  | ||||||
| 
 |  | ||||||
| #include <rpc/types.h> |  | ||||||
| #include_next <rpc/xdr.h> |  | ||||||
| 
 |  | ||||||
| #if !defined(_KERNEL) && !defined(_STANDALONE) |  | ||||||
| 
 |  | ||||||
| #include <assert.h> |  | ||||||
| 
 |  | ||||||
| /*
 |  | ||||||
|  * Taken from sys/xdr/xdr_mem.c. |  | ||||||
|  * |  | ||||||
|  * FreeBSD's userland XDR doesn't implement control method (only the kernel), |  | ||||||
|  * but OpenSolaris nvpair still depend on it, so we have to implement it here. |  | ||||||
|  */ |  | ||||||
| static __inline bool_t |  | ||||||
| xdrmem_control(XDR *xdrs, int request, void *info) |  | ||||||
| { |  | ||||||
| 	xdr_bytesrec *xptr; |  | ||||||
| 
 |  | ||||||
| 	switch (request) { |  | ||||||
| 	case XDR_GET_BYTES_AVAIL: |  | ||||||
| 		xptr = (xdr_bytesrec *)info; |  | ||||||
| 		xptr->xc_is_last_record = TRUE; |  | ||||||
| 		xptr->xc_num_avail = xdrs->x_handy; |  | ||||||
| 		return (TRUE); |  | ||||||
| 	default: |  | ||||||
| 		assert(!"unexpected request"); |  | ||||||
| 	} |  | ||||||
| 	return (FALSE); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #undef XDR_CONTROL |  | ||||||
| #define	XDR_CONTROL(xdrs, req, op)					\ |  | ||||||
| 	(((xdrs)->x_ops->x_control == NULL) ?				\ |  | ||||||
| 	    xdrmem_control((xdrs), (req), (op)) :			\ |  | ||||||
| 	    (*(xdrs)->x_ops->x_control)(xdrs, req, op)) |  | ||||||
| 
 |  | ||||||
| #endif	/* !_KERNEL && !_STANDALONE */ |  | ||||||
| 
 |  | ||||||
| #endif	/* !_OPENSOLARIS_RPC_XDR_H_ */ |  | ||||||
| @ -47,6 +47,7 @@ kernel_sys_HEADERS = \ | |||||||
| 
 | 
 | ||||||
| kernel_spl_rpcdir = $(kerneldir)/spl/rpc | kernel_spl_rpcdir = $(kerneldir)/spl/rpc | ||||||
| kernel_spl_rpc_HEADERS = \
 | kernel_spl_rpc_HEADERS = \
 | ||||||
|  | 	%D%/spl/rpc/types.h \
 | ||||||
| 	%D%/spl/rpc/xdr.h | 	%D%/spl/rpc/xdr.h | ||||||
| 
 | 
 | ||||||
| kernel_spl_sysdir = $(kerneldir)/spl/sys | kernel_spl_sysdir = $(kerneldir)/spl/sys | ||||||
|  | |||||||
							
								
								
									
										30
									
								
								include/os/linux/spl/rpc/types.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								include/os/linux/spl/rpc/types.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,30 @@ | |||||||
|  | /*
 | ||||||
|  |  *  Copyright (c) 2008 Sun Microsystems, Inc. | ||||||
|  |  *  Written by Ricardo Correia <Ricardo.M.Correia@Sun.COM> | ||||||
|  |  * | ||||||
|  |  *  This file is part of the SPL, Solaris Porting Layer. | ||||||
|  |  * | ||||||
|  |  *  The SPL is free software; you can redistribute it and/or modify it | ||||||
|  |  *  under the terms of the GNU General Public License as published by the | ||||||
|  |  *  Free Software Foundation; either version 2 of the License, or (at your | ||||||
|  |  *  option) any later version. | ||||||
|  |  * | ||||||
|  |  *  The SPL is distributed in the hope that it will be useful, but WITHOUT | ||||||
|  |  *  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||||||
|  |  *  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License | ||||||
|  |  *  for more details. | ||||||
|  |  * | ||||||
|  |  *  You should have received a copy of the GNU General Public License along | ||||||
|  |  *  with the SPL.  If not, see <http://www.gnu.org/licenses/>.
 | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifndef _SPL_RPC_TYPES_H | ||||||
|  | #define	_SPL_RPC_TYPES_H | ||||||
|  | 
 | ||||||
|  | #include <sys/types.h> | ||||||
|  | 
 | ||||||
|  | /* Just enough to support rpc/xdr.h */ | ||||||
|  | 
 | ||||||
|  | typedef int bool_t; | ||||||
|  | 
 | ||||||
|  | #endif /* SPL_RPC_TYPES_H */ | ||||||
| @ -23,8 +23,6 @@ | |||||||
| 
 | 
 | ||||||
| #include <sys/types.h> | #include <sys/types.h> | ||||||
| 
 | 
 | ||||||
| typedef int bool_t; |  | ||||||
| 
 |  | ||||||
| /*
 | /*
 | ||||||
|  * XDR enums and types. |  * XDR enums and types. | ||||||
|  */ |  */ | ||||||
|  | |||||||
| @ -41,6 +41,7 @@ | |||||||
| #include <sys/types.h> | #include <sys/types.h> | ||||||
| #include <sys/param.h> | #include <sys/param.h> | ||||||
| #include <sys/string.h> | #include <sys/string.h> | ||||||
|  | #include <rpc/types.h> | ||||||
| #include <rpc/xdr.h> | #include <rpc/xdr.h> | ||||||
| #include <sys/mod.h> | #include <sys/mod.h> | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -25,6 +25,7 @@ | |||||||
| #include <sys/debug.h> | #include <sys/debug.h> | ||||||
| #include <sys/types.h> | #include <sys/types.h> | ||||||
| #include <sys/sysmacros.h> | #include <sys/sysmacros.h> | ||||||
|  | #include <rpc/types.h> | ||||||
| #include <rpc/xdr.h> | #include <rpc/xdr.h> | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Rob N
						Rob N