Home | History | Annotate | Line # | Download | only in lfs_cleanerd
cleaner.h revision 1.9
      1  1.1  perseant #ifndef CLEANER_H_
      2  1.1  perseant #define CLEANER_H_
      3  1.1  perseant 
      4  1.1  perseant /*
      5  1.1  perseant  * An abbreviated version of the SEGUSE data structure.
      6  1.1  perseant  */
      7  1.1  perseant struct clfs_seguse {
      8  1.1  perseant 	u_int32_t nbytes;
      9  1.1  perseant 	u_int32_t nsums;
     10  1.1  perseant 	u_int32_t flags;
     11  1.1  perseant 	u_int64_t lastmod;
     12  1.1  perseant 	u_int64_t priority;
     13  1.1  perseant };
     14  1.1  perseant 
     15  1.1  perseant /*
     16  1.1  perseant  * The cleaner's view of the superblock data structure.
     17  1.1  perseant  */
     18  1.1  perseant struct clfs {
     19  1.6  dholland 	struct dlfs lfs_dlfs;
     20  1.1  perseant 
     21  1.1  perseant 	/* Ifile */
     22  1.1  perseant 	int clfs_ifilefd;	   /* Ifile file descriptor */
     23  1.1  perseant 	struct uvnode *lfs_ivnode; /* Ifile vnode */
     24  1.4    martin 	struct lfs_fhandle clfs_ifilefh;	   /* Ifile file handle */
     25  1.1  perseant 
     26  1.1  perseant 	/* Device */
     27  1.1  perseant 	int clfs_devfd;		   /* Device file descriptor */
     28  1.1  perseant 	struct uvnode *clfs_devvp; /* Device vnode */
     29  1.1  perseant 	char *clfs_dev;		   /* Name of device */
     30  1.1  perseant 
     31  1.1  perseant 	/* Cache of segment status */
     32  1.1  perseant 	struct clfs_seguse  *clfs_segtab;  /* Abbreviated seguse table */
     33  1.1  perseant 	struct clfs_seguse **clfs_segtabp; /* pointers to same */
     34  1.1  perseant 
     35  1.1  perseant 	/* Progress status */
     36  1.1  perseant 	int clfs_nactive;	   /* How many segments' blocks we have */
     37  1.1  perseant 	int clfs_onhold;	   /* If cleaning this fs is on hold */
     38  1.1  perseant };
     39  1.1  perseant 
     40  1.1  perseant /*
     41  1.9  dholland  * Get lfs accessors that use struct clfs. This must come after the
     42  1.9  dholland  * definition of struct clfs. (blah)
     43  1.8  dholland  */
     44  1.9  dholland #define STRUCT_LFS struct clfs
     45  1.9  dholland #include <ufs/lfs/lfs_accessors.h>
     46  1.8  dholland 
     47  1.8  dholland /*
     48  1.1  perseant  * Fraction of the could-be-clean segments required to be clean.
     49  1.1  perseant  */
     50  1.1  perseant #define BUSY_LIM 0.5
     51  1.1  perseant #define IDLE_LIM 0.9
     52  1.1  perseant 
     53  1.1  perseant __BEGIN_DECLS
     54  1.1  perseant 
     55  1.1  perseant /* lfs_cleanerd.c */
     56  1.1  perseant void pwarn(const char *, ...);
     57  1.1  perseant void calc_cb(struct clfs *, int, struct clfs_seguse *);
     58  1.1  perseant int clean_fs(struct clfs *, CLEANERINFO *);
     59  1.5     lukem void dlog(const char *, ...);
     60  1.1  perseant void handle_error(struct clfs **, int);
     61  1.1  perseant int init_fs(struct clfs *, char *);
     62  1.1  perseant int invalidate_segment(struct clfs *, int);
     63  1.1  perseant void lfs_ientry(IFILE **, struct clfs *, ino_t, struct ubuf **);
     64  1.1  perseant int load_segment(struct clfs *, int, BLOCK_INFO **, int *);
     65  1.1  perseant int needs_cleaning(struct clfs *, CLEANERINFO *);
     66  1.1  perseant int32_t parse_pseg(struct clfs *, daddr_t, BLOCK_INFO **, int *);
     67  1.1  perseant int reinit_fs(struct clfs *);
     68  1.1  perseant void reload_ifile(struct clfs *);
     69  1.2  perseant void toss_old_blocks(struct clfs *, BLOCK_INFO **, int *, int *);
     70  1.1  perseant 
     71  1.1  perseant /* cleansrv.c */
     72  1.1  perseant void check_control_socket(void);
     73  1.1  perseant void try_to_become_master(int, char **);
     74  1.1  perseant 
     75  1.1  perseant /* coalesce.c */
     76  1.1  perseant int log2int(int);
     77  1.1  perseant int clean_all_inodes(struct clfs *);
     78  1.1  perseant int fork_coalesce(struct clfs *);
     79  1.1  perseant 
     80  1.1  perseant __END_DECLS
     81  1.1  perseant 
     82  1.1  perseant #endif /* CLEANER_H_ */
     83