]> git.kaiwu.me - nginx.git/commitdiff
open_file_cache_events
authorIgor Sysoev <igor@sysoev.ru>
Mon, 3 Sep 2007 08:41:42 +0000 (08:41 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Mon, 3 Sep 2007 08:41:42 +0000 (08:41 +0000)
src/core/ngx_open_file_cache.c
src/core/ngx_open_file_cache.h
src/http/modules/ngx_http_flv_module.c
src/http/modules/ngx_http_index_module.c
src/http/modules/ngx_http_static_module.c
src/http/modules/perl/nginx.xs
src/http/ngx_http_core_module.c
src/http/ngx_http_core_module.h
src/http/ngx_http_script.c

index 1dc2d131d9d164a063c250a48b84dedfad6d5451..87104a04a12668ba91ef6180418659aef330e8e2 100644 (file)
@@ -353,8 +353,10 @@ create:
 
 update:
 
-    if (ngx_event_flags & NGX_USE_VNODE_EVENT && of->fd != NGX_INVALID_FILE) {
-
+    if ((ngx_event_flags & NGX_USE_VNODE_EVENT)
+        && of->events
+        && of->fd != NGX_INVALID_FILE)
+    {
         file->event = ngx_calloc(sizeof(ngx_event_t), pool->log);
         if (file->event== NULL) {
             goto failed;
index 90c75909d1b1df7959e946f19f9b3a2e9b6c53a4..cc0d899a20f02958978fa92c9594e25d485053a0 100644 (file)
@@ -23,6 +23,7 @@ typedef struct {
 
     unsigned                 test_dir:1;
     unsigned                 errors:1;
+    unsigned                 events:1;
 
     unsigned                 is_dir:1;
     unsigned                 is_file:1;
index ad0d5bd973221af2f60597609dca1f497cea1e63..04327d93821fd7a7cca1a2255f492e9f2552dae7 100644 (file)
@@ -109,6 +109,7 @@ ngx_http_flv_handler(ngx_http_request_t *r)
     of.test_dir = 0;
     of.retest = clcf->open_file_cache_retest;
     of.errors = clcf->open_file_cache_errors;
+    of.events = clcf->open_file_cache_events;
     
     rc = ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool);
 
index f3f2b61cee39100ffe90d1cf544b2d1ae249bf98..6f81a49cf347d3a0f7f96999fdf551be3d26088e 100644 (file)
@@ -236,6 +236,7 @@ ngx_http_index_handler(ngx_http_request_t *r)
         of.test_dir = 0;
         of.retest = clcf->open_file_cache_retest;
         of.errors = clcf->open_file_cache_errors;
+        of.events = clcf->open_file_cache_events;
 
         rc = ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool);
 
index aa5e72eb97512d341242aca58e4cf6cbcedb2428..9278497d920bf48ccab6928912efe8d0a53651b0 100644 (file)
@@ -100,6 +100,7 @@ ngx_http_static_handler(ngx_http_request_t *r)
     of.test_dir = 0;
     of.retest = clcf->open_file_cache_retest;
     of.errors = clcf->open_file_cache_errors;
+    of.events = clcf->open_file_cache_events;
 
     rc = ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool);
 
index 8b7ef2250ad7b1342bc4a9bc379dedfcf4925148..24379ad9eacc69461d3b157cbe27e561cecade16 100644 (file)
@@ -641,6 +641,7 @@ sendfile(r, filename, offset = -1, bytes = 0)
     of.test_dir = 0;
     of.retest = clcf->open_file_cache_retest; 
     of.errors = clcf->open_file_cache_errors; 
+    of.events = clcf->open_file_cache_events; 
 
     path.len = ngx_strlen(filename);
 
index 9a52678bd2839db5adf40943e3bce94a126627af..b25346daa8e6899cd3e97ac8d6501a25ca6c4496 100644 (file)
@@ -471,6 +471,13 @@ static ngx_command_t  ngx_http_core_commands[] = {
       offsetof(ngx_http_core_loc_conf_t, open_file_cache_errors),
       NULL },
 
+    { ngx_string("open_file_cache_events"),
+      NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
+      ngx_conf_set_flag_slot,
+      NGX_HTTP_LOC_CONF_OFFSET,
+      offsetof(ngx_http_core_loc_conf_t, open_file_cache_events),
+      NULL },
+
       ngx_null_command
 };
 
@@ -2375,6 +2382,7 @@ ngx_http_core_create_loc_conf(ngx_conf_t *cf)
     lcf->open_file_cache = NGX_CONF_UNSET_PTR;
     lcf->open_file_cache_retest = NGX_CONF_UNSET;
     lcf->open_file_cache_errors = NGX_CONF_UNSET;
+    lcf->open_file_cache_events = NGX_CONF_UNSET;
 
     return lcf;
 }
@@ -2567,6 +2575,9 @@ ngx_http_core_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
     ngx_conf_merge_sec_value(conf->open_file_cache_errors,
                              prev->open_file_cache_errors, 0);
 
+    ngx_conf_merge_sec_value(conf->open_file_cache_events,
+                             prev->open_file_cache_events, 0);
+
     return NGX_CONF_OK;
 }
 
index 5455c5c1238fc40673b796aacdb05f4f7e3728d9..2bd687e880ad0683b558d5f0cb118611082177bb 100644 (file)
@@ -293,6 +293,7 @@ struct ngx_http_core_loc_conf_s {
     ngx_open_file_cache_t  *open_file_cache;
     time_t        open_file_cache_retest;
     ngx_flag_t    open_file_cache_errors;
+    ngx_flag_t    open_file_cache_events;
 
     ngx_log_t    *err_log;
 
index 78c42722ea5783470816f7150fbf82efd5f77f70..b19ee91dca88a84a7a993ba852b5cdaaa4d3fa38 100644 (file)
@@ -977,6 +977,7 @@ ngx_http_script_file_code(ngx_http_script_engine_t *e)
     of.test_dir = 0;
     of.retest = clcf->open_file_cache_retest;
     of.errors = clcf->open_file_cache_errors;
+    of.events = clcf->open_file_cache_events;
 
     if (ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
         == NGX_ERROR)