~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/fs/gfs2/util.h

Version: ~ [ linux-5.9-rc5 ] ~ [ linux-5.8.10 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.66 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.146 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.198 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.236 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.236 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.85 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * Copyright (C) Sistina Software, Inc.  1997-2003 All rights reserved.
  3  * Copyright (C) 2004-2006 Red Hat, Inc.  All rights reserved.
  4  *
  5  * This copyrighted material is made available to anyone wishing to use,
  6  * modify, copy, or redistribute it subject to the terms and conditions
  7  * of the GNU General Public License version 2.
  8  */
  9 
 10 #ifndef __UTIL_DOT_H__
 11 #define __UTIL_DOT_H__
 12 
 13 #ifdef pr_fmt
 14 #undef pr_fmt
 15 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 16 #endif
 17 
 18 #include <linux/mempool.h>
 19 
 20 #include "incore.h"
 21 
 22 #define fs_emerg(fs, fmt, ...)                                          \
 23         pr_emerg("fsid=%s: " fmt, (fs)->sd_fsname, ##__VA_ARGS__)
 24 #define fs_warn(fs, fmt, ...)                                           \
 25         pr_warn("fsid=%s: " fmt, (fs)->sd_fsname, ##__VA_ARGS__)
 26 #define fs_err(fs, fmt, ...)                                            \
 27         pr_err("fsid=%s: " fmt, (fs)->sd_fsname, ##__VA_ARGS__)
 28 #define fs_info(fs, fmt, ...)                                           \
 29         pr_info("fsid=%s: " fmt, (fs)->sd_fsname, ##__VA_ARGS__)
 30 
 31 void gfs2_assert_i(struct gfs2_sbd *sdp);
 32 
 33 #define gfs2_assert(sdp, assertion) \
 34 do { \
 35         if (unlikely(!(assertion))) { \
 36                 gfs2_assert_i(sdp); \
 37                 BUG(); \
 38         } \
 39 } while (0)
 40 
 41 
 42 int gfs2_assert_withdraw_i(struct gfs2_sbd *sdp, char *assertion,
 43                            const char *function, char *file, unsigned int line);
 44 
 45 #define gfs2_assert_withdraw(sdp, assertion) \
 46 ((likely(assertion)) ? 0 : gfs2_assert_withdraw_i((sdp), #assertion, \
 47                                         __func__, __FILE__, __LINE__))
 48 
 49 
 50 int gfs2_assert_warn_i(struct gfs2_sbd *sdp, char *assertion,
 51                        const char *function, char *file, unsigned int line);
 52 
 53 #define gfs2_assert_warn(sdp, assertion) \
 54 ((likely(assertion)) ? 0 : gfs2_assert_warn_i((sdp), #assertion, \
 55                                         __func__, __FILE__, __LINE__))
 56 
 57 
 58 int gfs2_consist_i(struct gfs2_sbd *sdp, int cluster_wide,
 59                    const char *function, char *file, unsigned int line);
 60 
 61 #define gfs2_consist(sdp) \
 62 gfs2_consist_i((sdp), 0, __func__, __FILE__, __LINE__)
 63 
 64 
 65 int gfs2_consist_inode_i(struct gfs2_inode *ip, int cluster_wide,
 66                          const char *function, char *file, unsigned int line);
 67 
 68 #define gfs2_consist_inode(ip) \
 69 gfs2_consist_inode_i((ip), 0, __func__, __FILE__, __LINE__)
 70 
 71 
 72 int gfs2_consist_rgrpd_i(struct gfs2_rgrpd *rgd, int cluster_wide,
 73                          const char *function, char *file, unsigned int line);
 74 
 75 #define gfs2_consist_rgrpd(rgd) \
 76 gfs2_consist_rgrpd_i((rgd), 0, __func__, __FILE__, __LINE__)
 77 
 78 
 79 int gfs2_meta_check_ii(struct gfs2_sbd *sdp, struct buffer_head *bh,
 80                        const char *type, const char *function,
 81                        char *file, unsigned int line);
 82 
 83 static inline int gfs2_meta_check(struct gfs2_sbd *sdp,
 84                                     struct buffer_head *bh)
 85 {
 86         struct gfs2_meta_header *mh = (struct gfs2_meta_header *)bh->b_data;
 87         u32 magic = be32_to_cpu(mh->mh_magic);
 88         if (unlikely(magic != GFS2_MAGIC)) {
 89                 pr_err("Magic number missing at %llu\n",
 90                        (unsigned long long)bh->b_blocknr);
 91                 return -EIO;
 92         }
 93         return 0;
 94 }
 95 
 96 int gfs2_metatype_check_ii(struct gfs2_sbd *sdp, struct buffer_head *bh,
 97                            u16 type, u16 t,
 98                            const char *function,
 99                            char *file, unsigned int line);
100 
101 static inline int gfs2_metatype_check_i(struct gfs2_sbd *sdp,
102                                         struct buffer_head *bh,
103                                         u16 type,
104                                         const char *function,
105                                         char *file, unsigned int line)
106 {
107         struct gfs2_meta_header *mh = (struct gfs2_meta_header *)bh->b_data;
108         u32 magic = be32_to_cpu(mh->mh_magic);
109         u16 t = be32_to_cpu(mh->mh_type);
110         if (unlikely(magic != GFS2_MAGIC))
111                 return gfs2_meta_check_ii(sdp, bh, "magic number", function,
112                                           file, line);
113         if (unlikely(t != type))
114                 return gfs2_metatype_check_ii(sdp, bh, type, t, function,
115                                               file, line);
116         return 0;
117 }
118 
119 #define gfs2_metatype_check(sdp, bh, type) \
120 gfs2_metatype_check_i((sdp), (bh), (type), __func__, __FILE__, __LINE__)
121 
122 static inline void gfs2_metatype_set(struct buffer_head *bh, u16 type,
123                                      u16 format)
124 {
125         struct gfs2_meta_header *mh;
126         mh = (struct gfs2_meta_header *)bh->b_data;
127         mh->mh_type = cpu_to_be32(type);
128         mh->mh_format = cpu_to_be32(format);
129 }
130 
131 
132 int gfs2_io_error_i(struct gfs2_sbd *sdp, const char *function,
133                     char *file, unsigned int line);
134 
135 #define gfs2_io_error(sdp) \
136 gfs2_io_error_i((sdp), __func__, __FILE__, __LINE__);
137 
138 
139 int gfs2_io_error_bh_i(struct gfs2_sbd *sdp, struct buffer_head *bh,
140                        const char *function, char *file, unsigned int line);
141 
142 #define gfs2_io_error_bh(sdp, bh) \
143 gfs2_io_error_bh_i((sdp), (bh), __func__, __FILE__, __LINE__);
144 
145 
146 extern struct kmem_cache *gfs2_glock_cachep;
147 extern struct kmem_cache *gfs2_glock_aspace_cachep;
148 extern struct kmem_cache *gfs2_inode_cachep;
149 extern struct kmem_cache *gfs2_bufdata_cachep;
150 extern struct kmem_cache *gfs2_rgrpd_cachep;
151 extern struct kmem_cache *gfs2_quotad_cachep;
152 extern struct kmem_cache *gfs2_qadata_cachep;
153 extern mempool_t *gfs2_page_pool;
154 extern struct workqueue_struct *gfs2_control_wq;
155 
156 static inline unsigned int gfs2_tune_get_i(struct gfs2_tune *gt,
157                                            unsigned int *p)
158 {
159         unsigned int x;
160         spin_lock(&gt->gt_spin);
161         x = *p;
162         spin_unlock(&gt->gt_spin);
163         return x;
164 }
165 
166 #define gfs2_tune_get(sdp, field) \
167 gfs2_tune_get_i(&(sdp)->sd_tune, &(sdp)->sd_tune.field)
168 
169 __printf(2, 3)
170 int gfs2_lm_withdraw(struct gfs2_sbd *sdp, const char *fmt, ...);
171 
172 #endif /* __UTIL_DOT_H__ */
173 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp