diff options
Diffstat (limited to 'fs/nilfs2/sufile.h')
-rw-r--r-- | fs/nilfs2/sufile.h | 67 |
1 files changed, 63 insertions, 4 deletions
diff --git a/fs/nilfs2/sufile.h b/fs/nilfs2/sufile.h index d595f33a768d..449a6e2671b0 100644 --- a/fs/nilfs2/sufile.h +++ b/fs/nilfs2/sufile.h | |||
@@ -36,9 +36,6 @@ static inline unsigned long nilfs_sufile_get_nsegments(struct inode *sufile) | |||
36 | } | 36 | } |
37 | 37 | ||
38 | int nilfs_sufile_alloc(struct inode *, __u64 *); | 38 | int nilfs_sufile_alloc(struct inode *, __u64 *); |
39 | int nilfs_sufile_cancel_free(struct inode *, __u64); | ||
40 | int nilfs_sufile_freev(struct inode *, __u64 *, size_t); | ||
41 | int nilfs_sufile_free(struct inode *, __u64); | ||
42 | int nilfs_sufile_get_segment_usage(struct inode *, __u64, | 39 | int nilfs_sufile_get_segment_usage(struct inode *, __u64, |
43 | struct nilfs_segment_usage **, | 40 | struct nilfs_segment_usage **, |
44 | struct buffer_head **); | 41 | struct buffer_head **); |
@@ -46,9 +43,71 @@ void nilfs_sufile_put_segment_usage(struct inode *, __u64, | |||
46 | struct buffer_head *); | 43 | struct buffer_head *); |
47 | int nilfs_sufile_get_stat(struct inode *, struct nilfs_sustat *); | 44 | int nilfs_sufile_get_stat(struct inode *, struct nilfs_sustat *); |
48 | int nilfs_sufile_get_ncleansegs(struct inode *, unsigned long *); | 45 | int nilfs_sufile_get_ncleansegs(struct inode *, unsigned long *); |
49 | int nilfs_sufile_set_error(struct inode *, __u64); | ||
50 | ssize_t nilfs_sufile_get_suinfo(struct inode *, __u64, struct nilfs_suinfo *, | 46 | ssize_t nilfs_sufile_get_suinfo(struct inode *, __u64, struct nilfs_suinfo *, |
51 | size_t); | 47 | size_t); |
52 | 48 | ||
49 | int nilfs_sufile_update(struct inode *, __u64, int, | ||
50 | void (*dofunc)(struct inode *, __u64, | ||
51 | struct buffer_head *, | ||
52 | struct buffer_head *)); | ||
53 | void nilfs_sufile_do_cancel_free(struct inode *, __u64, struct buffer_head *, | ||
54 | struct buffer_head *); | ||
55 | void nilfs_sufile_do_free(struct inode *, __u64, struct buffer_head *, | ||
56 | struct buffer_head *); | ||
57 | void nilfs_sufile_do_set_error(struct inode *, __u64, struct buffer_head *, | ||
58 | struct buffer_head *); | ||
59 | |||
60 | /** | ||
61 | * nilfs_sufile_cancel_free - | ||
62 | * @sufile: inode of segment usage file | ||
63 | * @segnum: segment number | ||
64 | * | ||
65 | * Description: | ||
66 | * | ||
67 | * Return Value: On success, 0 is returned. On error, one of the following | ||
68 | * negative error codes is returned. | ||
69 | * | ||
70 | * %-EIO - I/O error. | ||
71 | * | ||
72 | * %-ENOMEM - Insufficient amount of memory available. | ||
73 | */ | ||
74 | static inline int nilfs_sufile_cancel_free(struct inode *sufile, __u64 segnum) | ||
75 | { | ||
76 | return nilfs_sufile_update(sufile, segnum, 0, | ||
77 | nilfs_sufile_do_cancel_free); | ||
78 | } | ||
79 | |||
80 | /** | ||
81 | * nilfs_sufile_free - free segment | ||
82 | * @sufile: inode of segment usage file | ||
83 | * @segnum: segment number to be freed | ||
84 | */ | ||
85 | static inline int nilfs_sufile_free(struct inode *sufile, __u64 segnum) | ||
86 | { | ||
87 | return nilfs_sufile_update(sufile, segnum, 0, nilfs_sufile_do_free); | ||
88 | } | ||
89 | |||
90 | /** | ||
91 | * nilfs_sufile_set_error - mark a segment as erroneous | ||
92 | * @sufile: inode of segment usage file | ||
93 | * @segnum: segment number | ||
94 | * | ||
95 | * Description: nilfs_sufile_set_error() marks the segment specified by | ||
96 | * @segnum as erroneous. The error segment will never be used again. | ||
97 | * | ||
98 | * Return Value: On success, 0 is returned. On error, one of the following | ||
99 | * negative error codes is returned. | ||
100 | * | ||
101 | * %-EIO - I/O error. | ||
102 | * | ||
103 | * %-ENOMEM - Insufficient amount of memory available. | ||
104 | * | ||
105 | * %-EINVAL - Invalid segment usage number. | ||
106 | */ | ||
107 | static inline int nilfs_sufile_set_error(struct inode *sufile, __u64 segnum) | ||
108 | { | ||
109 | return nilfs_sufile_update(sufile, segnum, 0, | ||
110 | nilfs_sufile_do_set_error); | ||
111 | } | ||
53 | 112 | ||
54 | #endif /* _NILFS_SUFILE_H */ | 113 | #endif /* _NILFS_SUFILE_H */ |