diff options
Diffstat (limited to 'fs/fat/fat.h')
-rw-r--r-- | fs/fat/fat.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/fs/fat/fat.h b/fs/fat/fat.h index ea440d65819c..adb0e72a176d 100644 --- a/fs/fat/fat.h +++ b/fs/fat/fat.h | |||
@@ -17,6 +17,10 @@ | |||
17 | #define VFAT_SFN_CREATE_WIN95 0x0100 /* emulate win95 rule for create */ | 17 | #define VFAT_SFN_CREATE_WIN95 0x0100 /* emulate win95 rule for create */ |
18 | #define VFAT_SFN_CREATE_WINNT 0x0200 /* emulate winnt rule for create */ | 18 | #define VFAT_SFN_CREATE_WINNT 0x0200 /* emulate winnt rule for create */ |
19 | 19 | ||
20 | #define FAT_ERRORS_CONT 1 /* ignore error and continue */ | ||
21 | #define FAT_ERRORS_PANIC 2 /* panic on error */ | ||
22 | #define FAT_ERRORS_RO 3 /* remount r/o on error */ | ||
23 | |||
20 | struct fat_mount_options { | 24 | struct fat_mount_options { |
21 | uid_t fs_uid; | 25 | uid_t fs_uid; |
22 | gid_t fs_gid; | 26 | gid_t fs_gid; |
@@ -26,6 +30,7 @@ struct fat_mount_options { | |||
26 | char *iocharset; /* Charset used for filename input/display */ | 30 | char *iocharset; /* Charset used for filename input/display */ |
27 | unsigned short shortname; /* flags for shortname display/create rule */ | 31 | unsigned short shortname; /* flags for shortname display/create rule */ |
28 | unsigned char name_check; /* r = relaxed, n = normal, s = strict */ | 32 | unsigned char name_check; /* r = relaxed, n = normal, s = strict */ |
33 | unsigned char errors; /* On error: continue, panic, remount-ro */ | ||
29 | unsigned short allow_utime;/* permission for setting the [am]time */ | 34 | unsigned short allow_utime;/* permission for setting the [am]time */ |
30 | unsigned quiet:1, /* set = fake successful chmods and chowns */ | 35 | unsigned quiet:1, /* set = fake successful chmods and chowns */ |
31 | showexec:1, /* set = only set x bit for com/exe/bat */ | 36 | showexec:1, /* set = only set x bit for com/exe/bat */ |
@@ -74,6 +79,7 @@ struct msdos_sb_info { | |||
74 | 79 | ||
75 | int fatent_shift; | 80 | int fatent_shift; |
76 | struct fatent_operations *fatent_ops; | 81 | struct fatent_operations *fatent_ops; |
82 | struct inode *fat_inode; | ||
77 | 83 | ||
78 | spinlock_t inode_hash_lock; | 84 | spinlock_t inode_hash_lock; |
79 | struct hlist_head inode_hashtable[FAT_HASH_SIZE]; | 85 | struct hlist_head inode_hashtable[FAT_HASH_SIZE]; |
@@ -251,6 +257,7 @@ struct fat_entry { | |||
251 | } u; | 257 | } u; |
252 | int nr_bhs; | 258 | int nr_bhs; |
253 | struct buffer_head *bhs[2]; | 259 | struct buffer_head *bhs[2]; |
260 | struct inode *fat_inode; | ||
254 | }; | 261 | }; |
255 | 262 | ||
256 | static inline void fatent_init(struct fat_entry *fatent) | 263 | static inline void fatent_init(struct fat_entry *fatent) |
@@ -259,6 +266,7 @@ static inline void fatent_init(struct fat_entry *fatent) | |||
259 | fatent->entry = 0; | 266 | fatent->entry = 0; |
260 | fatent->u.ent32_p = NULL; | 267 | fatent->u.ent32_p = NULL; |
261 | fatent->bhs[0] = fatent->bhs[1] = NULL; | 268 | fatent->bhs[0] = fatent->bhs[1] = NULL; |
269 | fatent->fat_inode = NULL; | ||
262 | } | 270 | } |
263 | 271 | ||
264 | static inline void fatent_set_entry(struct fat_entry *fatent, int entry) | 272 | static inline void fatent_set_entry(struct fat_entry *fatent, int entry) |
@@ -275,6 +283,7 @@ static inline void fatent_brelse(struct fat_entry *fatent) | |||
275 | brelse(fatent->bhs[i]); | 283 | brelse(fatent->bhs[i]); |
276 | fatent->nr_bhs = 0; | 284 | fatent->nr_bhs = 0; |
277 | fatent->bhs[0] = fatent->bhs[1] = NULL; | 285 | fatent->bhs[0] = fatent->bhs[1] = NULL; |
286 | fatent->fat_inode = NULL; | ||
278 | } | 287 | } |
279 | 288 | ||
280 | extern void fat_ent_access_init(struct super_block *sb); | 289 | extern void fat_ent_access_init(struct super_block *sb); |
@@ -296,6 +305,8 @@ extern int fat_setattr(struct dentry * dentry, struct iattr * attr); | |||
296 | extern void fat_truncate(struct inode *inode); | 305 | extern void fat_truncate(struct inode *inode); |
297 | extern int fat_getattr(struct vfsmount *mnt, struct dentry *dentry, | 306 | extern int fat_getattr(struct vfsmount *mnt, struct dentry *dentry, |
298 | struct kstat *stat); | 307 | struct kstat *stat); |
308 | extern int fat_file_fsync(struct file *file, struct dentry *dentry, | ||
309 | int datasync); | ||
299 | 310 | ||
300 | /* fat/inode.c */ | 311 | /* fat/inode.c */ |
301 | extern void fat_attach(struct inode *inode, loff_t i_pos); | 312 | extern void fat_attach(struct inode *inode, loff_t i_pos); |
@@ -310,7 +321,7 @@ extern int fat_fill_super(struct super_block *sb, void *data, int silent, | |||
310 | extern int fat_flush_inodes(struct super_block *sb, struct inode *i1, | 321 | extern int fat_flush_inodes(struct super_block *sb, struct inode *i1, |
311 | struct inode *i2); | 322 | struct inode *i2); |
312 | /* fat/misc.c */ | 323 | /* fat/misc.c */ |
313 | extern void fat_fs_panic(struct super_block *s, const char *fmt, ...) | 324 | extern void fat_fs_error(struct super_block *s, const char *fmt, ...) |
314 | __attribute__ ((format (printf, 2, 3))) __cold; | 325 | __attribute__ ((format (printf, 2, 3))) __cold; |
315 | extern void fat_clusters_flush(struct super_block *sb); | 326 | extern void fat_clusters_flush(struct super_block *sb); |
316 | extern int fat_chain_add(struct inode *inode, int new_dclus, int nr_cluster); | 327 | extern int fat_chain_add(struct inode *inode, int new_dclus, int nr_cluster); |