1/*
2 * Copyright (c) 2000-2002,2005-2006 Silicon Graphics, Inc.
3 * All Rights Reserved.
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License as
7 * published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope that it would be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write the Free Software Foundation,
16 * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
17 */
18#include "xfs.h"
19
20int  fs_noerr(void) { return 0; }
21int  fs_nosys(void) { return ENOSYS; }
22void fs_noval(void) { return; }
23
24void
25fs_tosspages(
26	bhv_desc_t	*bdp,
27	xfs_off_t	first,
28	xfs_off_t	last,
29	int		fiopt)
30{
31	bhv_vnode_t	*vp = BHV_TO_VNODE(bdp);
32	struct inode	*ip = vn_to_inode(vp);
33
34	if (VN_CACHED(vp))
35		truncate_inode_pages(ip->i_mapping, first);
36}
37
38int
39fs_flushinval_pages(
40	bhv_desc_t	*bdp,
41	xfs_off_t	first,
42	xfs_off_t	last,
43	int		fiopt)
44{
45	bhv_vnode_t	*vp = BHV_TO_VNODE(bdp);
46	struct inode	*ip = vn_to_inode(vp);
47	int		ret = 0;
48
49	if (VN_CACHED(vp)) {
50		if (VN_TRUNC(vp))
51			VUNTRUNCATE(vp);
52		ret = filemap_write_and_wait(ip->i_mapping);
53		if (!ret)
54			truncate_inode_pages(ip->i_mapping, first);
55	}
56	return ret;
57}
58
59int
60fs_flush_pages(
61	bhv_desc_t	*bdp,
62	xfs_off_t	first,
63	xfs_off_t	last,
64	uint64_t	flags,
65	int		fiopt)
66{
67	bhv_vnode_t	*vp = BHV_TO_VNODE(bdp);
68	struct inode	*ip = vn_to_inode(vp);
69	int		ret = 0;
70	int		ret2;
71
72	if (VN_DIRTY(vp)) {
73		if (VN_TRUNC(vp))
74			VUNTRUNCATE(vp);
75		ret = filemap_fdatawrite(ip->i_mapping);
76		if (flags & XFS_B_ASYNC)
77			return ret;
78		ret2 = filemap_fdatawait(ip->i_mapping);
79		if (!ret)
80			ret = ret2;
81	}
82	return ret;
83}
84