diff options
Diffstat (limited to 'fs/nilfs2/sufile.h')
-rw-r--r-- | fs/nilfs2/sufile.h | 79 |
1 files changed, 75 insertions, 4 deletions
diff --git a/fs/nilfs2/sufile.h b/fs/nilfs2/sufile.h index d595f33a768d..a2e2efd4ade1 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,83 @@ 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_scrap(struct inode *, __u64, struct buffer_head *, | ||
56 | struct buffer_head *); | ||
57 | void nilfs_sufile_do_free(struct inode *, __u64, struct buffer_head *, | ||
58 | struct buffer_head *); | ||
59 | void nilfs_sufile_do_set_error(struct inode *, __u64, struct buffer_head *, | ||
60 | struct buffer_head *); | ||
61 | |||
62 | /** | ||
63 | * nilfs_sufile_cancel_free - | ||
64 | * @sufile: inode of segment usage file | ||
65 | * @segnum: segment number | ||
66 | * | ||
67 | * Description: | ||
68 | * | ||
69 | * Return Value: On success, 0 is returned. On error, one of the following | ||
70 | * negative error codes is returned. | ||
71 | * | ||
72 | * %-EIO - I/O error. | ||
73 | * | ||
74 | * %-ENOMEM - Insufficient amount of memory available. | ||
75 | */ | ||
76 | static inline int nilfs_sufile_cancel_free(struct inode *sufile, __u64 segnum) | ||
77 | { | ||
78 | return nilfs_sufile_update(sufile, segnum, 0, | ||
79 | nilfs_sufile_do_cancel_free); | ||
80 | } | ||
81 | |||
82 | /** | ||
83 | * nilfs_sufile_scrap - make a segment garbage | ||
84 | * @sufile: inode of segment usage file | ||
85 | * @segnum: segment number to be freed | ||
86 | */ | ||
87 | static inline int nilfs_sufile_scrap(struct inode *sufile, __u64 segnum) | ||
88 | { | ||
89 | return nilfs_sufile_update(sufile, segnum, 1, nilfs_sufile_do_scrap); | ||
90 | } | ||
91 | |||
92 | /** | ||
93 | * nilfs_sufile_free - free segment | ||
94 | * @sufile: inode of segment usage file | ||
95 | * @segnum: segment number to be freed | ||
96 | */ | ||
97 | static inline int nilfs_sufile_free(struct inode *sufile, __u64 segnum) | ||
98 | { | ||
99 | return nilfs_sufile_update(sufile, segnum, 0, nilfs_sufile_do_free); | ||
100 | } | ||
101 | |||
102 | /** | ||
103 | * nilfs_sufile_set_error - mark a segment as erroneous | ||
104 | * @sufile: inode of segment usage file | ||
105 | * @segnum: segment number | ||
106 | * | ||
107 | * Description: nilfs_sufile_set_error() marks the segment specified by | ||
108 | * @segnum as erroneous. The error segment will never be used again. | ||
109 | * | ||
110 | * Return Value: On success, 0 is returned. On error, one of the following | ||
111 | * negative error codes is returned. | ||
112 | * | ||
113 | * %-EIO - I/O error. | ||
114 | * | ||
115 | * %-ENOMEM - Insufficient amount of memory available. | ||
116 | * | ||
117 | * %-EINVAL - Invalid segment usage number. | ||
118 | */ | ||
119 | static inline int nilfs_sufile_set_error(struct inode *sufile, __u64 segnum) | ||
120 | { | ||
121 | return nilfs_sufile_update(sufile, segnum, 0, | ||
122 | nilfs_sufile_do_set_error); | ||
123 | } | ||
53 | 124 | ||
54 | #endif /* _NILFS_SUFILE_H */ | 125 | #endif /* _NILFS_SUFILE_H */ |