orangefs: re-add flush_racache from out-of-tree
Signed-off-by: Martin Brandenburg <martin@omnibond.com>
This commit is contained in:
parent
680908e504
commit
ed1e158777
|
@ -14,6 +14,32 @@
|
||||||
#include <linux/fs.h>
|
#include <linux/fs.h>
|
||||||
#include <linux/pagemap.h>
|
#include <linux/pagemap.h>
|
||||||
|
|
||||||
|
static int flush_racache(struct inode *inode)
|
||||||
|
{
|
||||||
|
struct orangefs_inode_s *orangefs_inode = ORANGEFS_I(inode);
|
||||||
|
struct orangefs_kernel_op_s *new_op;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
gossip_debug(GOSSIP_UTILS_DEBUG,
|
||||||
|
"%s: %pU: Handle is %pU | fs_id %d\n", __func__,
|
||||||
|
get_khandle_from_ino(inode), &orangefs_inode->refn.khandle,
|
||||||
|
orangefs_inode->refn.fs_id);
|
||||||
|
|
||||||
|
new_op = op_alloc(ORANGEFS_VFS_OP_RA_FLUSH);
|
||||||
|
if (!new_op)
|
||||||
|
return -ENOMEM;
|
||||||
|
new_op->upcall.req.ra_cache_flush.refn = orangefs_inode->refn;
|
||||||
|
|
||||||
|
ret = service_operation(new_op, "orangefs_flush_racache",
|
||||||
|
get_interruptible_flag(inode));
|
||||||
|
|
||||||
|
gossip_debug(GOSSIP_UTILS_DEBUG, "%s: got return value of %d\n",
|
||||||
|
__func__, ret);
|
||||||
|
|
||||||
|
op_release(new_op);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copy to client-core's address space from the buffers specified
|
* Copy to client-core's address space from the buffers specified
|
||||||
* by the iovec upto total_size bytes.
|
* by the iovec upto total_size bytes.
|
||||||
|
@ -597,9 +623,15 @@ static int orangefs_file_release(struct inode *inode, struct file *file)
|
||||||
*/
|
*/
|
||||||
if (file->f_path.dentry->d_inode &&
|
if (file->f_path.dentry->d_inode &&
|
||||||
file->f_path.dentry->d_inode->i_mapping &&
|
file->f_path.dentry->d_inode->i_mapping &&
|
||||||
mapping_nrpages(&file->f_path.dentry->d_inode->i_data))
|
mapping_nrpages(&file->f_path.dentry->d_inode->i_data)) {
|
||||||
|
gossip_debug(GOSSIP_INODE_DEBUG,
|
||||||
|
"calling flush_racache on %pU\n",
|
||||||
|
get_khandle_from_ino(inode));
|
||||||
|
flush_racache(inode);
|
||||||
|
gossip_debug(GOSSIP_INODE_DEBUG, "flush_racache finished\n");
|
||||||
truncate_inode_pages(file->f_path.dentry->d_inode->i_mapping,
|
truncate_inode_pages(file->f_path.dentry->d_inode->i_mapping,
|
||||||
0);
|
0);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue