Mercurial > hg > nginx
comparison src/os/unix/ngx_files.h @ 4516:b927410d9638 stable-1.0
Merge of r4499: workaround for fs_size on ZFS (ticket #46).
ZFS reports incorrect st_blocks until file settles on disk, and this
may take a while (i.e. just after creation of a file the st_blocks value
is incorrect). As a workaround we now use st_blocks only if
st_blocks * 512 > st_size, this should fix ZFS problems while still
preserving accuracy for other filesystems.
The problem had appeared in r3900 (1.0.1).
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 05 Mar 2012 13:20:40 +0000 |
parents | 4919fb357a5d |
children |
comparison
equal
deleted
inserted
replaced
4515:8bb695c05870 | 4516:b927410d9638 |
---|---|
157 #define ngx_is_file(sb) (S_ISREG((sb)->st_mode)) | 157 #define ngx_is_file(sb) (S_ISREG((sb)->st_mode)) |
158 #define ngx_is_link(sb) (S_ISLNK((sb)->st_mode)) | 158 #define ngx_is_link(sb) (S_ISLNK((sb)->st_mode)) |
159 #define ngx_is_exec(sb) (((sb)->st_mode & S_IXUSR) == S_IXUSR) | 159 #define ngx_is_exec(sb) (((sb)->st_mode & S_IXUSR) == S_IXUSR) |
160 #define ngx_file_access(sb) ((sb)->st_mode & 0777) | 160 #define ngx_file_access(sb) ((sb)->st_mode & 0777) |
161 #define ngx_file_size(sb) (sb)->st_size | 161 #define ngx_file_size(sb) (sb)->st_size |
162 #define ngx_file_fs_size(sb) ((sb)->st_blocks * 512) | 162 #define ngx_file_fs_size(sb) ngx_max((sb)->st_size, (sb)->st_blocks * 512) |
163 #define ngx_file_mtime(sb) (sb)->st_mtime | 163 #define ngx_file_mtime(sb) (sb)->st_mtime |
164 #define ngx_file_uniq(sb) (sb)->st_ino | 164 #define ngx_file_uniq(sb) (sb)->st_ino |
165 | 165 |
166 | 166 |
167 ngx_int_t ngx_create_file_mapping(ngx_file_mapping_t *fm); | 167 ngx_int_t ngx_create_file_mapping(ngx_file_mapping_t *fm); |
253 | 253 |
254 #endif | 254 #endif |
255 | 255 |
256 #define ngx_de_access(dir) (((dir)->info.st_mode) & 0777) | 256 #define ngx_de_access(dir) (((dir)->info.st_mode) & 0777) |
257 #define ngx_de_size(dir) (dir)->info.st_size | 257 #define ngx_de_size(dir) (dir)->info.st_size |
258 #define ngx_de_fs_size(dir) ((dir)->info.st_blocks * 512) | 258 #define ngx_de_fs_size(dir) \ |
259 ngx_max((dir)->info.st_size, (dir)->info.st_blocks * 512) | |
259 #define ngx_de_mtime(dir) (dir)->info.st_mtime | 260 #define ngx_de_mtime(dir) (dir)->info.st_mtime |
260 | 261 |
261 | 262 |
262 ngx_int_t ngx_open_glob(ngx_glob_t *gl); | 263 ngx_int_t ngx_open_glob(ngx_glob_t *gl); |
263 #define ngx_open_glob_n "glob()" | 264 #define ngx_open_glob_n "glob()" |