Re: nfs question - ftruncate vs pwrite



--- Peter Staubach <staubach@xxxxxxxxxx> wrote:
> You might use tcpdump or etherreal to see what the different traffic looks
> like. I suspect that ftruncate() leads a SETATTR operation while pwrite()
> leads to a WRITE operation.

Ethereal results interpreted with wild speculation:
The pwrite case:
This does a bunch of reads, but the server always returns a short read responding with EOF. It
seems that a pwrite does cause a getattr call, but that's it.
Once memory is exhausted, the pages are written out.

The ftruncate case:
This does a setattr, then does a read - this time the server responds with a large amount of
0's.

Since this is using the buffer cache (not opened with O_DIRECT), and since we know we are
extending the file... is it strictly necessary to read in pages of 0's from the server?

-Kenny



__________________________________________
Yahoo! DSL ? Something to write home about.
Just $16.99/mo. or less.
dsl.yahoo.com

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • Re: nfs question - ftruncate vs pwrite
    ... I suspect that ftruncate() leads a SETATTR operation while pwrite() ... > This does a bunch of reads, but the server always returns a short read responding with EOF. ...
    (Linux-Kernel)
  • Re: nfs question - ftruncate vs pwrite
    ... If a file is extended via ftruncate, the new empty pages are read in before the the ftruncate ... Am I missing some other semantic difference between ftruncate and a pwrite past the end of ... I suspect that ftruncateleads a SETATTR operation while pwriteleads to a WRITE operation. ... send the line "unsubscribe linux-kernel" in ...
    (Linux-Kernel)
  • Re: nfs question - ftruncate vs pwrite
    ... I suspect that ftruncate() leads a SETATTR operation while pwrite() ... >> This does a bunch of reads, but the server always returns a short read responding with EOF. ...
    (Linux-Kernel)