ANDROID: sdcardfs: support direct-IO (DIO) operations

This comes from the wrapfs
commit 2e346c83b26e ("Wrapfs: support direct-IO (DIO) operations")

Signed-off-by: Li Mengyang <li.mengyang@stonybrook.edu>
Signed-off-by: Erez Zadok <ezk@cs.sunysb.edu>
Signed-off-by: Daniel Rosenberg <drosen@google.com>
Bug: 34133558
Change-Id: I3fd779c510ab70d56b1d918f99c20421b524cdc4
This commit is contained in:
Daniel Rosenberg 2017-02-24 15:49:45 -08:00 committed by Amit Pundir
parent 1492780c4b
commit 41e6f442c9
2 changed files with 5 additions and 17 deletions

View file

@ -84,27 +84,14 @@ static int sdcardfs_page_mkwrite(struct vm_area_struct *vma,
static ssize_t sdcardfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
{
/*
* This function returns zero on purpose in order to support direct IO.
* __dentry_open checks a_ops->direct_IO and returns EINVAL if it is null.
*
* However, this function won't be called by certain file operations
* including generic fs functions. * reads and writes are delivered to
* the lower file systems and the direct IOs will be handled by them.
*
* NOTE: exceptionally, on the recent kernels (since Linux 3.8.x),
* swap_writepage invokes this function directly.
* This function should never be called directly. We need it
* to exist, to get past a check in open_check_o_direct(),
* which is called from do_last().
*/
printk(KERN_INFO "%s, operation is not supported\n", __func__);
return 0;
return -EINVAL;
}
/*
* XXX: the default address_space_ops for sdcardfs is empty. We cannot set
* our inode->i_mapping->a_ops to NULL because too many code paths expect
* the a_ops vector to be non-NULL.
*/
const struct address_space_operations sdcardfs_aops = {
/* empty on purpose */
.direct_IO = sdcardfs_direct_IO,
};

View file

@ -29,6 +29,7 @@
#include <linux/dcache.h>
#include <linux/file.h>
#include <linux/fs.h>
#include <linux/aio.h>
#include <linux/mm.h>
#include <linux/mount.h>
#include <linux/namei.h>