Use user credentials for Linux writepage()
authorSimon Wilkinson <sxw@inf.ed.ac.uk>
Sat, 24 Oct 2009 09:54:32 +0000 (10:54 +0100)
committerDerrick Brashear <shadow|account-1000005@unknown>
Sun, 25 Oct 2009 00:18:55 +0000 (17:18 -0700)
commit70c8deab1694e2cd200f4ff7a81f5f3f028a4c19
tree4aaa38f5b916678fe91497523afadc3f0005180e
parent207882ec4fa91a69d1ec0f25d23a409fd19898de
Use user credentials for Linux writepage()

We have no control over the context in which the kernel calls our
writepage routine. It may be from the process which original wrote the
page, from any other process on the system which is writing and goes
over the dirty page threshold, or from the flush thread (pdflush /
flush-afs). Therefore, we cannot use the credentials of the current
process to perform the writeback. This is an issue both for afs_write
(which, in our current MM model, may need to contact the fileserver
to read missing chunks), and for DoPartialWrite (which needs to be
able to store chunks when the local cache is getting full)

This patch stores the credentials of the first process to open a file in
the vcache structure. Whenever writepage() is used to writeback pages
for this file, the cached credentials are used rather than those of the
current context.

Thanks to Marc Dionne for his work in testing and refining this patch.

FIXES 125471
Change-Id: I2900f711150fd81b2b4839bbc2bf77623bde3b64
Reviewed-on: http://gerrit.openafs.org/724
Reviewed-by: Marc Dionne <marc.c.dionne@gmail.com>
Tested-by: Marc Dionne <marc.c.dionne@gmail.com>
Tested-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
src/afs/LINUX/osi_vnodeops.c
src/afs/VNOPS/afs_vnop_open.c
src/afs/afs.h
src/afs/afs_vcache.c