143 char buff[1024], HSb1[16], HSb2[16], HSb3[16];
151 if (!(fs_Size = getFSpace(fs_Free, path)))
152 {
Elog.Emsg(
"FSMon", errno,
"filesystem info for", path);
158 if (fVal < 0) fs_MinFree = fs_Size*(
static_cast<size_t>(-fVal))/100;
159 else {fs_MinFree =
static_cast<size_t>(fVal);
160 if (fs_MinFree >= fs_Size)
161 {snprintf(buff,
sizeof(buff),
"Minimum free space allowed (%s) "
162 ">= size of filesystem (%s) at",
163 HSZ(fs_MinFree, HSb1),
HSZ(fs_Size, HSb2));
164 Elog.Emsg(
"FSMon", buff, path);
171 fs_MaxUsed = fs_Size - fs_MinFree;
172 fs_inUse = fs_Size - fs_Free;
177 if (fs_Free < fs_MinFree)
178 {snprintf(buff,
sizeof(buff),
"Filesystme free space (%s) < minimum "
180 HSZ(fs_Free, HSb1),
HSZ(fs_MinFree, HSb2));
181 Elog.Say(
"Config warning: ", buff, path);
183 snprintf(buff,
sizeof(buff),
"Filesystme free space: %s; "
184 "minimum allowed: %s; remaining: %s at ",
185 HSZ(fs_Free, HSb1),
HSZ(fs_MinFree,HSb2),
186 HSZ(fs_Free-fs_MinFree, HSb3));
187 Elog.Say(
"Config outcome: ", buff, path);
192 schedP->Schedule(
this, time(0)+fs_Updt);
230 size_t tmpSize, tmpFree;
235 if (bytes >= fs_inBkp) fs_inBkp = 0;
236 else fs_inBkp -= bytes;
240 if (!(tmpSize = getFSpace(tmpFree, fs_Path)))
241 Elog.Emsg(
"FSMon", errno,
"filesystem info for", fs_Path);
242 else {fs_Size = tmpSize;
244 fs_MaxUsed = fs_Size - fs_MinFree;
245 fs_inUse = fs_Size - fs_Free;
251 while(!btWaitQ.empty())
253 if ((fs_inUse + fs_inBkp + btP->
numBytes + nTot) <= fs_MaxUsed)
262 if ((n = btWaitQ.size()))
263 {
char buff[1024], HSb1[16], HSb2[16];
264 size_t free = (fs_Free <= fs_inBkp ? 0 : fs_Free - fs_inBkp);
265 snprintf(buff,
sizeof(buff),
"Insufficient free space (%s < %s); "
266 "%d backup(s) still pending!",
267 HSZ(free, HSb1),
HSZ(fs_MinFree, HSb2), n);
268 Elog.Emsg(
"FSMon", buff);