vfs: Rename generic_file_aio_write_nolock

generic_file_aio_write_nolock() is now used only by block devices and raw
character device. Filesystems should use __generic_file_aio_write() in case
generic_file_aio_write() doesn't suit them. So rename the function to
blkdev_aio_write() and move it to fs/blockdev.c.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
Christoph Hellwig
2009-08-20 17:43:41 +02:00
committed by Jan Kara
parent 918941a3f3
commit eef9938067
4 changed files with 33 additions and 43 deletions

View File

@@ -2462,45 +2462,6 @@ out:
}
EXPORT_SYMBOL(__generic_file_aio_write);
/**
* generic_file_aio_write_nolock - write data, usually to a device
* @iocb: IO state structure
* @iov: vector with data to write
* @nr_segs: number of segments in the vector
* @pos: position in file where to write
*
* This is a wrapper around __generic_file_aio_write() which takes care of
* syncing the file in case of O_SYNC file. It does not take i_mutex for the
* write itself but may do so during syncing. It is meant for users like block
* devices which do not need i_mutex during write. If your filesystem needs to
* do a write but already holds i_mutex, use __generic_file_aio_write()
* directly and then sync the file like generic_file_aio_write().
*/
ssize_t generic_file_aio_write_nolock(struct kiocb *iocb,
const struct iovec *iov, unsigned long nr_segs, loff_t pos)
{
struct file *file = iocb->ki_filp;
struct address_space *mapping = file->f_mapping;
struct inode *inode = mapping->host;
ssize_t ret;
BUG_ON(iocb->ki_pos != pos);
ret = __generic_file_aio_write(iocb, iov, nr_segs, &iocb->ki_pos);
if ((ret > 0 || ret == -EIOCBQUEUED) &&
((file->f_flags & O_SYNC) || IS_SYNC(inode))) {
ssize_t err;
err = sync_page_range_nolock(inode, mapping, pos, ret);
if (err < 0 && ret > 0)
ret = err;
}
return ret;
}
EXPORT_SYMBOL(generic_file_aio_write_nolock);
/**
* generic_file_aio_write - write data to a file
* @iocb: IO state structure