summaryrefslogtreecommitdiffstats
path: root/block/bsg.c
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@suse.cz>2008-07-04 09:35:17 +0200
committerJens Axboe <jens.axboe@oracle.com>2008-07-04 09:52:14 +0200
commit32502b8413a77b54b9e19809404109590c32dfb7 (patch)
treec84b87396be32d529b9902a7261b772b1d919e8b /block/bsg.c
parentramfs: enable splice write (diff)
downloadlinux-32502b8413a77b54b9e19809404109590c32dfb7.tar.xz
linux-32502b8413a77b54b9e19809404109590c32dfb7.zip
splice: fix generic_file_splice_read() race with page invalidation
If a page was invalidated during splicing from file to a pipe, then generic_file_splice_read() could return a short or zero count. This manifested itself in rare I/O errors seen on nfs exported fuse filesystems. This is because nfsd uses splice_direct_to_actor() to read files, and fuse uses invalidate_inode_pages2() to invalidate stale data on open. Fix by redoing the page find/create if it was found to be truncated (invalidated). Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'block/bsg.c')
0 files changed, 0 insertions, 0 deletions