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

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

Version: ~ [ linux-5.4-rc7 ] ~ [ linux-5.3.11 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.84 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.154 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.201 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.201 ] ~ [ 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.77 ] ~ [ 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-3.9.11 ] ~ [ linux-3.8.13 ] ~ [ linux-3.7.10 ] ~ [ linux-3.6.11 ] ~ [ linux-3.5.7 ] ~ [ linux-3.4.113 ] ~ [ linux-3.3.8 ] ~ [ linux-3.2.102 ] ~ [ linux-3.1.10 ] ~ [ linux-3.0.101 ] ~ [ 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-2008 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 __RGRP_DOT_H__
 11 #define __RGRP_DOT_H__
 12 
 13 #include <linux/slab.h>
 14 #include <linux/uaccess.h>
 15 
 16 /* Since each block in the file system is represented by two bits in the
 17  * bitmap, one 64-bit word in the bitmap will represent 32 blocks.
 18  * By reserving 32 blocks at a time, we can optimize / shortcut how we search
 19  * through the bitmaps by looking a word at a time.
 20  */
 21 #define RGRP_RSRV_MINBYTES 8
 22 #define RGRP_RSRV_MINBLKS ((u32)(RGRP_RSRV_MINBYTES * GFS2_NBBY))
 23 #define RGRP_RSRV_ADDBLKS 64
 24 
 25 struct gfs2_rgrpd;
 26 struct gfs2_sbd;
 27 struct gfs2_holder;
 28 
 29 extern void gfs2_rgrp_verify(struct gfs2_rgrpd *rgd);
 30 
 31 extern struct gfs2_rgrpd *gfs2_blk2rgrpd(struct gfs2_sbd *sdp, u64 blk, bool exact);
 32 extern struct gfs2_rgrpd *gfs2_rgrpd_get_first(struct gfs2_sbd *sdp);
 33 extern struct gfs2_rgrpd *gfs2_rgrpd_get_next(struct gfs2_rgrpd *rgd);
 34 
 35 extern void gfs2_clear_rgrpd(struct gfs2_sbd *sdp);
 36 extern int gfs2_rindex_update(struct gfs2_sbd *sdp);
 37 extern void gfs2_free_clones(struct gfs2_rgrpd *rgd);
 38 extern int gfs2_rgrp_go_lock(struct gfs2_holder *gh);
 39 extern void gfs2_rgrp_brelse(struct gfs2_rgrpd *rgd);
 40 extern void gfs2_rgrp_go_unlock(struct gfs2_holder *gh);
 41 
 42 extern struct gfs2_alloc *gfs2_alloc_get(struct gfs2_inode *ip);
 43 
 44 #define GFS2_AF_ORLOV 1
 45 extern int gfs2_inplace_reserve(struct gfs2_inode *ip,
 46                                 struct gfs2_alloc_parms *ap);
 47 extern void gfs2_inplace_release(struct gfs2_inode *ip);
 48 
 49 extern int gfs2_alloc_blocks(struct gfs2_inode *ip, u64 *bn, unsigned int *n,
 50                              bool dinode, u64 *generation);
 51 
 52 extern int gfs2_rsqa_alloc(struct gfs2_inode *ip);
 53 extern void gfs2_rs_deltree(struct gfs2_blkreserv *rs);
 54 extern void gfs2_rsqa_delete(struct gfs2_inode *ip, atomic_t *wcount);
 55 extern void __gfs2_free_blocks(struct gfs2_inode *ip, u64 bstart, u32 blen, int meta);
 56 extern void gfs2_free_meta(struct gfs2_inode *ip, u64 bstart, u32 blen);
 57 extern void gfs2_free_di(struct gfs2_rgrpd *rgd, struct gfs2_inode *ip);
 58 extern void gfs2_unlink_di(struct inode *inode);
 59 extern int gfs2_check_blk_type(struct gfs2_sbd *sdp, u64 no_addr,
 60                                unsigned int type);
 61 
 62 struct gfs2_rgrp_list {
 63         unsigned int rl_rgrps;
 64         unsigned int rl_space;
 65         struct gfs2_rgrpd **rl_rgd;
 66         struct gfs2_holder *rl_ghs;
 67 };
 68 
 69 extern void gfs2_rlist_add(struct gfs2_inode *ip, struct gfs2_rgrp_list *rlist,
 70                            u64 block);
 71 extern void gfs2_rlist_alloc(struct gfs2_rgrp_list *rlist, unsigned int state);
 72 extern void gfs2_rlist_free(struct gfs2_rgrp_list *rlist);
 73 extern u64 gfs2_ri_total(struct gfs2_sbd *sdp);
 74 extern void gfs2_rgrp_dump(struct seq_file *seq, const struct gfs2_glock *gl);
 75 extern int gfs2_rgrp_send_discards(struct gfs2_sbd *sdp, u64 offset,
 76                                    struct buffer_head *bh,
 77                                    const struct gfs2_bitmap *bi, unsigned minlen, u64 *ptrimmed);
 78 extern int gfs2_fitrim(struct file *filp, void __user *argp);
 79 
 80 /* This is how to tell if a reservation is in the rgrp tree: */
 81 static inline bool gfs2_rs_active(const struct gfs2_blkreserv *rs)
 82 {
 83         return rs && !RB_EMPTY_NODE(&rs->rs_node);
 84 }
 85 
 86 extern void check_and_update_goal(struct gfs2_inode *ip);
 87 #endif /* __RGRP_DOT_H__ */
 88 

~ [ 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