1
2
3
4
5
6
7#ifndef __INCORE_DOT_H__
8#define __INCORE_DOT_H__
9
10#include <linux/fs.h>
11#include <linux/kobject.h>
12#include <linux/workqueue.h>
13#include <linux/dlm.h>
14#include <linux/buffer_head.h>
15#include <linux/rcupdate.h>
16#include <linux/rculist_bl.h>
17#include <linux/completion.h>
18#include <linux/rbtree.h>
19#include <linux/ktime.h>
20#include <linux/percpu.h>
21#include <linux/lockref.h>
22#include <linux/rhashtable.h>
23#include <linux/mutex.h>
24
25#define DIO_WAIT 0x00000010
26#define DIO_METADATA 0x00000020
27
28struct gfs2_log_operations;
29struct gfs2_bufdata;
30struct gfs2_holder;
31struct gfs2_glock;
32struct gfs2_quota_data;
33struct gfs2_trans;
34struct gfs2_jdesc;
35struct gfs2_sbd;
36struct lm_lockops;
37
38typedef void (*gfs2_glop_bh_t) (struct gfs2_glock *gl, unsigned int ret);
39
40struct gfs2_log_header_host {
41 u64 lh_sequence;
42 u32 lh_flags;
43 u32 lh_tail;
44 u32 lh_blkno;
45
46 s64 lh_local_total;
47 s64 lh_local_free;
48 s64 lh_local_dinodes;
49};
50
51
52
53
54
55
56struct gfs2_log_operations {
57 void (*lo_before_commit) (struct gfs2_sbd *sdp, struct gfs2_trans *tr);
58 void (*lo_after_commit) (struct gfs2_sbd *sdp, struct gfs2_trans *tr);
59 void (*lo_before_scan) (struct gfs2_jdesc *jd,
60 struct gfs2_log_header_host *head, int pass);
61 int (*lo_scan_elements) (struct gfs2_jdesc *jd, unsigned int start,
62 struct gfs2_log_descriptor *ld, __be64 *ptr,
63 int pass);
64 void (*lo_after_scan) (struct gfs2_jdesc *jd, int error, int pass);
65 const char *lo_name;
66};
67
68#define GBF_FULL 1
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91struct gfs2_bitmap {
92 struct buffer_head *bi_bh;
93 char *bi_clone;
94 unsigned long bi_flags;
95 u32 bi_offset;
96 u32 bi_start;
97 u32 bi_bytes;
98 u32 bi_blocks;
99};
100
101struct gfs2_rgrpd {
102 struct rb_node rd_node;
103 struct gfs2_glock *rd_gl;
104 u64 rd_addr;
105 u64 rd_data0;
106 u32 rd_length;
107 u32 rd_data;
108 u32 rd_bitbytes;
109 u32 rd_free;
110 u32 rd_requested;
111 u32 rd_reserved;
112 u32 rd_free_clone;
113 u32 rd_dinodes;
114 u64 rd_igeneration;
115 struct gfs2_bitmap *rd_bits;
116 struct gfs2_sbd *rd_sbd;
117 struct gfs2_rgrp_lvb *rd_rgl;
118 u32 rd_last_alloc;
119 u32 rd_flags;
120 u32 rd_extfail_pt;
121#define GFS2_RDF_CHECK 0x10000000
122#define GFS2_RDF_ERROR 0x40000000
123#define GFS2_RDF_PREFERRED 0x80000000
124#define GFS2_RDF_MASK 0xf0000000
125 spinlock_t rd_rsspin;
126 struct mutex rd_mutex;
127 struct rb_root rd_rstree;
128};
129
130enum gfs2_state_bits {
131 BH_Pinned = BH_PrivateStart,
132 BH_Escaped = BH_PrivateStart + 1,
133};
134
135BUFFER_FNS(Pinned, pinned)
136TAS_BUFFER_FNS(Pinned, pinned)
137BUFFER_FNS(Escaped, escaped)
138TAS_BUFFER_FNS(Escaped, escaped)
139
140struct gfs2_bufdata {
141 struct buffer_head *bd_bh;
142 struct gfs2_glock *bd_gl;
143 u64 bd_blkno;
144
145 struct list_head bd_list;
146
147 struct gfs2_trans *bd_tr;
148 struct list_head bd_ail_st_list;
149 struct list_head bd_ail_gl_list;
150};
151
152
153
154
155
156
157#define GDLM_STRNAME_BYTES 25
158#define GDLM_LVB_SIZE 32
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191enum {
192 DFL_BLOCK_LOCKS = 0,
193 DFL_NO_DLM_OPS = 1,
194 DFL_FIRST_MOUNT = 2,
195 DFL_FIRST_MOUNT_DONE = 3,
196 DFL_MOUNT_DONE = 4,
197 DFL_UNMOUNT = 5,
198 DFL_DLM_RECOVERY = 6,
199};
200
201
202
203
204
205struct lm_lockname {
206 u64 ln_number;
207 struct gfs2_sbd *ln_sbd;
208 unsigned int ln_type;
209};
210
211#define lm_name_equal(name1, name2) \
212 (((name1)->ln_number == (name2)->ln_number) && \
213 ((name1)->ln_type == (name2)->ln_type) && \
214 ((name1)->ln_sbd == (name2)->ln_sbd))
215
216
217struct gfs2_glock_operations {
218 int (*go_sync) (struct gfs2_glock *gl);
219 int (*go_xmote_bh)(struct gfs2_glock *gl);
220 void (*go_inval) (struct gfs2_glock *gl, int flags);
221 int (*go_demote_ok) (const struct gfs2_glock *gl);
222 int (*go_instantiate) (struct gfs2_holder *gh);
223 void (*go_dump)(struct seq_file *seq, struct gfs2_glock *gl,
224 const char *fs_id_buf);
225 void (*go_callback)(struct gfs2_glock *gl, bool remote);
226 void (*go_free)(struct gfs2_glock *gl);
227 const int go_subclass;
228 const int go_type;
229 const unsigned long go_flags;
230#define GLOF_ASPACE 1
231#define GLOF_LVB 2
232#define GLOF_LRU 4
233#define GLOF_NONDISK 8
234};
235
236enum {
237 GFS2_LKS_SRTT = 0,
238 GFS2_LKS_SRTTVAR = 1,
239 GFS2_LKS_SRTTB = 2,
240 GFS2_LKS_SRTTVARB = 3,
241 GFS2_LKS_SIRT = 4,
242 GFS2_LKS_SIRTVAR = 5,
243 GFS2_LKS_DCOUNT = 6,
244 GFS2_LKS_QCOUNT = 7,
245 GFS2_NR_LKSTATS
246};
247
248struct gfs2_lkstats {
249 u64 stats[GFS2_NR_LKSTATS];
250};
251
252enum {
253
254 HIF_MAY_DEMOTE = 1,
255 HIF_HOLDER = 6,
256 HIF_WAIT = 10,
257};
258
259struct gfs2_holder {
260 struct list_head gh_list;
261
262 struct gfs2_glock *gh_gl;
263 struct pid *gh_owner_pid;
264 u16 gh_flags;
265 u16 gh_state;
266
267 int gh_error;
268 unsigned long gh_iflags;
269 unsigned long gh_ip;
270};
271
272
273#define GFS2_MAXQUOTAS 2
274
275struct gfs2_qadata {
276
277 struct gfs2_quota_data *qa_qd[2 * GFS2_MAXQUOTAS];
278 struct gfs2_holder qa_qd_ghs[2 * GFS2_MAXQUOTAS];
279 unsigned int qa_qd_num;
280 int qa_ref;
281};
282
283
284
285
286
287
288
289
290
291
292struct gfs2_blkreserv {
293 struct rb_node rs_node;
294 struct gfs2_rgrpd *rs_rgd;
295 u64 rs_start;
296 u32 rs_requested;
297 u32 rs_reserved;
298};
299
300
301
302
303
304
305
306
307
308
309struct gfs2_alloc_parms {
310 u64 target;
311 u32 min_target;
312 u32 aflags;
313 u64 allowed;
314};
315
316enum {
317 GLF_LOCK = 1,
318 GLF_INSTANTIATE_NEEDED = 2,
319 GLF_DEMOTE = 3,
320 GLF_PENDING_DEMOTE = 4,
321 GLF_DEMOTE_IN_PROGRESS = 5,
322 GLF_DIRTY = 6,
323 GLF_LFLUSH = 7,
324 GLF_INVALIDATE_IN_PROGRESS = 8,
325 GLF_REPLY_PENDING = 9,
326 GLF_INITIAL = 10,
327 GLF_FROZEN = 11,
328 GLF_INSTANTIATE_IN_PROG = 12,
329 GLF_LRU = 13,
330 GLF_OBJECT = 14,
331 GLF_BLOCKING = 15,
332 GLF_PENDING_DELETE = 17,
333 GLF_FREEING = 18,
334};
335
336struct gfs2_glock {
337 unsigned long gl_flags;
338 struct lm_lockname gl_name;
339
340 struct lockref gl_lockref;
341
342
343 unsigned int gl_state:2,
344 gl_target:2,
345 gl_demote_state:2,
346 gl_req:2,
347 gl_reply:8;
348
349 unsigned long gl_demote_time;
350 long gl_hold_time;
351 struct list_head gl_holders;
352
353 const struct gfs2_glock_operations *gl_ops;
354 ktime_t gl_dstamp;
355 struct gfs2_lkstats gl_stats;
356 struct dlm_lksb gl_lksb;
357 unsigned long gl_tchange;
358 void *gl_object;
359
360 struct list_head gl_lru;
361 struct list_head gl_ail_list;
362 atomic_t gl_ail_count;
363 atomic_t gl_revokes;
364 struct delayed_work gl_work;
365
366 struct {
367 struct delayed_work gl_delete;
368 u64 gl_no_formal_ino;
369 };
370 struct rcu_head gl_rcu;
371 struct rhash_head gl_node;
372};
373
374enum {
375 GIF_QD_LOCKED = 1,
376 GIF_ALLOC_FAILED = 2,
377 GIF_SW_PAGED = 3,
378 GIF_FREE_VFS_INODE = 5,
379 GIF_GLOP_PENDING = 6,
380 GIF_DEFERRED_DELETE = 7,
381};
382
383struct gfs2_inode {
384 struct inode i_inode;
385 u64 i_no_addr;
386 u64 i_no_formal_ino;
387 u64 i_generation;
388 u64 i_eattr;
389 unsigned long i_flags;
390 struct gfs2_glock *i_gl;
391 struct gfs2_holder i_iopen_gh;
392 struct gfs2_qadata *i_qadata;
393 struct gfs2_holder i_rgd_gh;
394 struct gfs2_blkreserv i_res;
395 u64 i_goal;
396 atomic_t i_sizehint;
397 struct rw_semaphore i_rw_mutex;
398 struct list_head i_ordered;
399 struct list_head i_trunc_list;
400 __be64 *i_hash_cache;
401 u32 i_entries;
402 u32 i_diskflags;
403 u8 i_height;
404 u8 i_depth;
405 u16 i_rahead;
406};
407
408
409
410
411
412static inline struct gfs2_inode *GFS2_I(struct inode *inode)
413{
414 return container_of(inode, struct gfs2_inode, i_inode);
415}
416
417static inline struct gfs2_sbd *GFS2_SB(const struct inode *inode)
418{
419 return inode->i_sb->s_fs_info;
420}
421
422struct gfs2_file {
423 struct mutex f_fl_mutex;
424 struct gfs2_holder f_fl_gh;
425};
426
427struct gfs2_revoke_replay {
428 struct list_head rr_list;
429 u64 rr_blkno;
430 unsigned int rr_where;
431};
432
433enum {
434 QDF_CHANGE = 1,
435 QDF_LOCKED = 2,
436 QDF_REFRESH = 3,
437 QDF_QMSG_QUIET = 4,
438};
439
440struct gfs2_quota_data {
441 struct hlist_bl_node qd_hlist;
442 struct list_head qd_list;
443 struct kqid qd_id;
444 struct gfs2_sbd *qd_sbd;
445 struct lockref qd_lockref;
446 struct list_head qd_lru;
447 unsigned qd_hash;
448
449 unsigned long qd_flags;
450
451 s64 qd_change;
452 s64 qd_change_sync;
453
454 unsigned int qd_slot;
455 unsigned int qd_slot_count;
456
457 struct buffer_head *qd_bh;
458 struct gfs2_quota_change *qd_bh_qc;
459 unsigned int qd_bh_count;
460
461 struct gfs2_glock *qd_gl;
462 struct gfs2_quota_lvb qd_qb;
463
464 u64 qd_sync_gen;
465 unsigned long qd_last_warn;
466 struct rcu_head qd_rcu;
467};
468
469enum {
470 TR_TOUCHED = 1,
471 TR_ATTACHED = 2,
472 TR_ONSTACK = 3,
473};
474
475struct gfs2_trans {
476 unsigned long tr_ip;
477
478 unsigned int tr_blocks;
479 unsigned int tr_revokes;
480 unsigned int tr_reserved;
481 unsigned long tr_flags;
482
483 unsigned int tr_num_buf_new;
484 unsigned int tr_num_databuf_new;
485 unsigned int tr_num_buf_rm;
486 unsigned int tr_num_databuf_rm;
487 unsigned int tr_num_revoke;
488
489 struct list_head tr_list;
490 struct list_head tr_databuf;
491 struct list_head tr_buf;
492
493 unsigned int tr_first;
494 struct list_head tr_ail1_list;
495 struct list_head tr_ail2_list;
496};
497
498struct gfs2_journal_extent {
499 struct list_head list;
500
501 unsigned int lblock;
502 u64 dblock;
503 u64 blocks;
504};
505
506struct gfs2_jdesc {
507 struct list_head jd_list;
508 struct list_head extent_list;
509 unsigned int nr_extents;
510 struct work_struct jd_work;
511 struct inode *jd_inode;
512 struct bio *jd_log_bio;
513 unsigned long jd_flags;
514#define JDF_RECOVERY 1
515 unsigned int jd_jid;
516 u32 jd_blocks;
517 int jd_recover_error;
518
519
520 unsigned int jd_found_blocks;
521 unsigned int jd_found_revokes;
522 unsigned int jd_replayed_blocks;
523
524 struct list_head jd_revoke_list;
525 unsigned int jd_replay_tail;
526
527 u64 jd_no_addr;
528};
529
530struct gfs2_statfs_change_host {
531 s64 sc_total;
532 s64 sc_free;
533 s64 sc_dinodes;
534};
535
536#define GFS2_QUOTA_DEFAULT GFS2_QUOTA_OFF
537#define GFS2_QUOTA_OFF 0
538#define GFS2_QUOTA_ACCOUNT 1
539#define GFS2_QUOTA_ON 2
540
541#define GFS2_DATA_DEFAULT GFS2_DATA_ORDERED
542#define GFS2_DATA_WRITEBACK 1
543#define GFS2_DATA_ORDERED 2
544
545#define GFS2_ERRORS_DEFAULT GFS2_ERRORS_WITHDRAW
546#define GFS2_ERRORS_WITHDRAW 0
547#define GFS2_ERRORS_CONTINUE 1
548#define GFS2_ERRORS_RO 2
549#define GFS2_ERRORS_PANIC 3
550
551struct gfs2_args {
552 char ar_lockproto[GFS2_LOCKNAME_LEN];
553 char ar_locktable[GFS2_LOCKNAME_LEN];
554 char ar_hostdata[GFS2_LOCKNAME_LEN];
555 unsigned int ar_spectator:1;
556 unsigned int ar_localflocks:1;
557 unsigned int ar_debug:1;
558 unsigned int ar_posix_acl:1;
559 unsigned int ar_quota:2;
560 unsigned int ar_suiddir:1;
561 unsigned int ar_data:2;
562 unsigned int ar_meta:1;
563 unsigned int ar_discard:1;
564 unsigned int ar_errors:2;
565 unsigned int ar_nobarrier:1;
566 unsigned int ar_rgrplvb:1;
567 unsigned int ar_got_rgrplvb:1;
568 unsigned int ar_loccookie:1;
569
570 s32 ar_commit;
571 s32 ar_statfs_quantum;
572 s32 ar_quota_quantum;
573 s32 ar_statfs_percent;
574};
575
576struct gfs2_tune {
577 spinlock_t gt_spin;
578
579 unsigned int gt_logd_secs;
580
581 unsigned int gt_quota_warn_period;
582 unsigned int gt_quota_scale_num;
583 unsigned int gt_quota_scale_den;
584 unsigned int gt_quota_quantum;
585 unsigned int gt_new_files_jdata;
586 unsigned int gt_max_readahead;
587 unsigned int gt_complain_secs;
588 unsigned int gt_statfs_quantum;
589 unsigned int gt_statfs_slow;
590};
591
592enum {
593 SDF_JOURNAL_CHECKED = 0,
594 SDF_JOURNAL_LIVE = 1,
595 SDF_WITHDRAWN = 2,
596 SDF_NOBARRIERS = 3,
597 SDF_NORECOVERY = 4,
598 SDF_DEMOTE = 5,
599 SDF_NOJOURNALID = 6,
600 SDF_RORECOVERY = 7,
601 SDF_SKIP_DLM_UNLOCK = 8,
602 SDF_FORCE_AIL_FLUSH = 9,
603 SDF_FS_FROZEN = 10,
604 SDF_WITHDRAWING = 11,
605 SDF_WITHDRAW_IN_PROG = 12,
606 SDF_REMOTE_WITHDRAW = 13,
607 SDF_WITHDRAW_RECOVERY = 14,
608
609};
610
611enum gfs2_freeze_state {
612 SFS_UNFROZEN = 0,
613 SFS_STARTING_FREEZE = 1,
614 SFS_FROZEN = 2,
615};
616
617#define GFS2_FSNAME_LEN 256
618
619struct gfs2_inum_host {
620 u64 no_formal_ino;
621 u64 no_addr;
622};
623
624struct gfs2_sb_host {
625 u32 sb_magic;
626 u32 sb_type;
627
628 u32 sb_fs_format;
629 u32 sb_multihost_format;
630 u32 sb_bsize;
631 u32 sb_bsize_shift;
632
633 struct gfs2_inum_host sb_master_dir;
634 struct gfs2_inum_host sb_root_dir;
635
636 char sb_lockproto[GFS2_LOCKNAME_LEN];
637 char sb_locktable[GFS2_LOCKNAME_LEN];
638};
639
640
641
642
643
644
645
646
647
648
649struct lm_lockstruct {
650 int ls_jid;
651 unsigned int ls_first;
652 const struct lm_lockops *ls_ops;
653 dlm_lockspace_t *ls_dlm;
654
655 int ls_recover_jid_done;
656 int ls_recover_jid_status;
657
658 struct dlm_lksb ls_mounted_lksb;
659 struct dlm_lksb ls_control_lksb;
660 char ls_control_lvb[GDLM_LVB_SIZE];
661 struct completion ls_sync_wait;
662 char *ls_lvb_bits;
663
664 spinlock_t ls_recover_spin;
665 unsigned long ls_recover_flags;
666 uint32_t ls_recover_mount;
667 uint32_t ls_recover_start;
668 uint32_t ls_recover_block;
669 uint32_t ls_recover_size;
670 uint32_t *ls_recover_submit;
671 uint32_t *ls_recover_result;
672};
673
674struct gfs2_pcpu_lkstats {
675
676 struct gfs2_lkstats lkstats[10];
677};
678
679
680struct local_statfs_inode {
681 struct list_head si_list;
682 struct inode *si_sc_inode;
683 unsigned int si_jid;
684};
685
686struct gfs2_sbd {
687 struct super_block *sd_vfs;
688 struct gfs2_pcpu_lkstats __percpu *sd_lkstats;
689 struct kobject sd_kobj;
690 struct completion sd_kobj_unregister;
691 unsigned long sd_flags;
692 struct gfs2_sb_host sd_sb;
693
694
695
696 u32 sd_fsb2bb;
697 u32 sd_fsb2bb_shift;
698 u32 sd_diptrs;
699 u32 sd_inptrs;
700 u32 sd_ldptrs;
701 u32 sd_jbsize;
702 u32 sd_hash_bsize;
703 u32 sd_hash_bsize_shift;
704 u32 sd_hash_ptrs;
705 u32 sd_qc_per_block;
706 u32 sd_blocks_per_bitmap;
707 u32 sd_max_dirres;
708 u32 sd_max_height;
709 u64 sd_heightsize[GFS2_MAX_META_HEIGHT + 1];
710 u32 sd_max_dents_per_leaf;
711
712 struct gfs2_args sd_args;
713 struct gfs2_tune sd_tune;
714
715
716
717 struct lm_lockstruct sd_lockstruct;
718 struct gfs2_holder sd_live_gh;
719 struct gfs2_glock *sd_rename_gl;
720 struct gfs2_glock *sd_freeze_gl;
721 struct work_struct sd_freeze_work;
722 wait_queue_head_t sd_glock_wait;
723 wait_queue_head_t sd_async_glock_wait;
724 atomic_t sd_glock_disposal;
725 struct completion sd_locking_init;
726 struct completion sd_wdack;
727 struct delayed_work sd_control_work;
728
729
730
731 struct dentry *sd_master_dir;
732 struct dentry *sd_root_dir;
733
734 struct inode *sd_jindex;
735 struct inode *sd_statfs_inode;
736 struct inode *sd_sc_inode;
737 struct list_head sd_sc_inodes_list;
738 struct inode *sd_qc_inode;
739 struct inode *sd_rindex;
740 struct inode *sd_quota_inode;
741
742
743
744 spinlock_t sd_statfs_spin;
745 struct gfs2_statfs_change_host sd_statfs_master;
746 struct gfs2_statfs_change_host sd_statfs_local;
747 int sd_statfs_force_sync;
748
749
750
751 int sd_rindex_uptodate;
752 spinlock_t sd_rindex_spin;
753 struct rb_root sd_rindex_tree;
754 unsigned int sd_rgrps;
755 unsigned int sd_max_rg_data;
756
757
758
759 struct list_head sd_jindex_list;
760 spinlock_t sd_jindex_spin;
761 struct mutex sd_jindex_mutex;
762 unsigned int sd_journals;
763
764 struct gfs2_jdesc *sd_jdesc;
765 struct gfs2_holder sd_journal_gh;
766 struct gfs2_holder sd_jinode_gh;
767 struct gfs2_glock *sd_jinode_gl;
768
769 struct gfs2_holder sd_sc_gh;
770 struct buffer_head *sd_sc_bh;
771 struct gfs2_holder sd_qc_gh;
772
773 struct completion sd_journal_ready;
774
775
776
777 struct task_struct *sd_logd_process;
778 struct task_struct *sd_quotad_process;
779
780
781
782 struct list_head sd_quota_list;
783 atomic_t sd_quota_count;
784 struct mutex sd_quota_mutex;
785 struct mutex sd_quota_sync_mutex;
786 wait_queue_head_t sd_quota_wait;
787 struct list_head sd_trunc_list;
788 spinlock_t sd_trunc_lock;
789
790 unsigned int sd_quota_slots;
791 unsigned long *sd_quota_bitmap;
792 spinlock_t sd_bitmap_lock;
793
794 u64 sd_quota_sync_gen;
795
796
797
798 struct address_space sd_aspace;
799
800 spinlock_t sd_log_lock;
801
802 struct gfs2_trans *sd_log_tr;
803 unsigned int sd_log_blks_reserved;
804
805 atomic_t sd_log_pinned;
806 unsigned int sd_log_num_revoke;
807
808 struct list_head sd_log_revokes;
809 struct list_head sd_log_ordered;
810 spinlock_t sd_ordered_lock;
811
812 atomic_t sd_log_thresh1;
813 atomic_t sd_log_thresh2;
814 atomic_t sd_log_blks_free;
815 atomic_t sd_log_blks_needed;
816 atomic_t sd_log_revokes_available;
817 wait_queue_head_t sd_log_waitq;
818 wait_queue_head_t sd_logd_waitq;
819
820 u64 sd_log_sequence;
821 int sd_log_idle;
822
823 struct rw_semaphore sd_log_flush_lock;
824 atomic_t sd_log_in_flight;
825 wait_queue_head_t sd_log_flush_wait;
826 int sd_log_error;
827 wait_queue_head_t sd_withdraw_wait;
828
829 unsigned int sd_log_tail;
830 unsigned int sd_log_flush_tail;
831 unsigned int sd_log_head;
832 unsigned int sd_log_flush_head;
833
834 spinlock_t sd_ail_lock;
835 struct list_head sd_ail1_list;
836 struct list_head sd_ail2_list;
837
838
839 struct gfs2_holder sd_freeze_gh;
840 atomic_t sd_freeze_state;
841 struct mutex sd_freeze_mutex;
842
843 char sd_fsname[GFS2_FSNAME_LEN + 3 * sizeof(int) + 2];
844 char sd_table_name[GFS2_FSNAME_LEN];
845 char sd_proto_name[GFS2_FSNAME_LEN];
846
847
848
849 unsigned long sd_last_warning;
850 struct dentry *debugfs_dir;
851 unsigned long sd_glock_dqs_held;
852};
853
854static inline void gfs2_glstats_inc(struct gfs2_glock *gl, int which)
855{
856 gl->gl_stats.stats[which]++;
857}
858
859static inline void gfs2_sbstats_inc(const struct gfs2_glock *gl, int which)
860{
861 const struct gfs2_sbd *sdp = gl->gl_name.ln_sbd;
862 preempt_disable();
863 this_cpu_ptr(sdp->sd_lkstats)->lkstats[gl->gl_name.ln_type].stats[which]++;
864 preempt_enable();
865}
866
867extern struct gfs2_rgrpd *gfs2_glock2rgrp(struct gfs2_glock *gl);
868
869static inline unsigned gfs2_max_stuffed_size(const struct gfs2_inode *ip)
870{
871 return GFS2_SB(&ip->i_inode)->sd_sb.sb_bsize - sizeof(struct gfs2_dinode);
872}
873
874#endif
875
876