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

📄 linux-fs.c

📁 非常经典的一个分布式系统
💻 C
字号:
# define DEBUG_SUBSYSTEM S_LNET#include <linux/fs.h>#include <linux/kdev_t.h>#include <linux/ctype.h>#include <asm/uaccess.h>#include <libcfs/libcfs.h>cfs_file_t *cfs_filp_open (const char *name, int flags, int mode, int *err){	/* XXX	 * Maybe we need to handle flags and mode in the future	 */	cfs_file_t	*filp = NULL;	filp = filp_open(name, flags, mode);	if (IS_ERR(filp)) {		int rc;		rc = PTR_ERR(filp);		printk(KERN_ERR "LustreError: can't open %s file: err %d\n",				name, rc);		if (err)			*err = rc;		filp = NULL;	}	return filp;}/* write a userspace buffer to disk. * NOTE: this returns 0 on success, not the number of bytes written. */ssize_tcfs_user_write (cfs_file_t *filp, const char *buf, size_t count, loff_t *offset){	mm_segment_t fs;	ssize_t size = 0;	fs = get_fs();	set_fs(KERNEL_DS);	while (count > 0) {		size = filp->f_op->write(filp, (char *)buf, count, offset);		if (size < 0)			break;		count -= size;		size = 0;	}	set_fs(fs);	return size;}#if !(CFS_O_CREAT == O_CREAT && CFS_O_EXCL == O_EXCL &&	\     CFS_O_TRUNC == O_TRUNC && CFS_O_APPEND == O_APPEND &&\     CFS_O_NONBLOCK == O_NONBLOCK && CFS_O_NDELAY == O_NDELAY &&\     CFS_O_SYNC == O_SYNC && CFS_O_ASYNC == FASYNC &&\     CFS_O_DIRECT == O_DIRECT && CFS_O_LARGEFILE == O_LARGEFILE &&\     CFS_O_DIRECTORY == O_DIRECTORY && CFS_O_NOFOLLOW == O_NOFOLLOW)int cfs_oflags2univ(int flags){	int f; 		f = flags & O_ACCMODE;	f |= (flags & O_CREAT) ? CFS_O_CREAT: 0;	f |= (flags & O_EXCL) ? CFS_O_EXCL: 0;	f |= (flags & O_NOCTTY) ? CFS_O_NOCTTY: 0;	f |= (flags & O_TRUNC) ? CFS_O_TRUNC: 0;	f |= (flags & O_APPEND) ? CFS_O_APPEND: 0;	f |= (flags & O_NONBLOCK) ? CFS_O_NONBLOCK: 0;	f |= (flags & O_SYNC)? CFS_O_SYNC: 0;	f |= (flags & FASYNC)? CFS_O_ASYNC: 0;	f |= (flags & O_DIRECTORY)? CFS_O_DIRECTORY: 0;	f |= (flags & O_DIRECT)? CFS_O_DIRECT: 0;	f |= (flags & O_LARGEFILE)? CFS_O_LARGEFILE: 0;	f |= (flags & O_NOFOLLOW)? CFS_O_NOFOLLOW: 0;	f |= (flags & O_NOATIME)? CFS_O_NOATIME: 0;	return f;}#elseint cfs_oflags2univ(int flags){	return (flags);}#endif/*  * XXX Liang: we don't need cfs_univ2oflags() now. */int cfs_univ2oflags(int flags){	return (flags);}EXPORT_SYMBOL(cfs_filp_open);EXPORT_SYMBOL(cfs_user_write);EXPORT_SYMBOL(cfs_oflags2univ);EXPORT_SYMBOL(cfs_univ2oflags);

⌨️ 快捷键说明

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