diff options
author | Christoph Hellwig <hch@infradead.org> | 2007-08-28 21:59:36 -0400 |
---|---|---|
committer | Tim Shimmin <tes@chook.melbourne.sgi.com> | 2007-10-15 21:41:15 -0400 |
commit | 293688ec420f1160ed93ea4c7948ed5baf8bafa7 (patch) | |
tree | 3e342f759b3ae0499eedcb8f050dd2c4c1b48e93 /fs/xfs/xfs_mount.h | |
parent | f541d270dbce375b7bd8cef466bdaf0cff945b45 (diff) |
[XFS] remove dependency of the dmapi module on behaviors
Mount options are now parsed by the main XFS module and rejected if dmapi
support is not available, and there is a new dm operation to send the
mount event.
SGI-PV: 969608
SGI-Modid: xfs-linux-melb:xfs-kern:29502a
Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: David Chinner <dgc@sgi.com>
Signed-off-by: Tim Shimmin <tes@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_mount.h')
-rw-r--r-- | fs/xfs/xfs_mount.h | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index 02b9a6ee9403..a7cd596ec6d2 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h | |||
@@ -85,6 +85,8 @@ typedef int (*xfs_send_namesp_t)(dm_eventtype_t, struct bhv_vfs *, | |||
85 | bhv_vnode_t *, | 85 | bhv_vnode_t *, |
86 | dm_right_t, bhv_vnode_t *, dm_right_t, | 86 | dm_right_t, bhv_vnode_t *, dm_right_t, |
87 | char *, char *, mode_t, int, int); | 87 | char *, char *, mode_t, int, int); |
88 | typedef int (*xfs_send_mount_t)(struct xfs_mount *, dm_right_t, | ||
89 | char *, char *); | ||
88 | typedef void (*xfs_send_unmount_t)(struct bhv_vfs *, bhv_vnode_t *, | 90 | typedef void (*xfs_send_unmount_t)(struct bhv_vfs *, bhv_vnode_t *, |
89 | dm_right_t, mode_t, int, int); | 91 | dm_right_t, mode_t, int, int); |
90 | 92 | ||
@@ -93,21 +95,24 @@ typedef struct xfs_dmops { | |||
93 | xfs_send_mmap_t xfs_send_mmap; | 95 | xfs_send_mmap_t xfs_send_mmap; |
94 | xfs_send_destroy_t xfs_send_destroy; | 96 | xfs_send_destroy_t xfs_send_destroy; |
95 | xfs_send_namesp_t xfs_send_namesp; | 97 | xfs_send_namesp_t xfs_send_namesp; |
98 | xfs_send_mount_t xfs_send_mount; | ||
96 | xfs_send_unmount_t xfs_send_unmount; | 99 | xfs_send_unmount_t xfs_send_unmount; |
97 | } xfs_dmops_t; | 100 | } xfs_dmops_t; |
98 | 101 | ||
99 | #define XFS_SEND_DATA(mp, ev,vp,off,len,fl,lock) \ | 102 | #define XFS_SEND_DATA(mp, ev,vp,off,len,fl,lock) \ |
100 | (*(mp)->m_dm_ops.xfs_send_data)(ev,vp,off,len,fl,lock) | 103 | (*(mp)->m_dm_ops->xfs_send_data)(ev,vp,off,len,fl,lock) |
101 | #define XFS_SEND_MMAP(mp, vma,fl) \ | 104 | #define XFS_SEND_MMAP(mp, vma,fl) \ |
102 | (*(mp)->m_dm_ops.xfs_send_mmap)(vma,fl) | 105 | (*(mp)->m_dm_ops->xfs_send_mmap)(vma,fl) |
103 | #define XFS_SEND_DESTROY(mp, vp,right) \ | 106 | #define XFS_SEND_DESTROY(mp, vp,right) \ |
104 | (*(mp)->m_dm_ops.xfs_send_destroy)(vp,right) | 107 | (*(mp)->m_dm_ops->xfs_send_destroy)(vp,right) |
105 | #define XFS_SEND_NAMESP(mp, ev,b1,r1,b2,r2,n1,n2,mode,rval,fl) \ | 108 | #define XFS_SEND_NAMESP(mp, ev,b1,r1,b2,r2,n1,n2,mode,rval,fl) \ |
106 | (*(mp)->m_dm_ops.xfs_send_namesp)(ev,NULL,b1,r1,b2,r2,n1,n2,mode,rval,fl) | 109 | (*(mp)->m_dm_ops->xfs_send_namesp)(ev,NULL,b1,r1,b2,r2,n1,n2,mode,rval,fl) |
107 | #define XFS_SEND_PREUNMOUNT(mp, vfs,b1,r1,b2,r2,n1,n2,mode,rval,fl) \ | 110 | #define XFS_SEND_PREUNMOUNT(mp, vfs,b1,r1,b2,r2,n1,n2,mode,rval,fl) \ |
108 | (*(mp)->m_dm_ops.xfs_send_namesp)(DM_EVENT_PREUNMOUNT,vfs,b1,r1,b2,r2,n1,n2,mode,rval,fl) | 111 | (*(mp)->m_dm_ops->xfs_send_namesp)(DM_EVENT_PREUNMOUNT,vfs,b1,r1,b2,r2,n1,n2,mode,rval,fl) |
112 | #define XFS_SEND_MOUNT(mp,right,path,name) \ | ||
113 | (*(mp)->m_dm_ops->xfs_send_mount)(mp,right,path,name) | ||
109 | #define XFS_SEND_UNMOUNT(mp, vfsp,vp,right,mode,rval,fl) \ | 114 | #define XFS_SEND_UNMOUNT(mp, vfsp,vp,right,mode,rval,fl) \ |
110 | (*(mp)->m_dm_ops.xfs_send_unmount)(vfsp,vp,right,mode,rval,fl) | 115 | (*(mp)->m_dm_ops->xfs_send_unmount)(vfsp,vp,right,mode,rval,fl) |
111 | 116 | ||
112 | 117 | ||
113 | /* | 118 | /* |
@@ -407,7 +412,7 @@ typedef struct xfs_mount { | |||
407 | uint m_chsize; /* size of next field */ | 412 | uint m_chsize; /* size of next field */ |
408 | struct xfs_chash *m_chash; /* fs private inode per-cluster | 413 | struct xfs_chash *m_chash; /* fs private inode per-cluster |
409 | * hash table */ | 414 | * hash table */ |
410 | struct xfs_dmops m_dm_ops; /* vector of DMI ops */ | 415 | struct xfs_dmops *m_dm_ops; /* vector of DMI ops */ |
411 | struct xfs_qmops m_qm_ops; /* vector of XQM ops */ | 416 | struct xfs_qmops m_qm_ops; /* vector of XQM ops */ |
412 | struct xfs_ioops m_io_ops; /* vector of I/O ops */ | 417 | struct xfs_ioops m_io_ops; /* vector of I/O ops */ |
413 | atomic_t m_active_trans; /* number trans frozen */ | 418 | atomic_t m_active_trans; /* number trans frozen */ |
@@ -642,7 +647,10 @@ extern void xfs_sb_from_disk(struct xfs_sb *, struct xfs_dsb *); | |||
642 | extern void xfs_sb_to_disk(struct xfs_dsb *, struct xfs_sb *, __int64_t); | 647 | extern void xfs_sb_to_disk(struct xfs_dsb *, struct xfs_sb *, __int64_t); |
643 | extern int xfs_sb_validate_fsb_count(struct xfs_sb *, __uint64_t); | 648 | extern int xfs_sb_validate_fsb_count(struct xfs_sb *, __uint64_t); |
644 | 649 | ||
645 | extern struct xfs_dmops xfs_dmcore_stub; | 650 | extern int xfs_dmops_get(struct xfs_mount *, struct xfs_mount_args *); |
651 | extern void xfs_dmops_put(struct xfs_mount *); | ||
652 | |||
653 | extern struct xfs_dmops xfs_dmcore_xfs; | ||
646 | extern struct xfs_qmops xfs_qmcore_stub; | 654 | extern struct xfs_qmops xfs_qmcore_stub; |
647 | extern struct xfs_ioops xfs_iocore_xfs; | 655 | extern struct xfs_ioops xfs_iocore_xfs; |
648 | 656 | ||