diff options
Diffstat (limited to 'fs/nilfs2/nilfs.h')
-rw-r--r-- | fs/nilfs2/nilfs.h | 47 |
1 files changed, 33 insertions, 14 deletions
diff --git a/fs/nilfs2/nilfs.h b/fs/nilfs2/nilfs.h index 777e8fd04304..a8dd344303cb 100644 --- a/fs/nilfs2/nilfs.h +++ b/fs/nilfs2/nilfs.h | |||
@@ -30,7 +30,6 @@ | |||
30 | #include <linux/blkdev.h> | 30 | #include <linux/blkdev.h> |
31 | #include <linux/nilfs2_fs.h> | 31 | #include <linux/nilfs2_fs.h> |
32 | #include "the_nilfs.h" | 32 | #include "the_nilfs.h" |
33 | #include "sb.h" | ||
34 | #include "bmap.h" | 33 | #include "bmap.h" |
35 | 34 | ||
36 | /* | 35 | /* |
@@ -115,19 +114,19 @@ enum { | |||
115 | * Macros to check inode numbers | 114 | * Macros to check inode numbers |
116 | */ | 115 | */ |
117 | #define NILFS_MDT_INO_BITS \ | 116 | #define NILFS_MDT_INO_BITS \ |
118 | ((unsigned int)(1 << NILFS_DAT_INO | 1 << NILFS_CPFILE_INO | \ | 117 | ((unsigned int)(1 << NILFS_DAT_INO | 1 << NILFS_CPFILE_INO | \ |
119 | 1 << NILFS_SUFILE_INO | 1 << NILFS_IFILE_INO | \ | 118 | 1 << NILFS_SUFILE_INO | 1 << NILFS_IFILE_INO | \ |
120 | 1 << NILFS_ATIME_INO | 1 << NILFS_SKETCH_INO)) | 119 | 1 << NILFS_ATIME_INO | 1 << NILFS_SKETCH_INO)) |
121 | 120 | ||
122 | #define NILFS_SYS_INO_BITS \ | 121 | #define NILFS_SYS_INO_BITS \ |
123 | ((unsigned int)(1 << NILFS_ROOT_INO) | NILFS_MDT_INO_BITS) | 122 | ((unsigned int)(1 << NILFS_ROOT_INO) | NILFS_MDT_INO_BITS) |
124 | 123 | ||
125 | #define NILFS_FIRST_INO(sb) (NILFS_SB(sb)->s_nilfs->ns_first_ino) | 124 | #define NILFS_FIRST_INO(sb) (((struct the_nilfs *)sb->s_fs_info)->ns_first_ino) |
126 | 125 | ||
127 | #define NILFS_MDT_INODE(sb, ino) \ | 126 | #define NILFS_MDT_INODE(sb, ino) \ |
128 | ((ino) < NILFS_FIRST_INO(sb) && (NILFS_MDT_INO_BITS & (1 << (ino)))) | 127 | ((ino) < NILFS_FIRST_INO(sb) && (NILFS_MDT_INO_BITS & (1 << (ino)))) |
129 | #define NILFS_VALID_INODE(sb, ino) \ | 128 | #define NILFS_VALID_INODE(sb, ino) \ |
130 | ((ino) >= NILFS_FIRST_INO(sb) || (NILFS_SYS_INO_BITS & (1 << (ino)))) | 129 | ((ino) >= NILFS_FIRST_INO(sb) || (NILFS_SYS_INO_BITS & (1 << (ino)))) |
131 | 130 | ||
132 | /** | 131 | /** |
133 | * struct nilfs_transaction_info: context information for synchronization | 132 | * struct nilfs_transaction_info: context information for synchronization |
@@ -212,6 +211,23 @@ static inline int nilfs_init_acl(struct inode *inode, struct inode *dir) | |||
212 | 211 | ||
213 | #define NILFS_ATIME_DISABLE | 212 | #define NILFS_ATIME_DISABLE |
214 | 213 | ||
214 | /* Flags that should be inherited by new inodes from their parent. */ | ||
215 | #define NILFS_FL_INHERITED \ | ||
216 | (FS_SECRM_FL | FS_UNRM_FL | FS_COMPR_FL | FS_SYNC_FL | \ | ||
217 | FS_IMMUTABLE_FL | FS_APPEND_FL | FS_NODUMP_FL | FS_NOATIME_FL |\ | ||
218 | FS_COMPRBLK_FL | FS_NOCOMP_FL | FS_NOTAIL_FL | FS_DIRSYNC_FL) | ||
219 | |||
220 | /* Mask out flags that are inappropriate for the given type of inode. */ | ||
221 | static inline __u32 nilfs_mask_flags(umode_t mode, __u32 flags) | ||
222 | { | ||
223 | if (S_ISDIR(mode)) | ||
224 | return flags; | ||
225 | else if (S_ISREG(mode)) | ||
226 | return flags & ~(FS_DIRSYNC_FL | FS_TOPDIR_FL); | ||
227 | else | ||
228 | return flags & (FS_NODUMP_FL | FS_NOATIME_FL); | ||
229 | } | ||
230 | |||
215 | /* dir.c */ | 231 | /* dir.c */ |
216 | extern int nilfs_add_link(struct dentry *, struct inode *); | 232 | extern int nilfs_add_link(struct dentry *, struct inode *); |
217 | extern ino_t nilfs_inode_by_name(struct inode *, const struct qstr *); | 233 | extern ino_t nilfs_inode_by_name(struct inode *, const struct qstr *); |
@@ -229,10 +245,13 @@ extern int nilfs_sync_file(struct file *, int); | |||
229 | 245 | ||
230 | /* ioctl.c */ | 246 | /* ioctl.c */ |
231 | long nilfs_ioctl(struct file *, unsigned int, unsigned long); | 247 | long nilfs_ioctl(struct file *, unsigned int, unsigned long); |
248 | long nilfs_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg); | ||
232 | int nilfs_ioctl_prepare_clean_segments(struct the_nilfs *, struct nilfs_argv *, | 249 | int nilfs_ioctl_prepare_clean_segments(struct the_nilfs *, struct nilfs_argv *, |
233 | void **); | 250 | void **); |
234 | 251 | ||
235 | /* inode.c */ | 252 | /* inode.c */ |
253 | void nilfs_inode_add_blocks(struct inode *inode, int n); | ||
254 | void nilfs_inode_sub_blocks(struct inode *inode, int n); | ||
236 | extern struct inode *nilfs_new_inode(struct inode *, int); | 255 | extern struct inode *nilfs_new_inode(struct inode *, int); |
237 | extern void nilfs_free_inode(struct inode *); | 256 | extern void nilfs_free_inode(struct inode *); |
238 | extern int nilfs_get_block(struct inode *, sector_t, struct buffer_head *, int); | 257 | extern int nilfs_get_block(struct inode *, sector_t, struct buffer_head *, int); |
@@ -266,7 +285,7 @@ extern void nilfs_destroy_inode(struct inode *); | |||
266 | extern void nilfs_error(struct super_block *, const char *, const char *, ...) | 285 | extern void nilfs_error(struct super_block *, const char *, const char *, ...) |
267 | __attribute__ ((format (printf, 3, 4))); | 286 | __attribute__ ((format (printf, 3, 4))); |
268 | extern void nilfs_warning(struct super_block *, const char *, const char *, ...) | 287 | extern void nilfs_warning(struct super_block *, const char *, const char *, ...) |
269 | __attribute__ ((format (printf, 3, 4))); | 288 | __attribute__ ((format (printf, 3, 4))); |
270 | extern struct nilfs_super_block * | 289 | extern struct nilfs_super_block * |
271 | nilfs_read_super_block(struct super_block *, u64, int, struct buffer_head **); | 290 | nilfs_read_super_block(struct super_block *, u64, int, struct buffer_head **); |
272 | extern int nilfs_store_magic_and_option(struct super_block *, | 291 | extern int nilfs_store_magic_and_option(struct super_block *, |
@@ -275,11 +294,11 @@ extern int nilfs_check_feature_compatibility(struct super_block *, | |||
275 | struct nilfs_super_block *); | 294 | struct nilfs_super_block *); |
276 | extern void nilfs_set_log_cursor(struct nilfs_super_block *, | 295 | extern void nilfs_set_log_cursor(struct nilfs_super_block *, |
277 | struct the_nilfs *); | 296 | struct the_nilfs *); |
278 | extern struct nilfs_super_block **nilfs_prepare_super(struct nilfs_sb_info *, | 297 | struct nilfs_super_block **nilfs_prepare_super(struct super_block *sb, |
279 | int flip); | 298 | int flip); |
280 | extern int nilfs_commit_super(struct nilfs_sb_info *, int); | 299 | int nilfs_commit_super(struct super_block *sb, int flag); |
281 | extern int nilfs_cleanup_super(struct nilfs_sb_info *); | 300 | int nilfs_cleanup_super(struct super_block *sb); |
282 | int nilfs_attach_checkpoint(struct nilfs_sb_info *sbi, __u64 cno, int curr_mnt, | 301 | int nilfs_attach_checkpoint(struct super_block *sb, __u64 cno, int curr_mnt, |
283 | struct nilfs_root **root); | 302 | struct nilfs_root **root); |
284 | int nilfs_checkpoint_is_mounted(struct super_block *sb, __u64 cno); | 303 | int nilfs_checkpoint_is_mounted(struct super_block *sb, __u64 cno); |
285 | 304 | ||