xrootd
Loading...
Searching...
No Matches
XrdFrmPurge.hh
Go to the documentation of this file.
1#ifndef __FRMPURGE__
2#define __FRMPURGE__
3/******************************************************************************/
4/* */
5/* X r d F r m P u r g e . h h */
6/* */
7/* (c) 2009 by the Board of Trustees of the Leland Stanford, Jr., University */
8/* All Rights Reserved */
9/* Produced by Andrew Hanushevsky for Stanford University under contract */
10/* DE-AC02-76-SFO0515 with the Department of Energy */
11/* */
12/* This file is part of the XRootD software suite. */
13/* */
14/* XRootD is free software: you can redistribute it and/or modify it under */
15/* the terms of the GNU Lesser General Public License as published by the */
16/* Free Software Foundation, either version 3 of the License, or (at your */
17/* option) any later version. */
18/* */
19/* XRootD is distributed in the hope that it will be useful, but WITHOUT */
20/* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
21/* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */
22/* License for more details. */
23/* */
24/* You should have received a copy of the GNU Lesser General Public License */
25/* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */
26/* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */
27/* */
28/* The copyright holder's institutional names and contributor's names may not */
29/* be used to endorse or promote products derived from this software without */
30/* specific prior written permission of the institution or contributor. */
31/******************************************************************************/
32
33#include <ctime>
34#include <sys/types.h>
35
36#include "XrdFrm/XrdFrmTSort.hh"
37#include "XrdOss/XrdOssSpace.hh"
38
39class XrdFrmFileset;
40class XrdOucPolProg;
41class XrdOucStream;
42class XrdOucTList;
43
45{
46public:
47
48static void Display();
49
50static int Init(XrdOucTList *sP=0, long long minV=-1, int hVal=-1);
51
52static XrdFrmPurge *Policy(const char *sname) {return Find(sname);}
53static XrdFrmPurge *Policy(const char *sname, long long minV, long long maxV,
54 int hVal, int xVal);
55
56static void Purge();
57
58 XrdFrmPurge(const char *snp, XrdFrmPurge *spp=0);
60
61private:
62
63// Methods
64//
65static void Add(XrdFrmFileset *fsp);
67 void Clear();
68 void Defer(XrdFrmFileset *sP, time_t xTime);
69const char *Eligible(XrdFrmFileset *sP, time_t &xTime, int hTime=0);
70static XrdFrmPurge *Find(const char *snp);
71static int LowOnSpace();
72 int PurgeFile();
73 int PurgeFile(XrdFrmFileset *fP, const char *pFN);
74static void Scan();
75static void Stats(int Final);
77const char *XPolOK(XrdFrmFileset *sP);
80
81// Static Variables
82
83static time_t lastReset;
84static time_t nextReset;
85
88
89static int Left2Do;
90
91// Variables local to each object
92//
93long long freeSpace; // Current free space
94long long fconMaxsp; // Current free space contiguous
95long long usedSpace; // Curreny used space (if supported)
96long long pmaxSpace; // PMax space (computed once)
97long long totlSpace; // Total space (computed once)
98long long contSpace; // Total contg (computed once)
99long long purgBytes; // Purged bytes on last purge cycle
100long long minFSpace; // Minimum free space
101long long maxFSpace; // Maximum free space (what we purge to)
106int Hold; // Hold value
107int Hold2x; // Hold x2 (what we actually use)
108int Ext; // External policy applies
109int numFiles; // Total number of files
110int prgFiles; // Total number of purged
114
118
119static const int DeferQsz = 16;
122};
123#endif
Definition XrdFrmFiles.hh:49
Definition XrdFrmPurge.hh:45
static XrdOucStream * PolStream
Definition XrdFrmPurge.hh:79
static void Purge()
int Stop
Definition XrdFrmPurge.hh:112
XrdFrmFileset * Advance()
void Clear()
time_t DeferT[DeferQsz]
Definition XrdFrmPurge.hh:121
static int Left2Do
Definition XrdFrmPurge.hh:89
int prgFiles
Definition XrdFrmPurge.hh:110
int Ext
Definition XrdFrmPurge.hh:108
int PurgeFile(XrdFrmFileset *fP, const char *pFN)
const char * Eligible(XrdFrmFileset *sP, time_t &xTime, int hTime=0)
static XrdFrmPurge * First
Definition XrdFrmPurge.hh:86
static XrdFrmPurge * Policy(const char *sname)
Definition XrdFrmPurge.hh:52
int Hold
Definition XrdFrmPurge.hh:106
long long contSpace
Definition XrdFrmPurge.hh:98
static time_t lastReset
Definition XrdFrmPurge.hh:83
long long usedSpace
Definition XrdFrmPurge.hh:95
static void Scan()
void Track(XrdFrmFileset *sP)
long long pmaxSpace
Definition XrdFrmPurge.hh:96
XrdFrmPurge * Next
Definition XrdFrmPurge.hh:115
char * spaceTotP
Definition XrdFrmPurge.hh:103
static void Stats(int Final)
XrdFrmFileset * DeferQ[DeferQsz]
Definition XrdFrmPurge.hh:120
int SNlen
Definition XrdFrmPurge.hh:113
long long totlSpace
Definition XrdFrmPurge.hh:97
static void Add(XrdFrmFileset *fsp)
int numFiles
Definition XrdFrmPurge.hh:109
long long minFSpace
Definition XrdFrmPurge.hh:100
long long fconMaxsp
Definition XrdFrmPurge.hh:94
long long purgBytes
Definition XrdFrmPurge.hh:99
static time_t nextReset
Definition XrdFrmPurge.hh:84
static int Init(XrdOucTList *sP=0, long long minV=-1, int hVal=-1)
long long maxFSpace
Definition XrdFrmPurge.hh:101
static XrdOucProg * PolProg
Definition XrdFrmPurge.hh:78
static void Display()
static const int DeferQsz
Definition XrdFrmPurge.hh:119
int spaceTLep
Definition XrdFrmPurge.hh:105
int PurgeFile()
static XrdFrmPurge * Policy(const char *sname, long long minV, long long maxV, int hVal, int xVal)
static int LowOnSpace()
int spaceTLen
Definition XrdFrmPurge.hh:104
char SName[XrdOssSpace::minSNbsz]
Definition XrdFrmPurge.hh:117
XrdFrmPurge(const char *snp, XrdFrmPurge *spp=0)
XrdFrmTSort FSTab
Definition XrdFrmPurge.hh:116
static XrdFrmPurge * Default
Definition XrdFrmPurge.hh:87
const char * XPolOK(XrdFrmFileset *sP)
char * spaceTotl
Definition XrdFrmPurge.hh:102
void Defer(XrdFrmFileset *sP, time_t xTime)
static XrdFrmPurge * Find(const char *snp)
int Hold2x
Definition XrdFrmPurge.hh:107
~XrdFrmPurge()
Definition XrdFrmPurge.hh:59
long long freeSpace
Definition XrdFrmPurge.hh:93
int Enabled
Definition XrdFrmPurge.hh:111
Definition XrdFrmTSort.hh:36
static const int minSNbsz
Definition XrdOssSpace.hh:45
Definition XrdOucProg.hh:38
Definition XrdOucStream.hh:47
Definition XrdOucTList.hh:42