4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 only,
8 * as published by the Free Software Foundation.
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * General Public License version 2 for more details (a copy is included
14 * in the LICENSE file that accompanied this code).
16 * You should have received a copy of the GNU General Public License
17 * version 2 along with this program; If not, see
18 * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
20 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
21 * CA 95054 USA or visit www.sun.com if you need additional information or
27 * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
28 * Use is subject to license terms.
30 * Copyright (c) 2012, 2013, Intel Corporation.
33 * This file is part of Lustre, http://www.lustre.org/
34 * Lustre is a trademark of Sun Microsystems, Inc.
36 * lustre/include/linux/lustre_fsfilt.h
38 * Filesystem interface helper.
41 #ifndef _LINUX_LUSTRE_FSFILT_H
42 #define _LINUX_LUSTRE_FSFILT_H
44 #ifndef _LUSTRE_FSFILT_H
45 #error Do not #include this file directly. #include <lustre_fsfilt.h> instead
51 #include <obd_class.h>
53 struct fsfilt_operations {
55 cfs_module_t *fs_owner;
57 int (* fs_map_inode_pages)(struct inode *inode, struct page **page,
58 int pages, unsigned long *blocks,
59 int create, struct mutex *sem);
62 extern int fsfilt_register_ops(struct fsfilt_operations *fs_ops);
63 extern void fsfilt_unregister_ops(struct fsfilt_operations *fs_ops);
64 extern struct fsfilt_operations *fsfilt_get_ops(const char *type);
65 extern void fsfilt_put_ops(struct fsfilt_operations *fs_ops);
67 #define __fsfilt_check_slow(obd, start, msg) \
69 if (cfs_time_before(jiffies, start + 15 * CFS_HZ)) \
71 else if (cfs_time_before(jiffies, start + 30 * CFS_HZ)) \
72 CDEBUG(D_VFSTRACE, "%s: slow %s %lus\n", obd->obd_name, \
73 msg, (jiffies-start) / CFS_HZ); \
74 else if (cfs_time_before(jiffies, start + DISK_TIMEOUT * CFS_HZ)) \
75 CWARN("%s: slow %s %lus\n", obd->obd_name, msg, \
76 (jiffies - start) / CFS_HZ); \
78 CERROR("%s: slow %s %lus\n", obd->obd_name, msg, \
79 (jiffies - start) / CFS_HZ); \
82 #define fsfilt_check_slow(obd, start, msg) \
84 __fsfilt_check_slow(obd, start, msg); \
88 #endif /* __KERNEL__ */