1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16#ifndef __UBIFS_MISC_H__
17#define __UBIFS_MISC_H__
18
19
20
21
22
23
24
25static inline int ubifs_zn_dirty(const struct ubifs_znode *znode)
26{
27 return !!test_bit(DIRTY_ZNODE, &znode->flags);
28}
29
30
31
32
33
34
35
36static inline int ubifs_zn_obsolete(const struct ubifs_znode *znode)
37{
38 return !!test_bit(OBSOLETE_ZNODE, &znode->flags);
39}
40
41
42
43
44
45
46
47
48static inline int ubifs_zn_cow(const struct ubifs_znode *znode)
49{
50 return !!test_bit(COW_ZNODE, &znode->flags);
51}
52
53
54
55
56
57static inline void ubifs_wake_up_bgt(struct ubifs_info *c)
58{
59 if (c->bgt && !c->need_bgt) {
60 c->need_bgt = 1;
61 wake_up_process(c->bgt);
62 }
63}
64
65
66
67
68
69
70
71
72
73static inline struct ubifs_znode *
74ubifs_tnc_find_child(struct ubifs_znode *znode, int start)
75{
76 while (start < znode->child_cnt) {
77 if (znode->zbranch[start].znode)
78 return znode->zbranch[start].znode;
79 start += 1;
80 }
81
82 return NULL;
83}
84
85
86
87
88
89static inline struct ubifs_inode *ubifs_inode(const struct inode *inode)
90{
91 return container_of(inode, struct ubifs_inode, vfs_inode);
92}
93
94
95
96
97
98
99
100
101static inline int ubifs_compr_present(int compr_type)
102{
103 ubifs_assert(compr_type >= 0 && compr_type < UBIFS_COMPR_TYPES_CNT);
104 return !!ubifs_compressors[compr_type]->capi_name;
105}
106
107
108
109
110
111
112
113static inline const char *ubifs_compr_name(int compr_type)
114{
115 ubifs_assert(compr_type >= 0 && compr_type < UBIFS_COMPR_TYPES_CNT);
116 return ubifs_compressors[compr_type]->name;
117}
118
119
120
121
122
123
124
125
126static inline int ubifs_wbuf_sync(struct ubifs_wbuf *wbuf)
127{
128 int err;
129
130 mutex_lock_nested(&wbuf->io_mutex, wbuf->jhead);
131 err = ubifs_wbuf_sync_nolock(wbuf);
132 mutex_unlock(&wbuf->io_mutex);
133 return err;
134}
135
136#ifndef __UBOOT__
137
138
139
140
141
142
143
144
145
146static inline int ubifs_encode_dev(union ubifs_dev_desc *dev, dev_t rdev)
147{
148 if (new_valid_dev(rdev)) {
149 dev->new = cpu_to_le32(new_encode_dev(rdev));
150 return sizeof(dev->new);
151 } else {
152 dev->huge = cpu_to_le64(huge_encode_dev(rdev));
153 return sizeof(dev->huge);
154 }
155}
156#endif
157
158
159
160
161
162
163
164
165
166
167static inline int ubifs_add_dirt(struct ubifs_info *c, int lnum, int dirty)
168{
169 return ubifs_update_one_lp(c, lnum, LPROPS_NC, dirty, 0, 0);
170}
171
172
173
174
175
176
177
178
179
180
181static inline int ubifs_return_leb(struct ubifs_info *c, int lnum)
182{
183 return ubifs_change_one_lp(c, lnum, LPROPS_NC, LPROPS_NC, 0,
184 LPROPS_TAKEN, 0);
185}
186
187
188
189
190
191
192static inline int ubifs_idx_node_sz(const struct ubifs_info *c, int child_cnt)
193{
194 return UBIFS_IDX_NODE_SZ + (UBIFS_BRANCH_SZ + c->key_len) * child_cnt;
195}
196
197
198
199
200
201
202
203static inline
204struct ubifs_branch *ubifs_idx_branch(const struct ubifs_info *c,
205 const struct ubifs_idx_node *idx,
206 int bnum)
207{
208 return (struct ubifs_branch *)((void *)idx->branches +
209 (UBIFS_BRANCH_SZ + c->key_len) * bnum);
210}
211
212
213
214
215
216
217static inline void *ubifs_idx_key(const struct ubifs_info *c,
218 const struct ubifs_idx_node *idx)
219{
220#ifndef __UBOOT__
221 return (void *)((struct ubifs_branch *)idx->branches)->key;
222#else
223 struct ubifs_branch *tmp;
224
225 tmp = (struct ubifs_branch *)idx->branches;
226 return (void *)tmp->key;
227#endif
228}
229
230
231
232
233
234static inline struct timespec ubifs_current_time(struct inode *inode)
235{
236 return (inode->i_sb->s_time_gran < NSEC_PER_SEC) ?
237 current_fs_time(inode->i_sb) : CURRENT_TIME_SEC;
238}
239
240
241
242
243
244
245
246
247
248
249
250
251static inline int ubifs_tnc_lookup(struct ubifs_info *c,
252 const union ubifs_key *key, void *node)
253{
254 return ubifs_tnc_locate(c, key, node, NULL, NULL);
255}
256
257
258
259
260
261
262
263
264static inline void ubifs_get_lprops(struct ubifs_info *c)
265{
266 mutex_lock(&c->lp_mutex);
267}
268
269
270
271
272
273
274
275
276static inline void ubifs_release_lprops(struct ubifs_info *c)
277{
278 ubifs_assert(mutex_is_locked(&c->lp_mutex));
279 ubifs_assert(c->lst.empty_lebs >= 0 &&
280 c->lst.empty_lebs <= c->main_lebs);
281 mutex_unlock(&c->lp_mutex);
282}
283
284
285
286
287
288
289
290
291
292static inline int ubifs_next_log_lnum(const struct ubifs_info *c, int lnum)
293{
294 lnum += 1;
295 if (lnum > c->log_last)
296 lnum = UBIFS_LOG_LNUM;
297
298 return lnum;
299}
300
301#endif
302