]>
Commit | Line | Data |
---|---|---|
1da177e4 | 1 | /* |
7b718769 NS |
2 | * Copyright (c) 2000-2003,2005 Silicon Graphics, Inc. |
3 | * All Rights Reserved. | |
1da177e4 | 4 | * |
7b718769 NS |
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 | |
1da177e4 LT |
7 | * published by the Free Software Foundation. |
8 | * | |
7b718769 NS |
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. | |
1da177e4 | 13 | * |
7b718769 NS |
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 | |
1da177e4 | 17 | */ |
1da177e4 | 18 | #include "xfs.h" |
a844f451 | 19 | #include "xfs_fs.h" |
1da177e4 | 20 | #include "xfs_types.h" |
a844f451 | 21 | #include "xfs_bit.h" |
1da177e4 | 22 | #include "xfs_log.h" |
a844f451 | 23 | #include "xfs_inum.h" |
1da177e4 LT |
24 | #include "xfs_trans.h" |
25 | #include "xfs_sb.h" | |
26 | #include "xfs_ag.h" | |
1da177e4 | 27 | #include "xfs_dir2.h" |
3e57ecf6 | 28 | #include "xfs_dfrag.h" |
1da177e4 LT |
29 | #include "xfs_dmapi.h" |
30 | #include "xfs_mount.h" | |
1da177e4 | 31 | #include "xfs_bmap_btree.h" |
a844f451 | 32 | #include "xfs_alloc_btree.h" |
1da177e4 | 33 | #include "xfs_ialloc_btree.h" |
1da177e4 | 34 | #include "xfs_dir2_sf.h" |
a844f451 | 35 | #include "xfs_attr_sf.h" |
1da177e4 | 36 | #include "xfs_dinode.h" |
1da177e4 | 37 | #include "xfs_inode.h" |
a844f451 NS |
38 | #include "xfs_inode_item.h" |
39 | #include "xfs_itable.h" | |
40 | #include "xfs_btree.h" | |
41 | #include "xfs_alloc.h" | |
42 | #include "xfs_ialloc.h" | |
1da177e4 LT |
43 | #include "xfs_bmap.h" |
44 | #include "xfs_error.h" | |
1da177e4 LT |
45 | #include "xfs_rw.h" |
46 | #include "xfs_quota.h" | |
47 | #include "xfs_trans_space.h" | |
48 | #include "xfs_iomap.h" | |
49 | ||
50 | ||
51 | STATIC xfs_fsize_t | |
52 | xfs_size_fn( | |
53 | xfs_inode_t *ip) | |
54 | { | |
ba87ea69 | 55 | return XFS_ISIZE(ip); |
1da177e4 LT |
56 | } |
57 | ||
58 | STATIC int | |
59 | xfs_ioinit( | |
b83bd138 | 60 | struct bhv_vfs *vfsp, |
1da177e4 LT |
61 | struct xfs_mount_args *mntargs, |
62 | int flags) | |
63 | { | |
64 | return xfs_mountfs(vfsp, XFS_VFSTOM(vfsp), flags); | |
65 | } | |
66 | ||
67 | xfs_ioops_t xfs_iocore_xfs = { | |
68 | .xfs_ioinit = (xfs_ioinit_t) xfs_ioinit, | |
69 | .xfs_bmapi_func = (xfs_bmapi_t) xfs_bmapi, | |
3e57ecf6 | 70 | .xfs_bunmapi_func = (xfs_bunmapi_t) xfs_bunmapi, |
1da177e4 LT |
71 | .xfs_bmap_eof_func = (xfs_bmap_eof_t) xfs_bmap_eof, |
72 | .xfs_iomap_write_direct = | |
73 | (xfs_iomap_write_direct_t) xfs_iomap_write_direct, | |
74 | .xfs_iomap_write_delay = | |
75 | (xfs_iomap_write_delay_t) xfs_iomap_write_delay, | |
76 | .xfs_iomap_write_allocate = | |
77 | (xfs_iomap_write_allocate_t) xfs_iomap_write_allocate, | |
78 | .xfs_iomap_write_unwritten = | |
79 | (xfs_iomap_write_unwritten_t) xfs_iomap_write_unwritten, | |
80 | .xfs_ilock = (xfs_lock_t) xfs_ilock, | |
81 | .xfs_lck_map_shared = (xfs_lck_map_shared_t) xfs_ilock_map_shared, | |
82 | .xfs_ilock_demote = (xfs_lock_demote_t) xfs_ilock_demote, | |
83 | .xfs_ilock_nowait = (xfs_lock_nowait_t) xfs_ilock_nowait, | |
84 | .xfs_unlock = (xfs_unlk_t) xfs_iunlock, | |
85 | .xfs_size_func = (xfs_size_t) xfs_size_fn, | |
86 | .xfs_iodone = (xfs_iodone_t) fs_noerr, | |
3e57ecf6 | 87 | .xfs_swap_extents_func = (xfs_swap_extents_t) xfs_swap_extents, |
1da177e4 LT |
88 | }; |
89 | ||
90 | void | |
91 | xfs_iocore_inode_reinit( | |
92 | xfs_inode_t *ip) | |
93 | { | |
94 | xfs_iocore_t *io = &ip->i_iocore; | |
95 | ||
96 | io->io_flags = 0; | |
97 | if (ip->i_d.di_flags & XFS_DIFLAG_REALTIME) | |
98 | io->io_flags |= XFS_IOCORE_RT; | |
99 | io->io_dmevmask = ip->i_d.di_dmevmask; | |
100 | io->io_dmstate = ip->i_d.di_dmstate; | |
101 | } | |
102 | ||
103 | void | |
104 | xfs_iocore_inode_init( | |
105 | xfs_inode_t *ip) | |
106 | { | |
107 | xfs_iocore_t *io = &ip->i_iocore; | |
108 | xfs_mount_t *mp = ip->i_mount; | |
109 | ||
110 | io->io_mount = mp; | |
111 | #ifdef DEBUG | |
112 | io->io_lock = &ip->i_lock; | |
113 | io->io_iolock = &ip->i_iolock; | |
114 | #endif | |
115 | ||
116 | io->io_obj = (void *)ip; | |
117 | ||
118 | xfs_iocore_inode_reinit(ip); | |
119 | } |