staging/lustre: clean up and remove libcfs/linux/linux-fs.c
filp_user_write() is open coded in libcfs_kkuc_msg_put(). All other functions/macros have no user at all. So we can remove the file. Signed-off-by: Peng Tao <tao.peng@emc.com> Signed-off-by: Andreas Dilger <andreas.dilger@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
69d193889d
commit
7d5ed06b2b
|
@ -213,35 +213,6 @@ void cfs_stack_trace_fill(struct cfs_stack_trace *trace);
|
||||||
*/
|
*/
|
||||||
void *cfs_stack_trace_frame(struct cfs_stack_trace *trace, int frame_no);
|
void *cfs_stack_trace_frame(struct cfs_stack_trace *trace, int frame_no);
|
||||||
|
|
||||||
#ifndef O_NOACCESS
|
|
||||||
#define O_NOACCESS O_NONBLOCK
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Universal open flags.
|
|
||||||
*/
|
|
||||||
#define CFS_O_NOACCESS 0003
|
|
||||||
#define CFS_O_ACCMODE CFS_O_NOACCESS
|
|
||||||
#define CFS_O_CREAT 0100
|
|
||||||
#define CFS_O_EXCL 0200
|
|
||||||
#define CFS_O_NOCTTY 0400
|
|
||||||
#define CFS_O_TRUNC 01000
|
|
||||||
#define CFS_O_APPEND 02000
|
|
||||||
#define CFS_O_NONBLOCK 04000
|
|
||||||
#define CFS_O_NDELAY CFS_O_NONBLOCK
|
|
||||||
#define CFS_O_SYNC 010000
|
|
||||||
#define CFS_O_ASYNC 020000
|
|
||||||
#define CFS_O_DIRECT 040000
|
|
||||||
#define CFS_O_LARGEFILE 0100000
|
|
||||||
#define CFS_O_DIRECTORY 0200000
|
|
||||||
#define CFS_O_NOFOLLOW 0400000
|
|
||||||
#define CFS_O_NOATIME 01000000
|
|
||||||
|
|
||||||
/* convert local open flags to universal open flags */
|
|
||||||
int cfs_oflags2univ(int flags);
|
|
||||||
/* convert universal open flags to local open flags */
|
|
||||||
int cfs_univ2oflags(int flags);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Random number handling
|
* Random number handling
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -78,9 +78,6 @@
|
||||||
#define flock_end(fl) ((fl)->fl_end)
|
#define flock_end(fl) ((fl)->fl_end)
|
||||||
#define flock_set_end(fl, end) do { (fl)->fl_end = (end); } while (0)
|
#define flock_set_end(fl, end) do { (fl)->fl_end = (end); } while (0)
|
||||||
|
|
||||||
ssize_t filp_user_write(struct file *filp, const void *buf, size_t count,
|
|
||||||
loff_t *offset);
|
|
||||||
|
|
||||||
#ifndef IFSHIFT
|
#ifndef IFSHIFT
|
||||||
#define IFSHIFT 12
|
#define IFSHIFT 12
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -2,7 +2,7 @@ obj-$(CONFIG_LUSTRE_FS) += libcfs.o
|
||||||
|
|
||||||
libcfs-linux-objs := linux-tracefile.o linux-debug.o
|
libcfs-linux-objs := linux-tracefile.o linux-debug.o
|
||||||
libcfs-linux-objs += linux-prim.o linux-mem.o linux-cpu.o
|
libcfs-linux-objs += linux-prim.o linux-mem.o linux-cpu.o
|
||||||
libcfs-linux-objs += linux-fs.o linux-sync.o linux-tcpip.o
|
libcfs-linux-objs += linux-sync.o linux-tcpip.o
|
||||||
libcfs-linux-objs += linux-proc.o linux-curproc.o
|
libcfs-linux-objs += linux-proc.o linux-curproc.o
|
||||||
libcfs-linux-objs += linux-utils.o linux-module.o
|
libcfs-linux-objs += linux-utils.o linux-module.o
|
||||||
libcfs-linux-objs += linux-crypto.o linux-crypto-crc32.o
|
libcfs-linux-objs += linux-crypto.o linux-crypto-crc32.o
|
||||||
|
|
|
@ -155,6 +155,9 @@ int libcfs_ukuc_msg_get(lustre_kernelcomm *link, char *buf, int maxsize,
|
||||||
int libcfs_kkuc_msg_put(struct file *filp, void *payload)
|
int libcfs_kkuc_msg_put(struct file *filp, void *payload)
|
||||||
{
|
{
|
||||||
struct kuc_hdr *kuch = (struct kuc_hdr *)payload;
|
struct kuc_hdr *kuch = (struct kuc_hdr *)payload;
|
||||||
|
ssize_t count = kuch->kuc_msglen;
|
||||||
|
loff_t offset = 0;
|
||||||
|
mm_segment_t fs;
|
||||||
int rc = -ENOSYS;
|
int rc = -ENOSYS;
|
||||||
|
|
||||||
if (filp == NULL || IS_ERR(filp))
|
if (filp == NULL || IS_ERR(filp))
|
||||||
|
@ -165,11 +168,18 @@ int libcfs_kkuc_msg_put(struct file *filp, void *payload)
|
||||||
return -ENOSYS;
|
return -ENOSYS;
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
fs = get_fs();
|
||||||
loff_t offset = 0;
|
set_fs(KERNEL_DS);
|
||||||
rc = filp_user_write(filp, payload, kuch->kuc_msglen,
|
while ((ssize_t)count > 0) {
|
||||||
&offset);
|
rc = vfs_write(filp, (const void __user *)payload,
|
||||||
|
count, &offset);
|
||||||
|
if (rc < 0)
|
||||||
|
break;
|
||||||
|
count -= rc;
|
||||||
|
payload += rc;
|
||||||
|
rc = 0;
|
||||||
}
|
}
|
||||||
|
set_fs(fs);
|
||||||
|
|
||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
CWARN("message send failed (%d)\n", rc);
|
CWARN("message send failed (%d)\n", rc);
|
||||||
|
|
|
@ -1,113 +0,0 @@
|
||||||
/*
|
|
||||||
* GPL HEADER START
|
|
||||||
*
|
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License version 2 only,
|
|
||||||
* as published by the Free Software Foundation.
|
|
||||||
*
|
|
||||||
* This program 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 version 2 for more details (a copy is included
|
|
||||||
* in the LICENSE file that accompanied this code).
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* version 2 along with this program; If not, see
|
|
||||||
* http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
|
|
||||||
*
|
|
||||||
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
|
||||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
|
||||||
* have any questions.
|
|
||||||
*
|
|
||||||
* GPL HEADER END
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
|
|
||||||
* Use is subject to license terms.
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
* This file is part of Lustre, http://www.lustre.org/
|
|
||||||
* Lustre is a trademark of Sun Microsystems, Inc.
|
|
||||||
*/
|
|
||||||
|
|
||||||
# define DEBUG_SUBSYSTEM S_LNET
|
|
||||||
|
|
||||||
#include <linux/fs.h>
|
|
||||||
#include <linux/kdev_t.h>
|
|
||||||
#include <linux/ctype.h>
|
|
||||||
#include <asm/uaccess.h>
|
|
||||||
|
|
||||||
#include <linux/libcfs/libcfs.h>
|
|
||||||
|
|
||||||
/* write a userspace buffer to disk.
|
|
||||||
* NOTE: this returns 0 on success, not the number of bytes written. */
|
|
||||||
ssize_t
|
|
||||||
filp_user_write(struct file *filp, const void *buf, size_t count,
|
|
||||||
loff_t *offset)
|
|
||||||
{
|
|
||||||
mm_segment_t fs;
|
|
||||||
ssize_t size = 0;
|
|
||||||
|
|
||||||
fs = get_fs();
|
|
||||||
set_fs(KERNEL_DS);
|
|
||||||
while ((ssize_t)count > 0) {
|
|
||||||
size = vfs_write(filp, (const void __user *)buf, count, offset);
|
|
||||||
if (size < 0)
|
|
||||||
break;
|
|
||||||
count -= size;
|
|
||||||
buf += size;
|
|
||||||
size = 0;
|
|
||||||
}
|
|
||||||
set_fs(fs);
|
|
||||||
|
|
||||||
return size;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(filp_user_write);
|
|
||||||
|
|
||||||
#if !(CFS_O_CREAT == O_CREAT && CFS_O_EXCL == O_EXCL && \
|
|
||||||
CFS_O_NOACCESS == O_NOACCESS &&\
|
|
||||||
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_NOACCESS;
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
|
|
||||||
int cfs_oflags2univ(int flags)
|
|
||||||
{
|
|
||||||
return (flags);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
EXPORT_SYMBOL(cfs_oflags2univ);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* XXX Liang: we don't need cfs_univ2oflags() now.
|
|
||||||
*/
|
|
||||||
int cfs_univ2oflags(int flags)
|
|
||||||
{
|
|
||||||
return (flags);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(cfs_univ2oflags);
|
|
|
@ -199,7 +199,7 @@ static __u64 mds_pack_open_flags(__u32 flags, __u32 mode)
|
||||||
if (flags & O_LOV_DELAY_CREATE)
|
if (flags & O_LOV_DELAY_CREATE)
|
||||||
cr_flags |= MDS_OPEN_DELAY_CREATE;
|
cr_flags |= MDS_OPEN_DELAY_CREATE;
|
||||||
|
|
||||||
if ((flags & O_NOACCESS) || (flags & O_NONBLOCK))
|
if (flags & O_NONBLOCK)
|
||||||
cr_flags |= MDS_OPEN_NORESTORE;
|
cr_flags |= MDS_OPEN_NORESTORE;
|
||||||
|
|
||||||
return cr_flags;
|
return cr_flags;
|
||||||
|
|
Loading…
Reference in New Issue