348 | 348 |
c->file.log = r->connection->log;
|
349 | 349 |
c->uniq = of.uniq;
|
350 | 350 |
c->length = of.size;
|
|
351 |
c->fs_size = (of.fs_size + cache->bsize - 1) / cache->bsize;
|
351 | 352 |
|
352 | 353 |
c->buf = ngx_create_temp_buf(r->pool, c->body_start);
|
353 | 354 |
if (c->buf == NULL) {
|
|
410 | 411 |
c->node->exists = 1;
|
411 | 412 |
c->node->uniq = c->uniq;
|
412 | 413 |
|
413 | |
cache->sh->size += (c->length + cache->bsize - 1) / cache->bsize;
|
|
414 |
cache->sh->size += c->fs_size;
|
414 | 415 |
}
|
415 | 416 |
|
416 | 417 |
ngx_shmtx_unlock(&cache->shpool->mutex);
|
|
593 | 594 |
fcn->valid_sec = 0;
|
594 | 595 |
fcn->uniq = 0;
|
595 | 596 |
fcn->body_start = 0;
|
596 | |
fcn->length = 0;
|
|
597 |
fcn->fs_size = 0;
|
597 | 598 |
|
598 | 599 |
done:
|
599 | 600 |
|
|
776 | 777 |
void
|
777 | 778 |
ngx_http_file_cache_update(ngx_http_request_t *r, ngx_temp_file_t *tf)
|
778 | 779 |
{
|
779 | |
off_t size, length;
|
|
780 |
off_t fs_size;
|
780 | 781 |
ngx_int_t rc;
|
781 | 782 |
ngx_file_uniq_t uniq;
|
782 | 783 |
ngx_file_info_t fi;
|
|
799 | 800 |
cache = c->file_cache;
|
800 | 801 |
|
801 | 802 |
uniq = 0;
|
802 | |
length = 0;
|
|
803 |
fs_size = 0;
|
803 | 804 |
|
804 | 805 |
ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
|
805 | 806 |
"http file cache rename: \"%s\" to \"%s\"",
|
|
824 | 825 |
|
825 | 826 |
} else {
|
826 | 827 |
uniq = ngx_file_uniq(&fi);
|
827 | |
length = ngx_file_size(&fi);
|
828 | |
}
|
829 | |
}
|
830 | |
|
831 | |
size = (length + cache->bsize - 1) / cache->bsize;
|
|
828 |
fs_size = (ngx_file_fs_size(&fi) + cache->bsize - 1) / cache->bsize;
|
|
829 |
}
|
|
830 |
}
|
832 | 831 |
|
833 | 832 |
ngx_shmtx_lock(&cache->shpool->mutex);
|
834 | 833 |
|
|
836 | 835 |
c->node->uniq = uniq;
|
837 | 836 |
c->node->body_start = c->body_start;
|
838 | 837 |
|
839 | |
size = size - (c->node->length + cache->bsize - 1) / cache->bsize;
|
840 | |
|
841 | |
c->node->length = length;
|
842 | |
|
843 | |
cache->sh->size += size;
|
|
838 |
cache->sh->size += fs_size - c->node->fs_size;
|
|
839 |
c->node->fs_size = fs_size;
|
844 | 840 |
|
845 | 841 |
if (rc == NGX_OK) {
|
846 | 842 |
c->node->exists = 1;
|
|
1147 | 1143 |
fcn = ngx_queue_data(q, ngx_http_file_cache_node_t, queue);
|
1148 | 1144 |
|
1149 | 1145 |
if (fcn->exists) {
|
1150 | |
cache->sh->size -= (fcn->length + cache->bsize - 1) / cache->bsize;
|
|
1146 |
cache->sh->size -= fcn->fs_size;
|
1151 | 1147 |
|
1152 | 1148 |
path = cache->path;
|
1153 | 1149 |
p = name + path->name.len + 1 + path->len;
|
|
1370 | 1366 |
return NGX_ERROR;
|
1371 | 1367 |
}
|
1372 | 1368 |
|
|
1369 |
cache = ctx->data;
|
|
1370 |
|
1373 | 1371 |
if (ngx_fd_info(fd, &fi) == NGX_FILE_ERROR) {
|
1374 | 1372 |
ngx_log_error(NGX_LOG_CRIT, ctx->log, ngx_errno,
|
1375 | 1373 |
ngx_fd_info_n " \"%s\" failed", name->data);
|
|
1380 | 1378 |
c.valid_msec = h.valid_msec;
|
1381 | 1379 |
c.body_start = h.body_start;
|
1382 | 1380 |
c.length = ngx_file_size(&fi);
|
|
1381 |
c.fs_size = (ngx_file_fs_size(&fi) + cache->bsize - 1) / cache->bsize;
|
1383 | 1382 |
}
|
1384 | 1383 |
|
1385 | 1384 |
if (ngx_close_file(fd) == NGX_FILE_ERROR) {
|
|
1404 | 1403 |
|
1405 | 1404 |
c.key[i] = (u_char) n;
|
1406 | 1405 |
}
|
1407 | |
|
1408 | |
cache = ctx->data;
|
1409 | 1406 |
|
1410 | 1407 |
return ngx_http_file_cache_add(cache, &c);
|
1411 | 1408 |
}
|
|
1446 | 1443 |
fcn->uniq = c->uniq;
|
1447 | 1444 |
fcn->valid_sec = c->valid_sec;
|
1448 | 1445 |
fcn->body_start = c->body_start;
|
1449 | |
fcn->length = c->length;
|
1450 | |
|
1451 | |
cache->sh->size += (c->length + cache->bsize - 1) / cache->bsize;
|
|
1446 |
fcn->fs_size = c->fs_size;
|
|
1447 |
|
|
1448 |
cache->sh->size += c->fs_size;
|
1452 | 1449 |
|
1453 | 1450 |
} else {
|
1454 | 1451 |
ngx_queue_remove(&fcn->queue);
|