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