⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rw.c

📁 lustre 1.6.5 source code
💻 C
📖 第 1 页 / 共 2 页
字号:
PREPEND(_, SYSIO_INTERFACE_NAME(ireadx))(int fd,					 const struct iovec *iov, 					 size_t iov_count, 					 const struct intnl_xtvec *xtv, 					 size_t xtv_count){	struct file *fil;	int	err;	struct ioctx *ioctx;	SYSIO_INTERFACE_DISPLAY_BLOCK;	SYSIO_INTERFACE_ENTER;	fil = _sysio_fd_find(fd);	if (!fil)		SYSIO_INTERFACE_RETURN(IOID_FAIL, -EBADF);	/* Perform a check on the iov_count and xtv_count */	if ((iov_count == 0) || (xtv_count == 0))		SYSIO_INTERFACE_RETURN(IOID_FAIL, -EINVAL);	err =	    _sysio_iiox(IIOXOP_READ(fil->f_ino),			fil,			iov, iov_count, NULL,			xtv, xtv_count, NULL,			NULL,			&ioctx);	SYSIO_INTERFACE_RETURN(err ? IOID_FAIL : ioctx, err);}#ifdef _LARGEFILE64_SOURCE#undef iread64xsysio_sym_weak_alias(PREPEND(_, SYSIO_INTERFACE_NAME(ireadx)),		     SYSIO_INTERFACE_NAME(iread64x))#endif#ifdef _LARGEFILE64_SOURCEioid_tSYSIO_INTERFACE_NAME(ireadx)(int fd,			     const struct iovec *iov, size_t iov_count,			     const struct xtvec *xtv, size_t xtv_count){	struct file *fil;	struct intnl_xtvec *ixtv, *ixtvent;	size_t	count;	int	err;	struct ioctx *ioctx;	SYSIO_INTERFACE_DISPLAY_BLOCK;	SYSIO_INTERFACE_ENTER;	fil = _sysio_fd_find(fd);	if (!fil)		SYSIO_INTERFACE_RETURN(IOID_FAIL, -EBADF);	/* Perform a check on the iov_count and xtv_count */	if ((iov_count == 0) || (xtv_count == 0))		SYSIO_INTERFACE_RETURN(IOID_FAIL, -EINVAL);	ixtv = ixtvent = malloc(xtv_count * sizeof(struct intnl_xtvec));	if (!ixtv)		SYSIO_INTERFACE_RETURN(IOID_FAIL, -ENOMEM);	count = xtv_count;	while (count--) {		ixtvent->xtv_off = xtv->xtv_off;		ixtvent->xtv_len = xtv->xtv_len;		ixtvent++;		xtv++;	}	err =	    _sysio_iiox(IIOXOP_READ(fil->f_ino),			fil,			iov, iov_count, NULL,			ixtv, xtv_count, free_xtv,			NULL,			&ioctx);	if (err) {		free(ixtv);		SYSIO_INTERFACE_RETURN(IOID_FAIL, err);	}	SYSIO_INTERFACE_RETURN(ioctx, 0);}#else#undef ireadxsysio_sym_weak_alias(PREPEND(_, SYSIO_INTERFACE_NAME(ireadx)),		     SYSIO_INTERFACE_NAME(ireadx))#endifssize_tSYSIO_INTERFACE_NAME(readx)(int fd,			    const struct iovec *iov, size_t iov_count,			    const struct xtvec *xtv, size_t xtv_count){	ioid_t	ioid;	if ((ioid = SYSIO_INTERFACE_NAME(ireadx)(fd, 						 iov, 						 iov_count, 						 xtv, 						 xtv_count)) == IOID_FAIL)		return -1;	return SYSIO_INTERFACE_NAME(iowait)(ioid);}#ifdef _LARGEFILE64_SOURCE#undef iread64xssize_tSYSIO_INTERFACE_NAME(read64x)(int fd,			      const struct iovec *iov, size_t iov_count,			      const struct xtvec64 *xtv, size_t xtv_count){	ioid_t	ioid;	if ((ioid = SYSIO_INTERFACE_NAME(iread64x)(fd, 						   iov, 						   iov_count, 						   xtv, 						   xtv_count)) == IOID_FAIL)		return -1;	return SYSIO_INTERFACE_NAME(iowait)(ioid);}#endif#ifdef notdefintread_list(int fd,	  int mem_list_count,	  char *mem_offsets[],	  int mem_lengths[],	  int file_list_count,	  int64_t file_offsets[],	  int32_t file_lengths[]){	SYSIO_INTERFACE_DISPLAY_BLOCK;	SYSIO_INTERFACE_ENTER;	SYSIO_INTERFACE_RETURN(-1, -ENOSYS);}#endifioid_tSYSIO_INTERFACE_NAME(iwritev)(int fd, 			      const struct iovec *iov, 			      int count){	struct file *fil;	struct intnl_xtvec *xtv;	struct ioctx *ioctx;	int	err;	SYSIO_INTERFACE_DISPLAY_BLOCK;	SYSIO_INTERFACE_ENTER;	fil = _sysio_fd_find(fd);	if (!fil)		SYSIO_INTERFACE_RETURN(IOID_FAIL, -EBADF);	xtv = malloc(sizeof(struct intnl_xtvec));	if (!xtv)		SYSIO_INTERFACE_RETURN(IOID_FAIL, -ENOMEM);	err =	    _sysio_iiov(IIOXOP_WRITE(fil->f_ino),			fil,			iov, count, NULL,			xtv, free_xtv,			&ioctx);	if (err) {		free(xtv);		SYSIO_INTERFACE_RETURN(IOID_FAIL, err);	}	SYSIO_INTERFACE_RETURN(ioctx, 0);}ssize_tSYSIO_INTERFACE_NAME(writev)(int fd, const struct iovec *iov, int count){	struct file *fil;	struct intnl_xtvec xtvector;	struct ioctx *ioctx;	int	err;	ssize_t	cc;	SYSIO_INTERFACE_DISPLAY_BLOCK;	SYSIO_INTERFACE_ENTER;	fil = _sysio_fd_find(fd);	if (!fil)		SYSIO_INTERFACE_RETURN(-1, -EBADF);	err =	    _sysio_iiov(IIOXOP_WRITE(fil->f_ino),			fil,			iov, count, NULL,			&xtvector, NULL,			&ioctx);	if (!err && (cc = _sysio_ioctx_wait(ioctx)) < 0)		err = (int )cc;	SYSIO_INTERFACE_RETURN(err < 0 ? -1 : cc, err);}#ifdef __GLIBC__#undef __writevsysio_sym_weak_alias(SYSIO_INTERFACE_NAME(writev),		     PREPEND(__, SYSIO_INTERFACE_NAME(writev)))#undef __libc_writevsysio_sym_weak_alias(SYSIO_INTERFACE_NAME(writev),		     PREPEND(__, SYSIO_INTERFACE_NAME(libc_writev)))#endifioid_tSYSIO_INTERFACE_NAME(iwrite)(int fd, const void *buf, size_t count){	struct iovec *iov;	struct file *fil;	struct intnl_xtvec *xtv;	struct ioctx *ioctx;	int	err;	SYSIO_INTERFACE_DISPLAY_BLOCK;	SYSIO_INTERFACE_ENTER;	fil = _sysio_fd_find(fd);	if (!fil)		SYSIO_INTERFACE_RETURN(IOID_FAIL, -EBADF);	iov = malloc(sizeof(struct iovec));	if (!iov)		SYSIO_INTERFACE_RETURN(IOID_FAIL, -ENOMEM);	iov->iov_base = (void *)buf;	iov->iov_len = count;	xtv = malloc(sizeof(struct intnl_xtvec));	if (!xtv) {		free(iov);		SYSIO_INTERFACE_RETURN(IOID_FAIL, -ENOMEM);	}	err =	    _sysio_iiov(IIOXOP_WRITE(fil->f_ino),			fil,			iov, 1, free_iov,			xtv, free_xtv,			&ioctx);	if (err) {		free(xtv);		free(iov);		SYSIO_INTERFACE_RETURN(IOID_FAIL, err);	}	SYSIO_INTERFACE_RETURN(ioctx, 0);}ssize_tSYSIO_INTERFACE_NAME(write)(int fd, const void *buf, size_t count){	struct file *fil;	struct iovec iovector;	struct intnl_xtvec xtvector;	int	err;	struct ioctx *ioctx;	ssize_t	cc;	SYSIO_INTERFACE_DISPLAY_BLOCK;	SYSIO_INTERFACE_ENTER;	fil = _sysio_fd_find(fd);	if (!fil)		SYSIO_INTERFACE_RETURN(-1, -EBADF);	iovector.iov_base = (void *)buf;	iovector.iov_len = count;	err =	    _sysio_iiov(IIOXOP_WRITE(fil->f_ino),			fil,			&iovector, 1, NULL,			&xtvector, NULL,			&ioctx);	if (!err && (cc = _sysio_ioctx_wait(ioctx)) < 0)		err = (int )cc;	SYSIO_INTERFACE_RETURN(err < 0 ? -1 : cc, err);}#ifdef __GLIBC__#undef __writesysio_sym_weak_alias(SYSIO_INTERFACE_NAME(write),		     PREPEND(__, SYSIO_INTERFACE_NAME(write)))#undef __libc_writesysio_sym_weak_alias(SYSIO_INTERFACE_NAME(write),		     PREPEND(__, SYSIO_INTERFACE_NAME(libc_write)))#endif static ioid_tPREPEND(_, SYSIO_INTERFACE_NAME(ipwritev))(int fd, 					   const struct iovec *iov, 					   size_t count, 					   _SYSIO_OFF_T offset){	struct file *fil;	struct intnl_xtvec *xtv;	struct ioctx *ioctx;	int	err;	SYSIO_INTERFACE_DISPLAY_BLOCK;	SYSIO_INTERFACE_ENTER;	fil = _sysio_fd_find(fd);	if (!fil)		SYSIO_INTERFACE_RETURN(IOID_FAIL, -EBADF);	xtv = malloc(sizeof(struct intnl_xtvec));	if (!xtv)		SYSIO_INTERFACE_RETURN(IOID_FAIL, -ENOMEM);	err =	    _sysio_ipiov(IIOXOP_WRITE(fil->f_ino),			 fil,			 iov, count, NULL,			 offset,			 xtv, free_xtv,			 &ioctx);	if (err) {		free(xtv);		SYSIO_INTERFACE_RETURN(IOID_FAIL, err);	}	SYSIO_INTERFACE_RETURN(ioctx, 0);}#ifdef _LARGEFILE64_SOURCE#undef ipwrite64vsysio_sym_weak_alias(PREPEND(_, SYSIO_INTERFACE_NAME(ipwritev)),		     SYSIO_INTERFACE_NAME(ipwrite64v))#endifioid_tSYSIO_INTERFACE_NAME(ipwritev)(int fd, 			       const struct iovec *iov, 			       size_t count, 			       off_t offset){	return PREPEND(_, SYSIO_INTERFACE_NAME(ipwritev))(fd, 							  iov, 							  count, 							  offset);}static ssize_tPREPEND(_, SYSIO_INTERFACE_NAME(pwritev))(int fd, 					  const struct iovec *iov, 					  size_t count, 					  _SYSIO_OFF_T offset){	struct file *fil;	struct intnl_xtvec xtvector;	struct ioctx *ioctx;	int	err;	ssize_t	cc;	SYSIO_INTERFACE_DISPLAY_BLOCK;	SYSIO_INTERFACE_ENTER;	fil = _sysio_fd_find(fd);	if (!fil)		SYSIO_INTERFACE_RETURN(-1, -EBADF);	err =	    _sysio_ipiov(IIOXOP_WRITE(fil->f_ino),			 fil,			 iov, count, NULL,			 offset,			 &xtvector, NULL,			 &ioctx);	if (!err && (cc = _sysio_ioctx_wait(ioctx)) < 0)		err = (int )cc;	SYSIO_INTERFACE_RETURN(err ? -1 : cc, err);}#ifdef _LARGEFILE64_SOURCE#undef pwrite64vsysio_sym_weak_alias(PREPEND(_, SYSIO_INTERFACE_NAME(pwritev)),		     SYSIO_INTERFACE_NAME(pwrite64v))#endifssize_tSYSIO_INTERFACE_NAME(pwritev)(int fd, 			      const struct iovec *iov, 			      size_t count, 			      off_t offset){	return PREPEND(_, SYSIO_INTERFACE_NAME(pwritev))(fd, 							 iov, 							 count, 							 offset);}static ioid_tPREPEND(_, SYSIO_INTERFACE_NAME(ipwrite))(int fd, 					  const void *buf, 					  size_t count, 					  _SYSIO_OFF_T offset){	struct file *fil;	struct intnl_xtvec *xtv;	struct iovec *iov;	struct ioctx *ioctx;	int	err;	SYSIO_INTERFACE_DISPLAY_BLOCK;	SYSIO_INTERFACE_ENTER;	fil = _sysio_fd_find(fd);	if (!fil)		SYSIO_INTERFACE_RETURN(IOID_FAIL, -EBADF);	xtv = malloc(sizeof(struct intnl_xtvec));	iov = malloc(sizeof(struct iovec));	if (!(xtv && iov)) {		err = -errno;		goto error;	}	xtv->xtv_off = offset;	iov->iov_base = (void *)buf;	xtv->xtv_len = iov->iov_len = count;	err =	    _sysio_ipiov(IIOXOP_WRITE(fil->f_ino),			 fil,			 iov, 1, free_iov,			 offset,			 xtv, free_xtv,			 &ioctx);error:	if (err) {		if (iov)			free(iov);		if (xtv)			free(xtv);		SYSIO_INTERFACE_RETURN(IOID_FAIL, err);	}	SYSIO_INTERFACE_RETURN(ioctx, 0);}#ifdef _LARGEFILE64_SOURCE#undef ipwrite64sysio_sym_weak_alias(PREPEND(_, SYSIO_INTERFACE_NAME(ipwrite)),		     SYSIO_INTERFACE_NAME(ipwrite64))#endifioid_tSYSIO_INTERFACE_NAME(ipwrite)(int fd, 			      const void *buf, 			      size_t count, 			      off_t offset){	return PREPEND(_, SYSIO_INTERFACE_NAME(ipwrite))(fd, 						 	 buf, 						 	 count, 							 offset);}ssize_tPREPEND(_, SYSIO_INTERFACE_NAME(pwrite))(int fd, 					 const void *buf, 					 size_t count, 					 _SYSIO_OFF_T offset){	struct file *fil;	struct intnl_xtvec xtvec;	struct iovec iovec;	struct ioctx *ioctx;	int	err;	ssize_t	cc;	SYSIO_INTERFACE_DISPLAY_BLOCK;	SYSIO_INTERFACE_ENTER;	fil = _sysio_fd_find(fd);	if (!fil)		SYSIO_INTERFACE_RETURN(-1, -EBADF);	xtvec.xtv_off = offset;	iovec.iov_base = (void *)buf;	xtvec.xtv_len = iovec.iov_len = count;	err =	    _sysio_ipiov(IIOXOP_WRITE(fil->f_ino),			 fil,			 &iovec, 1, NULL,			 offset,			 &xtvec, NULL,			 &ioctx);	if (!err && (cc = _sysio_ioctx_wait(ioctx)) < 0)		err = (int )cc;	SYSIO_INTERFACE_RETURN(err ? -1 : cc, err);}#ifdef _LARGEFILE64_SOURCE#undef pwrite64sysio_sym_weak_alias(PREPEND(_, SYSIO_INTERFACE_NAME(pwrite)),		     SYSIO_INTERFACE_NAME(pwrite64))#ifdef __GLIBC#undef __pwrite64sysio_sym_weak_alias(PREPEND(_, SYSIO_INTERFACE_NAME(pwrite)),		     PREPEND(__, SYSIO_INTERFACE_NAME(pwrite64)))#undef __libc_pwrite64sysio_sym_weak_alias(PREPEND(_, SYSIO_INTERFACE_NAME(pwrite)),		     PREPEND(__, SYSIO_INTERFACE_NAME(libc_pwrite64)))#endif#endifssize_tSYSIO_INTERFACE_NAME(pwrite)(int fd, 			     const void *buf, 			     size_t count, 			     off_t offset){	return PREPEND(_, SYSIO_INTERFACE_NAME(pwrite))(fd, 						        buf, 						        count, 						        offset);}#ifdef __GLIBC#undef __libc_pwritesysio_sym_weak_alias(SYSIO_INTERFACE_NAME(pwrite), __libc_pwrite)		     PREPEND(__, SYSIO_INTERFACE_NAME(libc_pwrite)))#endifstatic ioid_tPREPEND(_, SYSIO_INTERFACE_NAME(iwritex))(int fd,	 				  const struct iovec *iov, 					  size_t iov_count, 					  const struct intnl_xtvec *xtv, 					  size_t xtv_count){	struct file *fil;	int	err;	struct ioctx *ioctx;	SYSIO_INTERFACE_DISPLAY_BLOCK;	SYSIO_INTERFACE_ENTER;	fil = _sysio_fd_find(fd);	if (!(fil && xtv_count))		SYSIO_INTERFACE_RETURN(IOID_FAIL, -EBADF);	err =	    _sysio_iiox(IIOXOP_WRITE(fil->f_ino),			fil,			iov, iov_count, NULL,			xtv, xtv_count, NULL,			NULL,			&ioctx);	SYSIO_INTERFACE_RETURN(err ? IOID_FAIL : ioctx, err);}#ifdef _LARGEFILE64_SOURCE#undef iwrite64xsysio_sym_weak_alias(PREPEND(_, SYSIO_INTERFACE_NAME(iwritex)),		     SYSIO_INTERFACE_NAME(iwrite64x))#endif#ifdef _LARGEFILE64_SOURCEioid_tSYSIO_INTERFACE_NAME(iwritex)(int fd,			      const struct iovec *iov, size_t iov_count,			      const struct xtvec *xtv, size_t xtv_count){	struct file *fil;	struct intnl_xtvec *ixtv, *ixtvent;	size_t	count;	int	err;	struct ioctx *ioctx;	SYSIO_INTERFACE_DISPLAY_BLOCK;	SYSIO_INTERFACE_ENTER;	fil = _sysio_fd_find(fd);	if (!fil)		SYSIO_INTERFACE_RETURN(IOID_FAIL, -EBADF);	/* Perform a check on the iov_count and xtv_count */	if ((iov_count == 0) || (xtv_count == 0))		SYSIO_INTERFACE_RETURN(IOID_FAIL, -EINVAL);	ixtv = ixtvent = malloc(xtv_count * sizeof(struct intnl_xtvec));	if (!ixtv)		SYSIO_INTERFACE_RETURN(IOID_FAIL, -ENOMEM);	count = xtv_count;	while (count--) {		ixtvent->xtv_off = xtv->xtv_off;		ixtvent->xtv_len = xtv->xtv_len;		ixtvent++;		xtv++;	}	err =	    _sysio_iiox(IIOXOP_WRITE(fil->f_ino),			fil,			iov, iov_count, NULL,			ixtv, xtv_count, free_xtv,			NULL,			&ioctx);	if (err) {		free(ixtv);		SYSIO_INTERFACE_RETURN(IOID_FAIL, err);	}	SYSIO_INTERFACE_RETURN(ioctx, 0);}#else#undef iwritexsysio_sym_weak_alias(PREPEND(_, SYSIO_INTERFACE_NAME(iwritex)),		     SYSIO_INTERFACE_NAME(iwritex))#endif#undef writexssize_tSYSIO_INTERFACE_NAME(writex)(int fd,			     const struct iovec *iov, size_t iov_count,			     const struct xtvec *xtv, size_t xtv_count){	ioid_t	ioid;	if ((ioid = 	     SYSIO_INTERFACE_NAME(iwritex)(fd, 				 	   iov, 					   iov_count, 					   xtv, 					   xtv_count)) == IOID_FAIL)		return -1;	return SYSIO_INTERFACE_NAME(iowait)(ioid);}#ifdef _LARGEFILE64_SOURCE#undef write64xssize_tSYSIO_INTERFACE_NAME(write64x)(int fd,	 const struct iovec *iov, size_t iov_count,	 const struct xtvec64 *xtv, size_t xtv_count){	ioid_t	ioid;	if ((ioid = SYSIO_INTERFACE_NAME(iwrite64x)(fd, 		     				    iov, 						    iov_count, 						    xtv, 						    xtv_count)) == IOID_FAIL)		return -1;	return SYSIO_INTERFACE_NAME(iowait)(ioid);}#endif#ifdef notdefintwrite_list(int fd,	   int mem_list_count,	   char *mem_offsets[],	   int mem_lengths[],	   int file_list_count,	   int64_t file_offsets[],	   int32_t file_lengths[]){	SYSIO_INTERFACE_DISPLAY_BLOCK;	SYSIO_INTERFACE_ENTER;	SYSIO_INTERFACE_RETURN(-1, -ENOSYS);}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -