Re: [RFC] Implement ->page_mkwrite for XFS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Feb 07, 2007 at 10:18:23AM +0000, Christoph Hellwig wrote:
> 
> This looks to me.  But given that this is generic code except for the
> get_block callback, shouldn't we put the guts into buffer.c and wire
> all filesystems up to use it? e.g.
> 
> 
> int block_page_mkwrite(struct vm_area_struct  *vma, struct page *page,
> 		get_block_t get_block)
> {
> 	struct inode *inode = vma->vm_file->f_path.dentry->d_inode;
> 	unsigned long end;
> 	int ret = 0;
> 
> 	if ((page->index + 1) << PAGE_CACHE_SHIFT > i_size_read(inode))
> 		end = i_size_read(inode) & ~PAGE_CACHE_MASK;
> 	else
> 		end = PAGE_CACHE_SIZE;
> 
> 	lock_page(page);
> 	ret = block_prepare_write(page, 0, end, block);
> 	if (!ret)
> 		ret = block_commit_write(page, 0, end);
> 	unlock_page(page);
> 	return ret;
> }
> 
> and then in xfs and similar in other filesystems:
> 
> STATIC int
> xfs_vm_page_mkwrite(
> 	struct vm_area_struct	*vma,
> 	struct page		*page)
> {
> 	return block_page_mkwrite(vma, page, xfs_get_blocks);
> }

Yes, that can be done. block_page_mkwrite() would then go into
fs/buffer.c? My patch originally had a bunch of other stuff and
i wasn't sure that it could be done with generic code.

I'll send an updated patch in a little while.

> BTW, why is xfs_get_blocks not called xfs_get_block?

<shrug>

I presume because it replaced the xfs_get_block() function when the
block mapping callouts were modified to support mapping of multiple
blocks. Maybe you should ask Nathan that question. ;)

Cheers,

Dave.
-- 
Dave Chinner
Principal Engineer
SGI Australian Software Group
-
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux