Linux补丁制作方法,简单明了:
[php]diff -rNu ngx_output_chain.c ngx_output_chain_dx.c >ngx_output_chain.patch[/php]
看一段例子,具体做什么的,你懂的:)
[php]--- ngx_output_chain.c 2010-10-12 07:06:52.000000000 -0500
+++ ngx_output_chain_dx.c 2011-11-11 01:48:06.335975441 -0600
@@ -565,10 +565,31 @@
}
if (n != size) {
- ngx_log_error(NGX_LOG_ALERT, ctx->pool->log, 0,
- ngx_read_file_n " read only %z of %O from \"%s\"",
- n, size, src->file->name.data);
- return NGX_ERROR;
+ int dxcnt=0;
+ while (dxcnt<5&&n!=size) {
+ dxcnt++;
+#if (NGX_HAVE_FILE_AIO)
+ if (ctx->aio_handler) {
+ n = ngx_file_aio_read(src->file, dst->pos, (size_t) size,
+ src->file_pos, ctx->pool);
+ if (n == NGX_AGAIN) {
+ ctx->aio_handler(ctx, src->file);
+ return NGX_AGAIN;
+ }
+ } else {
+ n = ngx_read_file(src->file, dst->pos, (size_t) size,
+ src->file_pos);
+ }
+#else
+ n = ngx_read_file(src->file, dst->pos, (size_t) size, src->file_pos);
+#endif
+ }
+ if (n != size) {
+ ngx_log_error(NGX_LOG_ALERT, ctx->pool->log, 0,
+ ngx_read_file_n " read only %z of %O from \"%s\"",
+ n, size, src->file->name.data);
+ return NGX_ERROR;
+ }
}
dst->last += n;
[/php]