diff options
author | Steven Whitehouse <swhiteho@redhat.com> | 2009-01-12 05:43:39 -0500 |
---|---|---|
committer | Steven Whitehouse <steve@dolmen.chygwyn.com> | 2009-03-24 07:21:14 -0400 |
commit | f057f6cdf64175db1151b1f5d110e29904f119a1 (patch) | |
tree | 582dbf358e351f64977620c29ebf772d693b1948 /fs/gfs2/inode.h | |
parent | 22077f57dec8fcbeb1112b35313961c0902ff038 (diff) |
GFS2: Merge lock_dlm module into GFS2
This is the big patch that I've been working on for some time
now. There are many reasons for wanting to make this change
such as:
o Reducing overhead by eliminating duplicated fields between structures
o Simplifcation of the code (reduces the code size by a fair bit)
o The locking interface is now the DLM interface itself as proposed
some time ago.
o Fewer lookups of glocks when processing replies from the DLM
o Fewer memory allocations/deallocations for each glock
o Scope to do further optimisations in the future (but this patch is
more than big enough for now!)
Please note that (a) this patch relates to the lock_dlm module and
not the DLM itself, that is still a separate module; and (b) that
we retain the ability to build GFS2 as a standalone single node
filesystem with out requiring the DLM.
This patch needs a lot of testing, hence my keeping it I restarted
my -git tree after the last merge window. That way, this has the maximum
exposure before its merged. This is (modulo a few minor bug fixes) the
same patch that I've been posting on and off the the last three months
and its passed a number of different tests so far.
Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Diffstat (limited to 'fs/gfs2/inode.h')
-rw-r--r-- | fs/gfs2/inode.h | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/fs/gfs2/inode.h b/fs/gfs2/inode.h index d5329364cdff..dca4fee3078b 100644 --- a/fs/gfs2/inode.h +++ b/fs/gfs2/inode.h | |||
@@ -101,12 +101,26 @@ void gfs2_dinode_print(const struct gfs2_inode *ip); | |||
101 | extern const struct inode_operations gfs2_file_iops; | 101 | extern const struct inode_operations gfs2_file_iops; |
102 | extern const struct inode_operations gfs2_dir_iops; | 102 | extern const struct inode_operations gfs2_dir_iops; |
103 | extern const struct inode_operations gfs2_symlink_iops; | 103 | extern const struct inode_operations gfs2_symlink_iops; |
104 | extern const struct file_operations gfs2_file_fops; | 104 | extern const struct file_operations *gfs2_file_fops_nolock; |
105 | extern const struct file_operations gfs2_dir_fops; | 105 | extern const struct file_operations *gfs2_dir_fops_nolock; |
106 | extern const struct file_operations gfs2_file_fops_nolock; | ||
107 | extern const struct file_operations gfs2_dir_fops_nolock; | ||
108 | 106 | ||
109 | extern void gfs2_set_inode_flags(struct inode *inode); | 107 | extern void gfs2_set_inode_flags(struct inode *inode); |
108 | |||
109 | #ifdef CONFIG_GFS2_FS_LOCKING_DLM | ||
110 | extern const struct file_operations *gfs2_file_fops; | ||
111 | extern const struct file_operations *gfs2_dir_fops; | ||
112 | static inline int gfs2_localflocks(const struct gfs2_sbd *sdp) | ||
113 | { | ||
114 | return sdp->sd_args.ar_localflocks; | ||
115 | } | ||
116 | #else /* Single node only */ | ||
117 | #define gfs2_file_fops NULL | ||
118 | #define gfs2_dir_fops NULL | ||
119 | static inline int gfs2_localflocks(const struct gfs2_sbd *sdp) | ||
120 | { | ||
121 | return 1; | ||
122 | } | ||
123 | #endif /* CONFIG_GFS2_FS_LOCKING_DLM */ | ||
110 | 124 | ||
111 | #endif /* __INODE_DOT_H__ */ | 125 | #endif /* __INODE_DOT_H__ */ |
112 | 126 | ||