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