diff options
Diffstat (limited to 'fs/nilfs2/bmap.c')
-rw-r--r-- | fs/nilfs2/bmap.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/fs/nilfs2/bmap.c b/fs/nilfs2/bmap.c index c82f4361c1f9..27f75bcbeb30 100644 --- a/fs/nilfs2/bmap.c +++ b/fs/nilfs2/bmap.c | |||
@@ -189,6 +189,37 @@ static int nilfs_bmap_do_delete(struct nilfs_bmap *bmap, __u64 key) | |||
189 | return bmap->b_ops->bop_delete(bmap, key); | 189 | return bmap->b_ops->bop_delete(bmap, key); |
190 | } | 190 | } |
191 | 191 | ||
192 | /** | ||
193 | * nilfs_bmap_seek_key - seek a valid entry and return its key | ||
194 | * @bmap: bmap struct | ||
195 | * @start: start key number | ||
196 | * @keyp: place to store valid key | ||
197 | * | ||
198 | * Description: nilfs_bmap_seek_key() seeks a valid key on @bmap | ||
199 | * starting from @start, and stores it to @keyp if found. | ||
200 | * | ||
201 | * Return Value: On success, 0 is returned. On error, one of the following | ||
202 | * negative error codes is returned. | ||
203 | * | ||
204 | * %-EIO - I/O error. | ||
205 | * | ||
206 | * %-ENOMEM - Insufficient amount of memory available. | ||
207 | * | ||
208 | * %-ENOENT - No valid entry was found | ||
209 | */ | ||
210 | int nilfs_bmap_seek_key(struct nilfs_bmap *bmap, __u64 start, __u64 *keyp) | ||
211 | { | ||
212 | int ret; | ||
213 | |||
214 | down_read(&bmap->b_sem); | ||
215 | ret = bmap->b_ops->bop_seek_key(bmap, start, keyp); | ||
216 | up_read(&bmap->b_sem); | ||
217 | |||
218 | if (ret < 0) | ||
219 | ret = nilfs_bmap_convert_error(bmap, __func__, ret); | ||
220 | return ret; | ||
221 | } | ||
222 | |||
192 | int nilfs_bmap_last_key(struct nilfs_bmap *bmap, __u64 *keyp) | 223 | int nilfs_bmap_last_key(struct nilfs_bmap *bmap, __u64 *keyp) |
193 | { | 224 | { |
194 | int ret; | 225 | int ret; |