Skip to content

Commit

Permalink
9p: soften invalidation in loose_mode
Browse files Browse the repository at this point in the history
Loose mode in 9p utilizes the page cache without respecting coherency with
the server.  Any writes previously invaldiated the entire mapping for a file.
This patch softens the behavior to only invalidate the region of the actual
write.

Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
  • Loading branch information
Eric Van Hensbergen committed Oct 17, 2007
1 parent ba17674 commit 50fd801
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions fs/9p/vfs_file.c
Original file line number Diff line number Diff line change
Expand Up @@ -162,15 +162,17 @@ v9fs_file_write(struct file *filp, const char __user * data,

fid = filp->private_data;
ret = p9_client_uwrite(fid, data, *offset, count);
if (ret > 0)
if (ret > 0) {
invalidate_inode_pages2_range(inode->i_mapping, *offset,
*offset+ret);
*offset += ret;
}

if (*offset > inode->i_size) {
inode->i_size = *offset;
inode->i_blocks = (inode->i_size + 512 - 1) >> 9;
}

invalidate_inode_pages2(inode->i_mapping);
return ret;
}

Expand Down

0 comments on commit 50fd801

Please sign in to comment.