Welcome! Log In Create A New Profile

Advanced

Re: Bug?

All files from this thread

File Name File Size   Posted by Date  
patch.short.write 3.9 KB open | download Igor Sysoev 09/25/2009 Read message
patch.short.write1 4.7 KB open | download Igor Sysoev 09/25/2009 Read message
September 24, 2009 03:44PM
On Thu, Sep 24, 2009 at 09:23:25PM +0200, Alejandro Mart??nez wrote:

> i keep getting:
>
> 2009/09/24 18:21:09 [crit] 11956#0: *50 pwrite() has written only 266240
> of 524288, client: 10.100.0.115, server: contentdata.spacash.com,
> request: "POST /store.php HTTP/1.1", host: "10.100.0.155"
>
> 2009/09/24 18:22:19 [crit] 11956#0: *81 pwrite() has written only 225280
> of 524288, client: 10.100.0.115, server: contentdata.spacash.com,
> request: "POST /store.php HTTP/1.1", host: "10.100.0.155"
>
> store.php just receives files via POST and then moves them to the final
> location via move_uploaded_file()
>
> I tracked the string "pwrite() has written only" within nginx's source
> and got to:
>
> src/os/unix/ngx_files.c where there is:
>
> ssize_t
> ngx_write_file(ngx_file_t *file, u_char *buf, size_t size, off_t offset)
> {
> ssize_t n;
>
> ngx_log_debug4(NGX_LOG_DEBUG_CORE, file->log, 0,
> "write: %d, %p, %uz, %O", file->fd, buf, size,
> offset);
>
> #if (NGX_HAVE_PWRITE)
>
> n = pwrite(file->fd, buf, size, offset);
>
> if (n == -1) {
> ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "pwrite()
> failed");
> return NGX_ERROR;
> }
>
> if ((size_t) n != size) {
> ngx_log_error(NGX_LOG_CRIT, file->log, 0,
> "pwrite() has written only %z of %uz", n, size);
> return NGX_ERROR;
> }
>
> #else
>
> if (file->sys_offset != offset) {
> if (lseek(file->fd, offset, SEEK_SET) == -1) {
> ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "lseek()
> failed");
> return NGX_ERROR;
> }
>
> file->sys_offset = offset;
> }
>
> n = write(file->fd, buf, size);
> if (n == -1) {
> ngx_log_error(NGX_LOG_CRIT, file->log, ngx_errno, "write()
> failed");
> return NGX_ERROR;
> }
>
> if ((size_t) n != size) {
> ngx_log_error(NGX_LOG_CRIT, file->log, 0,
> "write() has written only %z of %uz", n, size);
> return NGX_ERROR;
> }
>
> file->sys_offset += n;
>
> #endif
>
> file->offset += n;
>
> return n;
> }
>
>
>
> Googling for pwrite, i found out that pwrite just isn't to write all of
> its data at once, so one has to put it into a loop.
>
>
> So is this a bug or did i do something terribly wrong?

pwrite() on file system should write all data at once (at least I see it
for the first time). What file system do you use ?

It's seems the issue occures while writing client body in temporary file,
I need to add file name in log message.


--
Igor Sysoev
http://sysoev.ru/en/
Subject Author Posted

Bug?

Alejandro Martínez September 24, 2009 03:34PM

Re: Bug?

Igor Sysoev September 24, 2009 03:44PM

Re: Bug?

Alejandro Martínez September 24, 2009 04:44PM

Re: Bug?

Alejandro Martínez September 24, 2009 05:04PM

Re: Bug?

Igor Sysoev September 25, 2009 01:44AM

Re: Bug? Attachments

Igor Sysoev September 25, 2009 02:16AM

Re: Bug? Attachments

Igor Sysoev September 25, 2009 04:14AM

Re: Bug?

Alejandro Martínez September 25, 2009 09:10AM

Re: Bug?

Maxim Dounin September 25, 2009 09:38AM

Re: Bug?

Alejandro Martínez September 25, 2009 10:06AM

Re: Bug?

Maxim Dounin September 25, 2009 10:24AM

Re: Bug?

Alejandro Martínez September 25, 2009 10:38AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 167
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready