diff options
Diffstat (limited to 'fs/nilfs2/direct.c')
-rw-r--r-- | fs/nilfs2/direct.c | 96 |
1 files changed, 37 insertions, 59 deletions
diff --git a/fs/nilfs2/direct.c b/fs/nilfs2/direct.c index 236753df5cdf..324d80c57518 100644 --- a/fs/nilfs2/direct.c +++ b/fs/nilfs2/direct.c | |||
@@ -27,47 +27,43 @@ | |||
27 | #include "alloc.h" | 27 | #include "alloc.h" |
28 | #include "dat.h" | 28 | #include "dat.h" |
29 | 29 | ||
30 | static inline __le64 *nilfs_direct_dptrs(const struct nilfs_direct *direct) | 30 | static inline __le64 *nilfs_direct_dptrs(const struct nilfs_bmap *direct) |
31 | { | 31 | { |
32 | return (__le64 *) | 32 | return (__le64 *) |
33 | ((struct nilfs_direct_node *)direct->d_bmap.b_u.u_data + 1); | 33 | ((struct nilfs_direct_node *)direct->b_u.u_data + 1); |
34 | } | 34 | } |
35 | 35 | ||
36 | static inline __u64 | 36 | static inline __u64 |
37 | nilfs_direct_get_ptr(const struct nilfs_direct *direct, __u64 key) | 37 | nilfs_direct_get_ptr(const struct nilfs_bmap *direct, __u64 key) |
38 | { | 38 | { |
39 | return nilfs_bmap_dptr_to_ptr(*(nilfs_direct_dptrs(direct) + key)); | 39 | return le64_to_cpu(*(nilfs_direct_dptrs(direct) + key)); |
40 | } | 40 | } |
41 | 41 | ||
42 | static inline void nilfs_direct_set_ptr(struct nilfs_direct *direct, | 42 | static inline void nilfs_direct_set_ptr(struct nilfs_bmap *direct, |
43 | __u64 key, __u64 ptr) | 43 | __u64 key, __u64 ptr) |
44 | { | 44 | { |
45 | *(nilfs_direct_dptrs(direct) + key) = nilfs_bmap_ptr_to_dptr(ptr); | 45 | *(nilfs_direct_dptrs(direct) + key) = cpu_to_le64(ptr); |
46 | } | 46 | } |
47 | 47 | ||
48 | static int nilfs_direct_lookup(const struct nilfs_bmap *bmap, | 48 | static int nilfs_direct_lookup(const struct nilfs_bmap *direct, |
49 | __u64 key, int level, __u64 *ptrp) | 49 | __u64 key, int level, __u64 *ptrp) |
50 | { | 50 | { |
51 | struct nilfs_direct *direct; | ||
52 | __u64 ptr; | 51 | __u64 ptr; |
53 | 52 | ||
54 | direct = (struct nilfs_direct *)bmap; /* XXX: use macro for level 1 */ | ||
55 | if (key > NILFS_DIRECT_KEY_MAX || level != 1) | 53 | if (key > NILFS_DIRECT_KEY_MAX || level != 1) |
56 | return -ENOENT; | 54 | return -ENOENT; |
57 | ptr = nilfs_direct_get_ptr(direct, key); | 55 | ptr = nilfs_direct_get_ptr(direct, key); |
58 | if (ptr == NILFS_BMAP_INVALID_PTR) | 56 | if (ptr == NILFS_BMAP_INVALID_PTR) |
59 | return -ENOENT; | 57 | return -ENOENT; |
60 | 58 | ||
61 | if (ptrp != NULL) | 59 | *ptrp = ptr; |
62 | *ptrp = ptr; | ||
63 | return 0; | 60 | return 0; |
64 | } | 61 | } |
65 | 62 | ||
66 | static int nilfs_direct_lookup_contig(const struct nilfs_bmap *bmap, | 63 | static int nilfs_direct_lookup_contig(const struct nilfs_bmap *direct, |
67 | __u64 key, __u64 *ptrp, | 64 | __u64 key, __u64 *ptrp, |
68 | unsigned maxblocks) | 65 | unsigned maxblocks) |
69 | { | 66 | { |
70 | struct nilfs_direct *direct = (struct nilfs_direct *)bmap; | ||
71 | struct inode *dat = NULL; | 67 | struct inode *dat = NULL; |
72 | __u64 ptr, ptr2; | 68 | __u64 ptr, ptr2; |
73 | sector_t blocknr; | 69 | sector_t blocknr; |
@@ -79,8 +75,8 @@ static int nilfs_direct_lookup_contig(const struct nilfs_bmap *bmap, | |||
79 | if (ptr == NILFS_BMAP_INVALID_PTR) | 75 | if (ptr == NILFS_BMAP_INVALID_PTR) |
80 | return -ENOENT; | 76 | return -ENOENT; |
81 | 77 | ||
82 | if (NILFS_BMAP_USE_VBN(bmap)) { | 78 | if (NILFS_BMAP_USE_VBN(direct)) { |
83 | dat = nilfs_bmap_get_dat(bmap); | 79 | dat = nilfs_bmap_get_dat(direct); |
84 | ret = nilfs_dat_translate(dat, ptr, &blocknr); | 80 | ret = nilfs_dat_translate(dat, ptr, &blocknr); |
85 | if (ret < 0) | 81 | if (ret < 0) |
86 | return ret; | 82 | return ret; |
@@ -106,29 +102,21 @@ static int nilfs_direct_lookup_contig(const struct nilfs_bmap *bmap, | |||
106 | } | 102 | } |
107 | 103 | ||
108 | static __u64 | 104 | static __u64 |
109 | nilfs_direct_find_target_v(const struct nilfs_direct *direct, __u64 key) | 105 | nilfs_direct_find_target_v(const struct nilfs_bmap *direct, __u64 key) |
110 | { | 106 | { |
111 | __u64 ptr; | 107 | __u64 ptr; |
112 | 108 | ||
113 | ptr = nilfs_bmap_find_target_seq(&direct->d_bmap, key); | 109 | ptr = nilfs_bmap_find_target_seq(direct, key); |
114 | if (ptr != NILFS_BMAP_INVALID_PTR) | 110 | if (ptr != NILFS_BMAP_INVALID_PTR) |
115 | /* sequential access */ | 111 | /* sequential access */ |
116 | return ptr; | 112 | return ptr; |
117 | else | 113 | else |
118 | /* block group */ | 114 | /* block group */ |
119 | return nilfs_bmap_find_target_in_group(&direct->d_bmap); | 115 | return nilfs_bmap_find_target_in_group(direct); |
120 | } | ||
121 | |||
122 | static void nilfs_direct_set_target_v(struct nilfs_direct *direct, | ||
123 | __u64 key, __u64 ptr) | ||
124 | { | ||
125 | direct->d_bmap.b_last_allocated_key = key; | ||
126 | direct->d_bmap.b_last_allocated_ptr = ptr; | ||
127 | } | 116 | } |
128 | 117 | ||
129 | static int nilfs_direct_insert(struct nilfs_bmap *bmap, __u64 key, __u64 ptr) | 118 | static int nilfs_direct_insert(struct nilfs_bmap *bmap, __u64 key, __u64 ptr) |
130 | { | 119 | { |
131 | struct nilfs_direct *direct = (struct nilfs_direct *)bmap; | ||
132 | union nilfs_bmap_ptr_req req; | 120 | union nilfs_bmap_ptr_req req; |
133 | struct inode *dat = NULL; | 121 | struct inode *dat = NULL; |
134 | struct buffer_head *bh; | 122 | struct buffer_head *bh; |
@@ -136,11 +124,11 @@ static int nilfs_direct_insert(struct nilfs_bmap *bmap, __u64 key, __u64 ptr) | |||
136 | 124 | ||
137 | if (key > NILFS_DIRECT_KEY_MAX) | 125 | if (key > NILFS_DIRECT_KEY_MAX) |
138 | return -ENOENT; | 126 | return -ENOENT; |
139 | if (nilfs_direct_get_ptr(direct, key) != NILFS_BMAP_INVALID_PTR) | 127 | if (nilfs_direct_get_ptr(bmap, key) != NILFS_BMAP_INVALID_PTR) |
140 | return -EEXIST; | 128 | return -EEXIST; |
141 | 129 | ||
142 | if (NILFS_BMAP_USE_VBN(bmap)) { | 130 | if (NILFS_BMAP_USE_VBN(bmap)) { |
143 | req.bpr_ptr = nilfs_direct_find_target_v(direct, key); | 131 | req.bpr_ptr = nilfs_direct_find_target_v(bmap, key); |
144 | dat = nilfs_bmap_get_dat(bmap); | 132 | dat = nilfs_bmap_get_dat(bmap); |
145 | } | 133 | } |
146 | ret = nilfs_bmap_prepare_alloc_ptr(bmap, &req, dat); | 134 | ret = nilfs_bmap_prepare_alloc_ptr(bmap, &req, dat); |
@@ -150,13 +138,13 @@ static int nilfs_direct_insert(struct nilfs_bmap *bmap, __u64 key, __u64 ptr) | |||
150 | set_buffer_nilfs_volatile(bh); | 138 | set_buffer_nilfs_volatile(bh); |
151 | 139 | ||
152 | nilfs_bmap_commit_alloc_ptr(bmap, &req, dat); | 140 | nilfs_bmap_commit_alloc_ptr(bmap, &req, dat); |
153 | nilfs_direct_set_ptr(direct, key, req.bpr_ptr); | 141 | nilfs_direct_set_ptr(bmap, key, req.bpr_ptr); |
154 | 142 | ||
155 | if (!nilfs_bmap_dirty(bmap)) | 143 | if (!nilfs_bmap_dirty(bmap)) |
156 | nilfs_bmap_set_dirty(bmap); | 144 | nilfs_bmap_set_dirty(bmap); |
157 | 145 | ||
158 | if (NILFS_BMAP_USE_VBN(bmap)) | 146 | if (NILFS_BMAP_USE_VBN(bmap)) |
159 | nilfs_direct_set_target_v(direct, key, req.bpr_ptr); | 147 | nilfs_bmap_set_target_v(bmap, key, req.bpr_ptr); |
160 | 148 | ||
161 | nilfs_bmap_add_blocks(bmap, 1); | 149 | nilfs_bmap_add_blocks(bmap, 1); |
162 | } | 150 | } |
@@ -165,33 +153,30 @@ static int nilfs_direct_insert(struct nilfs_bmap *bmap, __u64 key, __u64 ptr) | |||
165 | 153 | ||
166 | static int nilfs_direct_delete(struct nilfs_bmap *bmap, __u64 key) | 154 | static int nilfs_direct_delete(struct nilfs_bmap *bmap, __u64 key) |
167 | { | 155 | { |
168 | struct nilfs_direct *direct = (struct nilfs_direct *)bmap; | ||
169 | union nilfs_bmap_ptr_req req; | 156 | union nilfs_bmap_ptr_req req; |
170 | struct inode *dat; | 157 | struct inode *dat; |
171 | int ret; | 158 | int ret; |
172 | 159 | ||
173 | if (key > NILFS_DIRECT_KEY_MAX || | 160 | if (key > NILFS_DIRECT_KEY_MAX || |
174 | nilfs_direct_get_ptr(direct, key) == NILFS_BMAP_INVALID_PTR) | 161 | nilfs_direct_get_ptr(bmap, key) == NILFS_BMAP_INVALID_PTR) |
175 | return -ENOENT; | 162 | return -ENOENT; |
176 | 163 | ||
177 | dat = NILFS_BMAP_USE_VBN(bmap) ? nilfs_bmap_get_dat(bmap) : NULL; | 164 | dat = NILFS_BMAP_USE_VBN(bmap) ? nilfs_bmap_get_dat(bmap) : NULL; |
178 | req.bpr_ptr = nilfs_direct_get_ptr(direct, key); | 165 | req.bpr_ptr = nilfs_direct_get_ptr(bmap, key); |
179 | 166 | ||
180 | ret = nilfs_bmap_prepare_end_ptr(bmap, &req, dat); | 167 | ret = nilfs_bmap_prepare_end_ptr(bmap, &req, dat); |
181 | if (!ret) { | 168 | if (!ret) { |
182 | nilfs_bmap_commit_end_ptr(bmap, &req, dat); | 169 | nilfs_bmap_commit_end_ptr(bmap, &req, dat); |
183 | nilfs_direct_set_ptr(direct, key, NILFS_BMAP_INVALID_PTR); | 170 | nilfs_direct_set_ptr(bmap, key, NILFS_BMAP_INVALID_PTR); |
184 | nilfs_bmap_sub_blocks(bmap, 1); | 171 | nilfs_bmap_sub_blocks(bmap, 1); |
185 | } | 172 | } |
186 | return ret; | 173 | return ret; |
187 | } | 174 | } |
188 | 175 | ||
189 | static int nilfs_direct_last_key(const struct nilfs_bmap *bmap, __u64 *keyp) | 176 | static int nilfs_direct_last_key(const struct nilfs_bmap *direct, __u64 *keyp) |
190 | { | 177 | { |
191 | struct nilfs_direct *direct; | ||
192 | __u64 key, lastkey; | 178 | __u64 key, lastkey; |
193 | 179 | ||
194 | direct = (struct nilfs_direct *)bmap; | ||
195 | lastkey = NILFS_DIRECT_KEY_MAX + 1; | 180 | lastkey = NILFS_DIRECT_KEY_MAX + 1; |
196 | for (key = NILFS_DIRECT_KEY_MIN; key <= NILFS_DIRECT_KEY_MAX; key++) | 181 | for (key = NILFS_DIRECT_KEY_MIN; key <= NILFS_DIRECT_KEY_MAX; key++) |
197 | if (nilfs_direct_get_ptr(direct, key) != | 182 | if (nilfs_direct_get_ptr(direct, key) != |
@@ -211,15 +196,13 @@ static int nilfs_direct_check_insert(const struct nilfs_bmap *bmap, __u64 key) | |||
211 | return key > NILFS_DIRECT_KEY_MAX; | 196 | return key > NILFS_DIRECT_KEY_MAX; |
212 | } | 197 | } |
213 | 198 | ||
214 | static int nilfs_direct_gather_data(struct nilfs_bmap *bmap, | 199 | static int nilfs_direct_gather_data(struct nilfs_bmap *direct, |
215 | __u64 *keys, __u64 *ptrs, int nitems) | 200 | __u64 *keys, __u64 *ptrs, int nitems) |
216 | { | 201 | { |
217 | struct nilfs_direct *direct; | ||
218 | __u64 key; | 202 | __u64 key; |
219 | __u64 ptr; | 203 | __u64 ptr; |
220 | int n; | 204 | int n; |
221 | 205 | ||
222 | direct = (struct nilfs_direct *)bmap; | ||
223 | if (nitems > NILFS_DIRECT_NBLOCKS) | 206 | if (nitems > NILFS_DIRECT_NBLOCKS) |
224 | nitems = NILFS_DIRECT_NBLOCKS; | 207 | nitems = NILFS_DIRECT_NBLOCKS; |
225 | n = 0; | 208 | n = 0; |
@@ -237,7 +220,6 @@ static int nilfs_direct_gather_data(struct nilfs_bmap *bmap, | |||
237 | int nilfs_direct_delete_and_convert(struct nilfs_bmap *bmap, | 220 | int nilfs_direct_delete_and_convert(struct nilfs_bmap *bmap, |
238 | __u64 key, __u64 *keys, __u64 *ptrs, int n) | 221 | __u64 key, __u64 *keys, __u64 *ptrs, int n) |
239 | { | 222 | { |
240 | struct nilfs_direct *direct; | ||
241 | __le64 *dptrs; | 223 | __le64 *dptrs; |
242 | int ret, i, j; | 224 | int ret, i, j; |
243 | 225 | ||
@@ -253,12 +235,11 @@ int nilfs_direct_delete_and_convert(struct nilfs_bmap *bmap, | |||
253 | bmap->b_ops->bop_clear(bmap); | 235 | bmap->b_ops->bop_clear(bmap); |
254 | 236 | ||
255 | /* convert */ | 237 | /* convert */ |
256 | direct = (struct nilfs_direct *)bmap; | 238 | dptrs = nilfs_direct_dptrs(bmap); |
257 | dptrs = nilfs_direct_dptrs(direct); | ||
258 | for (i = 0, j = 0; i < NILFS_DIRECT_NBLOCKS; i++) { | 239 | for (i = 0, j = 0; i < NILFS_DIRECT_NBLOCKS; i++) { |
259 | if ((j < n) && (i == keys[j])) { | 240 | if ((j < n) && (i == keys[j])) { |
260 | dptrs[i] = (i != key) ? | 241 | dptrs[i] = (i != key) ? |
261 | nilfs_bmap_ptr_to_dptr(ptrs[j]) : | 242 | cpu_to_le64(ptrs[j]) : |
262 | NILFS_BMAP_INVALID_PTR; | 243 | NILFS_BMAP_INVALID_PTR; |
263 | j++; | 244 | j++; |
264 | } else | 245 | } else |
@@ -269,10 +250,9 @@ int nilfs_direct_delete_and_convert(struct nilfs_bmap *bmap, | |||
269 | return 0; | 250 | return 0; |
270 | } | 251 | } |
271 | 252 | ||
272 | static int nilfs_direct_propagate(const struct nilfs_bmap *bmap, | 253 | static int nilfs_direct_propagate(struct nilfs_bmap *bmap, |
273 | struct buffer_head *bh) | 254 | struct buffer_head *bh) |
274 | { | 255 | { |
275 | struct nilfs_direct *direct = (struct nilfs_direct *)bmap; | ||
276 | struct nilfs_palloc_req oldreq, newreq; | 256 | struct nilfs_palloc_req oldreq, newreq; |
277 | struct inode *dat; | 257 | struct inode *dat; |
278 | __u64 key; | 258 | __u64 key; |
@@ -284,7 +264,7 @@ static int nilfs_direct_propagate(const struct nilfs_bmap *bmap, | |||
284 | 264 | ||
285 | dat = nilfs_bmap_get_dat(bmap); | 265 | dat = nilfs_bmap_get_dat(bmap); |
286 | key = nilfs_bmap_data_get_key(bmap, bh); | 266 | key = nilfs_bmap_data_get_key(bmap, bh); |
287 | ptr = nilfs_direct_get_ptr(direct, key); | 267 | ptr = nilfs_direct_get_ptr(bmap, key); |
288 | if (!buffer_nilfs_volatile(bh)) { | 268 | if (!buffer_nilfs_volatile(bh)) { |
289 | oldreq.pr_entry_nr = ptr; | 269 | oldreq.pr_entry_nr = ptr; |
290 | newreq.pr_entry_nr = ptr; | 270 | newreq.pr_entry_nr = ptr; |
@@ -294,20 +274,20 @@ static int nilfs_direct_propagate(const struct nilfs_bmap *bmap, | |||
294 | nilfs_dat_commit_update(dat, &oldreq, &newreq, | 274 | nilfs_dat_commit_update(dat, &oldreq, &newreq, |
295 | bmap->b_ptr_type == NILFS_BMAP_PTR_VS); | 275 | bmap->b_ptr_type == NILFS_BMAP_PTR_VS); |
296 | set_buffer_nilfs_volatile(bh); | 276 | set_buffer_nilfs_volatile(bh); |
297 | nilfs_direct_set_ptr(direct, key, newreq.pr_entry_nr); | 277 | nilfs_direct_set_ptr(bmap, key, newreq.pr_entry_nr); |
298 | } else | 278 | } else |
299 | ret = nilfs_dat_mark_dirty(dat, ptr); | 279 | ret = nilfs_dat_mark_dirty(dat, ptr); |
300 | 280 | ||
301 | return ret; | 281 | return ret; |
302 | } | 282 | } |
303 | 283 | ||
304 | static int nilfs_direct_assign_v(struct nilfs_direct *direct, | 284 | static int nilfs_direct_assign_v(struct nilfs_bmap *direct, |
305 | __u64 key, __u64 ptr, | 285 | __u64 key, __u64 ptr, |
306 | struct buffer_head **bh, | 286 | struct buffer_head **bh, |
307 | sector_t blocknr, | 287 | sector_t blocknr, |
308 | union nilfs_binfo *binfo) | 288 | union nilfs_binfo *binfo) |
309 | { | 289 | { |
310 | struct inode *dat = nilfs_bmap_get_dat(&direct->d_bmap); | 290 | struct inode *dat = nilfs_bmap_get_dat(direct); |
311 | union nilfs_bmap_ptr_req req; | 291 | union nilfs_bmap_ptr_req req; |
312 | int ret; | 292 | int ret; |
313 | 293 | ||
@@ -315,13 +295,13 @@ static int nilfs_direct_assign_v(struct nilfs_direct *direct, | |||
315 | ret = nilfs_dat_prepare_start(dat, &req.bpr_req); | 295 | ret = nilfs_dat_prepare_start(dat, &req.bpr_req); |
316 | if (!ret) { | 296 | if (!ret) { |
317 | nilfs_dat_commit_start(dat, &req.bpr_req, blocknr); | 297 | nilfs_dat_commit_start(dat, &req.bpr_req, blocknr); |
318 | binfo->bi_v.bi_vblocknr = nilfs_bmap_ptr_to_dptr(ptr); | 298 | binfo->bi_v.bi_vblocknr = cpu_to_le64(ptr); |
319 | binfo->bi_v.bi_blkoff = nilfs_bmap_key_to_dkey(key); | 299 | binfo->bi_v.bi_blkoff = cpu_to_le64(key); |
320 | } | 300 | } |
321 | return ret; | 301 | return ret; |
322 | } | 302 | } |
323 | 303 | ||
324 | static int nilfs_direct_assign_p(struct nilfs_direct *direct, | 304 | static int nilfs_direct_assign_p(struct nilfs_bmap *direct, |
325 | __u64 key, __u64 ptr, | 305 | __u64 key, __u64 ptr, |
326 | struct buffer_head **bh, | 306 | struct buffer_head **bh, |
327 | sector_t blocknr, | 307 | sector_t blocknr, |
@@ -329,7 +309,7 @@ static int nilfs_direct_assign_p(struct nilfs_direct *direct, | |||
329 | { | 309 | { |
330 | nilfs_direct_set_ptr(direct, key, blocknr); | 310 | nilfs_direct_set_ptr(direct, key, blocknr); |
331 | 311 | ||
332 | binfo->bi_dat.bi_blkoff = nilfs_bmap_key_to_dkey(key); | 312 | binfo->bi_dat.bi_blkoff = cpu_to_le64(key); |
333 | binfo->bi_dat.bi_level = 0; | 313 | binfo->bi_dat.bi_level = 0; |
334 | 314 | ||
335 | return 0; | 315 | return 0; |
@@ -340,18 +320,16 @@ static int nilfs_direct_assign(struct nilfs_bmap *bmap, | |||
340 | sector_t blocknr, | 320 | sector_t blocknr, |
341 | union nilfs_binfo *binfo) | 321 | union nilfs_binfo *binfo) |
342 | { | 322 | { |
343 | struct nilfs_direct *direct; | ||
344 | __u64 key; | 323 | __u64 key; |
345 | __u64 ptr; | 324 | __u64 ptr; |
346 | 325 | ||
347 | direct = (struct nilfs_direct *)bmap; | ||
348 | key = nilfs_bmap_data_get_key(bmap, *bh); | 326 | key = nilfs_bmap_data_get_key(bmap, *bh); |
349 | if (unlikely(key > NILFS_DIRECT_KEY_MAX)) { | 327 | if (unlikely(key > NILFS_DIRECT_KEY_MAX)) { |
350 | printk(KERN_CRIT "%s: invalid key: %llu\n", __func__, | 328 | printk(KERN_CRIT "%s: invalid key: %llu\n", __func__, |
351 | (unsigned long long)key); | 329 | (unsigned long long)key); |
352 | return -EINVAL; | 330 | return -EINVAL; |
353 | } | 331 | } |
354 | ptr = nilfs_direct_get_ptr(direct, key); | 332 | ptr = nilfs_direct_get_ptr(bmap, key); |
355 | if (unlikely(ptr == NILFS_BMAP_INVALID_PTR)) { | 333 | if (unlikely(ptr == NILFS_BMAP_INVALID_PTR)) { |
356 | printk(KERN_CRIT "%s: invalid pointer: %llu\n", __func__, | 334 | printk(KERN_CRIT "%s: invalid pointer: %llu\n", __func__, |
357 | (unsigned long long)ptr); | 335 | (unsigned long long)ptr); |
@@ -359,8 +337,8 @@ static int nilfs_direct_assign(struct nilfs_bmap *bmap, | |||
359 | } | 337 | } |
360 | 338 | ||
361 | return NILFS_BMAP_USE_VBN(bmap) ? | 339 | return NILFS_BMAP_USE_VBN(bmap) ? |
362 | nilfs_direct_assign_v(direct, key, ptr, bh, blocknr, binfo) : | 340 | nilfs_direct_assign_v(bmap, key, ptr, bh, blocknr, binfo) : |
363 | nilfs_direct_assign_p(direct, key, ptr, bh, blocknr, binfo); | 341 | nilfs_direct_assign_p(bmap, key, ptr, bh, blocknr, binfo); |
364 | } | 342 | } |
365 | 343 | ||
366 | static const struct nilfs_bmap_operations nilfs_direct_ops = { | 344 | static const struct nilfs_bmap_operations nilfs_direct_ops = { |