NFS: Cleanup: add common helper nfs_page_length()
Clean up a lot of ad-hoc page length calculations in fs/nfs/write.c Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
@ -217,3 +217,21 @@ void nfs_super_set_maxbytes(struct super_block *sb, __u64 maxfilesize)
|
||||
if (sb->s_maxbytes > MAX_LFS_FILESIZE || sb->s_maxbytes <= 0)
|
||||
sb->s_maxbytes = MAX_LFS_FILESIZE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Determine the number of bytes of data the page contains
|
||||
*/
|
||||
static inline
|
||||
unsigned int nfs_page_length(struct page *page)
|
||||
{
|
||||
loff_t i_size = i_size_read(page->mapping->host);
|
||||
|
||||
if (i_size > 0) {
|
||||
pgoff_t end_index = (i_size - 1) >> PAGE_CACHE_SHIFT;
|
||||
if (page->index < end_index)
|
||||
return PAGE_CACHE_SIZE;
|
||||
if (page->index == end_index)
|
||||
return ((i_size - 1) & ~PAGE_CACHE_MASK) + 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user