X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Finclude%2Flinux%2Flustre_lite.h;h=6087969a888fc434b79e9f2048efacc2a4f853e8;hp=56a05f907e14c817bb2ded776257a97dac17544e;hb=07c6f609d37878ce0d308a129a0f3ae967d6197b;hpb=e5498ceb60c53d3406caa7f5cda97f686fd5879a diff --git a/lustre/include/linux/lustre_lite.h b/lustre/include/linux/lustre_lite.h index 56a05f9..6087969 100644 --- a/lustre/include/linux/lustre_lite.h +++ b/lustre/include/linux/lustre_lite.h @@ -1,171 +1,133 @@ /* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- * vim:expandtab:shiftwidth=8:tabstop=8: * - * lustre lite cluster file system - * - * This code is issued under the GNU General Public License. - * See the file COPYING in this distribution - * - * Copyright (C) 2002 Cluster File Systems, Inc. + * 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) 2002, 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. */ - +#ifndef _LINUX_LL_H +#define _LINUX_LL_H #ifndef _LL_H -#define _LL_H +#error Do not #include this file directly. #include instead +#endif + +#ifdef __KERNEL__ + +#include + +#include #include -#include - -#include -#include -#include -#include - -extern kmem_cache_t *ll_file_data_slab; -struct ll_file_data { - __u64 fd_mdshandle; - struct ptlrpc_request *fd_req; - __u32 fd_flags; -}; +#include +#include +#include +#include +#include -struct ll_read_inode2_cookie { - struct mds_body *lic_body; - struct lov_mds_md *lic_lmm; -}; +#include +#include +#include -#define LL_IOC_GETFLAGS _IOR ('f', 151, long) -#define LL_IOC_SETFLAGS _IOW ('f', 152, long) -#define LL_IOC_CLRFLAGS _IOW ('f', 153, long) +#ifdef HAVE_PERCPU_COUNTER +#include -#define LL_FILE_IGNORE_LOCK 0x00000001 +typedef struct percpu_counter lcounter_t; -#define LL_INLINESZ 60 -struct ll_inode_info { - struct lov_stripe_md *lli_smd; - char *lli_symlink_name; - struct lustre_handle lli_intent_lock_handle; - struct semaphore lli_open_sem; -}; +#define lcounter_read(counter) (int)percpu_counter_read(counter) +#define lcounter_inc(counter) percpu_counter_inc(counter) +#define lcounter_dec(counter) percpu_counter_dec(counter) -#define LL_SUPER_MAGIC 0x0BD00BD0 - -#define LL_COMMITCBD_STOPPING 0x1 -#define LL_COMMITCBD_STOPPED 0x2 -#define LL_COMMITCBD_RUNNING 0x4 - -#define LL_SBI_NOLCK 0x1 - -struct ll_sb_info { - obd_uuid_t ll_sb_uuid; - struct lustre_handle ll_mdc_conn; - struct lustre_handle ll_osc_conn; - obd_id ll_rootino; /* number of root inode */ - - int ll_flags; - wait_queue_head_t ll_commitcbd_waitq; - wait_queue_head_t ll_commitcbd_ctl_waitq; - int ll_commitcbd_flags; - struct task_struct *ll_commitcbd_thread; - time_t ll_commitcbd_waketime; - time_t ll_commitcbd_timeout; - spinlock_t ll_commitcbd_lock; -}; +#ifdef HAVE_PERCPU_2ND_ARG +# define lcounter_init(counter) percpu_counter_init(counter, 0) +#else +# define lcounter_init(counter) percpu_counter_init(counter) +#endif +#define lcounter_destroy(counter) percpu_counter_destroy(counter) + +#else +typedef struct { cfs_atomic_t count; } lcounter_t; + +#define lcounter_read(counter) cfs_atomic_read(&counter->count) +#define lcounter_inc(counter) cfs_atomic_inc(&counter->count) +#define lcounter_dec(counter) cfs_atomic_dec(&counter->count) +#define lcounter_init(counter) cfs_atomic_set(&counter->count, 0) +#define lcounter_destroy(counter) + +#endif /* if defined HAVE_PERCPU_COUNTER */ + +/* lprocfs.c */ +enum { + LPROC_LL_DIRTY_HITS = 0, + LPROC_LL_DIRTY_MISSES, + LPROC_LL_WB_WRITEPAGE, + LPROC_LL_WB_PRESSURE, + LPROC_LL_WB_OK, + LPROC_LL_WB_FAIL, + LPROC_LL_READ_BYTES, + LPROC_LL_WRITE_BYTES, + LPROC_LL_BRW_READ, + LPROC_LL_BRW_WRITE, + LPROC_LL_OSC_READ, + LPROC_LL_OSC_WRITE, + LPROC_LL_IOCTL, + LPROC_LL_OPEN, + LPROC_LL_RELEASE, + LPROC_LL_MAP, + LPROC_LL_LLSEEK, + LPROC_LL_FSYNC, + LPROC_LL_SETATTR, + LPROC_LL_TRUNC, + LPROC_LL_LOCKLESS_TRUNC, + LPROC_LL_FLOCK, + LPROC_LL_GETATTR, + LPROC_LL_STAFS, + LPROC_LL_ALLOC_INODE, + LPROC_LL_SETXATTR, + LPROC_LL_GETXATTR, + LPROC_LL_LISTXATTR, + LPROC_LL_REMOVEXATTR, + LPROC_LL_INODE_PERM, + LPROC_LL_DIRECT_READ, + LPROC_LL_DIRECT_WRITE, + LPROC_LL_LOCKLESS_READ, + LPROC_LL_LOCKLESS_WRITE, + LPROC_LL_FILE_OPCODES +}; -static inline struct ll_sb_info *ll_s2sbi(struct super_block *sb) -{ - return (struct ll_sb_info *)(sb->u.generic_sbp); -} - -static inline struct lustre_handle *ll_s2obdconn(struct super_block *sb) -{ - return &(ll_s2sbi(sb))->ll_osc_conn; -} - -static inline struct client_obd *sbi2mdc(struct ll_sb_info *sbi) -{ - struct obd_device *obd = class_conn2obd(&sbi->ll_mdc_conn); - if (obd == NULL) - LBUG(); - return &obd->u.cli; -} - -static inline struct ll_sb_info *ll_i2sbi(struct inode *inode) -{ - return ll_s2sbi(inode->i_sb); -} - -static inline struct ll_inode_info *ll_i2info(struct inode *inode) -{ - return (struct ll_inode_info *)&(inode->u.generic_ip); -} - -static inline struct lustre_handle *ll_i2obdconn(struct inode *inode) -{ - return ll_s2obdconn(inode->i_sb); -} - -static inline void ll_ino2fid(struct ll_fid *fid, obd_id ino, __u32 generation, - int type) -{ - fid->id = ino; - fid->generation = generation; - fid->f_type = type; -} - -static inline void ll_inode2fid(struct ll_fid *fid, struct inode *inode) -{ - ll_ino2fid(fid, inode->i_ino, inode->i_generation, - inode->i_mode & S_IFMT); -} - -static inline int ll_mds_easize(struct super_block *sb) -{ - return sbi2mdc(ll_s2sbi(sb))->cl_max_mds_easize; -} - -static inline int ll_ost_easize(struct super_block *sb) -{ - return sbi2mdc(ll_s2sbi(sb))->cl_max_ost_easize; -} - -/* namei.c */ -int ll_lock(struct inode *dir, struct dentry *dentry, - struct lookup_intent *it, struct lustre_handle *lockh); -int ll_unlock(__u32 mode, struct lustre_handle *lockh); - -/* dcache.c */ -void ll_intent_release(struct dentry *de); - -/* dir.c */ -extern struct file_operations ll_dir_operations; -extern struct inode_operations ll_dir_inode_operations; - -/* file.c */ -extern struct file_operations ll_file_operations; -extern struct inode_operations ll_file_inode_operations; -struct ldlm_lock; -int ll_lock_callback(struct ldlm_lock *, struct ldlm_lock_desc *, void *data, - __u32 data_len, int flag); -int ll_size_lock(struct inode *, struct lov_stripe_md *, __u64 start, int mode, - struct lustre_handle **); -int ll_size_unlock(struct inode *, struct lov_stripe_md *, int mode, - struct lustre_handle *); -int ll_file_size(struct inode *inode, struct lov_stripe_md *md); - -/* rw.c */ -struct page *ll_getpage(struct inode *inode, unsigned long offset, - int create, int locked); -void ll_truncate(struct inode *inode); - -/* symlink.c */ -extern struct inode_operations ll_fast_symlink_inode_operations; -extern struct inode_operations ll_symlink_inode_operations; - -/* sysctl.c */ -void ll_sysctl_init(void); -void ll_sysctl_clean(void); +#else +#include +#endif /* __KERNEL__ */ #endif