[POWERPC] spufs: Fix bitrot of the SPU mmap facility
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Tue, 13 Feb 2007 00:46:08 +0000 (11:46 +1100)
committerPaul Mackerras <paulus@samba.org>
Tue, 13 Feb 2007 04:35:54 +0000 (15:35 +1100)
commit17e0e27020d028a790d97699aff85a43af5be472
treef3dd43243be6e840dc2b0386e91c4146a4f51620
parent44430e0d3916ab6aaf0451fdb811f4f1803b741e
[POWERPC] spufs: Fix bitrot of the SPU mmap facility

It looks like we've had some serious bitrot there mostly due to tracking
of address_space's of mmap'ed files getting out of sync with the actual
mmap code. The mfc, mss and psmap were not tracked properly and thus
not invalidated on context switches (oops !)

I also removed the various file->f_mapping = inode->i_mapping;
assignments that were done in the other open() routines since that
is already done for us by __dentry_open.

One improvement we might want to do later is to assign the various
ctx-> fields at mmap time instead of file open/close time so that we
don't call unmap_mapping_range() on thing that have not been mmap'ed

Finally, I added some smp_wmb's after assigning the ctx-> fields to make
sure they are visible to other CPUs. I don't think this is really
necessary as I suspect locking in the fs layer will make that happen
anyway but better safe than sorry.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/platforms/cell/spufs/context.c
arch/powerpc/platforms/cell/spufs/file.c
arch/powerpc/platforms/cell/spufs/spufs.h