2 * JFFS2 -- Journalling Flash File System, Version 2.
4 * Copyright © 2001-2007 Red Hat, Inc.
6 * Created by David Woodhouse <dwmw2@infradead.org>
8 * For licensing information, see the file 'LICENCE' in this directory.
12 #include <linux/capability.h>
13 #include <linux/kernel.h>
14 #include <linux/sched.h>
16 #include <linux/list.h>
17 #include <linux/mtd/mtd.h>
18 #include <linux/pagemap.h>
19 #include <linux/slab.h>
20 #include <linux/vmalloc.h>
21 #include <linux/vfs.h>
22 #include <linux/crc32.h>
25 static int jffs2_flash_setup(struct jffs2_sb_info
*c
);
27 int jffs2_do_setattr (struct inode
*inode
, struct iattr
*iattr
)
29 struct jffs2_full_dnode
*old_metadata
, *new_metadata
;
30 struct jffs2_inode_info
*f
= JFFS2_INODE_INFO(inode
);
31 struct jffs2_sb_info
*c
= JFFS2_SB_INFO(inode
->i_sb
);
32 struct jffs2_raw_inode
*ri
;
33 union jffs2_device_node dev
;
34 unsigned char *mdata
= NULL
;
40 D1(printk(KERN_DEBUG
"jffs2_setattr(): ino #%lu\n", inode
->i_ino
));
42 /* Special cases - we don't want more than one data node
43 for these types on the medium at any time. So setattr
44 must read the original data associated with the node
45 (i.e. the device numbers or the target name) and write
46 it out again with the appropriate data attached */
47 if (S_ISBLK(inode
->i_mode
) || S_ISCHR(inode
->i_mode
)) {
48 /* For these, we don't actually need to read the old node */
49 mdatalen
= jffs2_encode_dev(&dev
, inode
->i_rdev
);
51 D1(printk(KERN_DEBUG
"jffs2_setattr(): Writing %d bytes of kdev_t\n", mdatalen
));
52 } else if (S_ISLNK(inode
->i_mode
)) {
54 mdatalen
= f
->metadata
->size
;
55 mdata
= kmalloc(f
->metadata
->size
, GFP_USER
);
60 ret
= jffs2_read_dnode(c
, f
, f
->metadata
, mdata
, 0, mdatalen
);
67 D1(printk(KERN_DEBUG
"jffs2_setattr(): Writing %d bytes of symlink target\n", mdatalen
));
70 ri
= jffs2_alloc_raw_inode();
72 if (S_ISLNK(inode
->i_mode
))
77 ret
= jffs2_reserve_space(c
, sizeof(*ri
) + mdatalen
, &alloclen
,
78 ALLOC_NORMAL
, JFFS2_SUMMARY_INODE_SIZE
);
80 jffs2_free_raw_inode(ri
);
81 if (S_ISLNK(inode
->i_mode
& S_IFMT
))
86 ivalid
= iattr
->ia_valid
;
88 ri
->magic
= cpu_to_je16(JFFS2_MAGIC_BITMASK
);
89 ri
->nodetype
= cpu_to_je16(JFFS2_NODETYPE_INODE
);
90 ri
->totlen
= cpu_to_je32(sizeof(*ri
) + mdatalen
);
91 ri
->hdr_crc
= cpu_to_je32(crc32(0, ri
, sizeof(struct jffs2_unknown_node
)-4));
93 ri
->ino
= cpu_to_je32(inode
->i_ino
);
94 ri
->version
= cpu_to_je32(++f
->highest_version
);
96 ri
->uid
= cpu_to_je16((ivalid
& ATTR_UID
)?iattr
->ia_uid
:inode
->i_uid
);
97 ri
->gid
= cpu_to_je16((ivalid
& ATTR_GID
)?iattr
->ia_gid
:inode
->i_gid
);
99 if (ivalid
& ATTR_MODE
)
100 ri
->mode
= cpu_to_jemode(iattr
->ia_mode
);
102 ri
->mode
= cpu_to_jemode(inode
->i_mode
);
105 ri
->isize
= cpu_to_je32((ivalid
& ATTR_SIZE
)?iattr
->ia_size
:inode
->i_size
);
106 ri
->atime
= cpu_to_je32(I_SEC((ivalid
& ATTR_ATIME
)?iattr
->ia_atime
:inode
->i_atime
));
107 ri
->mtime
= cpu_to_je32(I_SEC((ivalid
& ATTR_MTIME
)?iattr
->ia_mtime
:inode
->i_mtime
));
108 ri
->ctime
= cpu_to_je32(I_SEC((ivalid
& ATTR_CTIME
)?iattr
->ia_ctime
:inode
->i_ctime
));
110 ri
->offset
= cpu_to_je32(0);
111 ri
->csize
= ri
->dsize
= cpu_to_je32(mdatalen
);
112 ri
->compr
= JFFS2_COMPR_NONE
;
113 if (ivalid
& ATTR_SIZE
&& inode
->i_size
< iattr
->ia_size
) {
114 /* It's an extension. Make it a hole node */
115 ri
->compr
= JFFS2_COMPR_ZERO
;
116 ri
->dsize
= cpu_to_je32(iattr
->ia_size
- inode
->i_size
);
117 ri
->offset
= cpu_to_je32(inode
->i_size
);
119 ri
->node_crc
= cpu_to_je32(crc32(0, ri
, sizeof(*ri
)-8));
121 ri
->data_crc
= cpu_to_je32(crc32(0, mdata
, mdatalen
));
123 ri
->data_crc
= cpu_to_je32(0);
125 new_metadata
= jffs2_write_dnode(c
, f
, ri
, mdata
, mdatalen
, ALLOC_NORMAL
);
126 if (S_ISLNK(inode
->i_mode
))
129 if (IS_ERR(new_metadata
)) {
130 jffs2_complete_reservation(c
);
131 jffs2_free_raw_inode(ri
);
133 return PTR_ERR(new_metadata
);
135 /* It worked. Update the inode */
136 inode
->i_atime
= ITIME(je32_to_cpu(ri
->atime
));
137 inode
->i_ctime
= ITIME(je32_to_cpu(ri
->ctime
));
138 inode
->i_mtime
= ITIME(je32_to_cpu(ri
->mtime
));
139 inode
->i_mode
= jemode_to_cpu(ri
->mode
);
140 inode
->i_uid
= je16_to_cpu(ri
->uid
);
141 inode
->i_gid
= je16_to_cpu(ri
->gid
);
144 old_metadata
= f
->metadata
;
146 if (ivalid
& ATTR_SIZE
&& inode
->i_size
> iattr
->ia_size
)
147 jffs2_truncate_fragtree (c
, &f
->fragtree
, iattr
->ia_size
);
149 if (ivalid
& ATTR_SIZE
&& inode
->i_size
< iattr
->ia_size
) {
150 jffs2_add_full_dnode_to_inode(c
, f
, new_metadata
);
151 inode
->i_size
= iattr
->ia_size
;
154 f
->metadata
= new_metadata
;
157 jffs2_mark_node_obsolete(c
, old_metadata
->raw
);
158 jffs2_free_full_dnode(old_metadata
);
160 jffs2_free_raw_inode(ri
);
163 jffs2_complete_reservation(c
);
165 /* We have to do the vmtruncate() without f->sem held, since
166 some pages may be locked and waiting for it in readpage().
167 We are protected from a simultaneous write() extending i_size
168 back past iattr->ia_size, because do_truncate() holds the
169 generic inode semaphore. */
170 if (ivalid
& ATTR_SIZE
&& inode
->i_size
> iattr
->ia_size
)
171 vmtruncate(inode
, iattr
->ia_size
);
176 int jffs2_setattr(struct dentry
*dentry
, struct iattr
*iattr
)
180 rc
= inode_change_ok(dentry
->d_inode
, iattr
);
184 rc
= jffs2_do_setattr(dentry
->d_inode
, iattr
);
185 if (!rc
&& (iattr
->ia_valid
& ATTR_MODE
))
186 rc
= jffs2_acl_chmod(dentry
->d_inode
);
191 int jffs2_statfs(struct dentry
*dentry
, struct kstatfs
*buf
)
193 struct jffs2_sb_info
*c
= JFFS2_SB_INFO(dentry
->d_sb
);
196 buf
->f_type
= JFFS2_SUPER_MAGIC
;
197 buf
->f_bsize
= 1 << PAGE_SHIFT
;
198 buf
->f_blocks
= c
->flash_size
>> PAGE_SHIFT
;
201 buf
->f_namelen
= JFFS2_MAX_NAME_LEN
;
203 spin_lock(&c
->erase_completion_lock
);
204 avail
= c
->dirty_size
+ c
->free_size
;
205 if (avail
> c
->sector_size
* c
->resv_blocks_write
)
206 avail
-= c
->sector_size
* c
->resv_blocks_write
;
209 spin_unlock(&c
->erase_completion_lock
);
211 buf
->f_bavail
= buf
->f_bfree
= avail
>> PAGE_SHIFT
;
217 void jffs2_clear_inode (struct inode
*inode
)
219 /* We can forget about this inode for now - drop all
220 * the nodelists associated with it, etc.
222 struct jffs2_sb_info
*c
= JFFS2_SB_INFO(inode
->i_sb
);
223 struct jffs2_inode_info
*f
= JFFS2_INODE_INFO(inode
);
225 D1(printk(KERN_DEBUG
"jffs2_clear_inode(): ino #%lu mode %o\n", inode
->i_ino
, inode
->i_mode
));
226 jffs2_do_clear_inode(c
, f
);
229 struct inode
*jffs2_iget(struct super_block
*sb
, unsigned long ino
)
231 struct jffs2_inode_info
*f
;
232 struct jffs2_sb_info
*c
;
233 struct jffs2_raw_inode latest_node
;
234 union jffs2_device_node jdev
;
239 D1(printk(KERN_DEBUG
"jffs2_iget(): ino == %lu\n", ino
));
241 inode
= iget_locked(sb
, ino
);
243 return ERR_PTR(-ENOMEM
);
244 if (!(inode
->i_state
& I_NEW
))
247 f
= JFFS2_INODE_INFO(inode
);
248 c
= JFFS2_SB_INFO(inode
->i_sb
);
250 jffs2_init_inode_info(f
);
253 ret
= jffs2_do_read_inode(c
, f
, inode
->i_ino
, &latest_node
);
260 inode
->i_mode
= jemode_to_cpu(latest_node
.mode
);
261 inode
->i_uid
= je16_to_cpu(latest_node
.uid
);
262 inode
->i_gid
= je16_to_cpu(latest_node
.gid
);
263 inode
->i_size
= je32_to_cpu(latest_node
.isize
);
264 inode
->i_atime
= ITIME(je32_to_cpu(latest_node
.atime
));
265 inode
->i_mtime
= ITIME(je32_to_cpu(latest_node
.mtime
));
266 inode
->i_ctime
= ITIME(je32_to_cpu(latest_node
.ctime
));
268 inode
->i_nlink
= f
->inocache
->nlink
;
270 inode
->i_blocks
= (inode
->i_size
+ 511) >> 9;
272 switch (inode
->i_mode
& S_IFMT
) {
275 inode
->i_op
= &jffs2_symlink_inode_operations
;
280 struct jffs2_full_dirent
*fd
;
282 for (fd
=f
->dents
; fd
; fd
= fd
->next
) {
283 if (fd
->type
== DT_DIR
&& fd
->ino
)
288 /* Root dir gets i_nlink 3 for some reason */
289 if (inode
->i_ino
== 1)
292 inode
->i_op
= &jffs2_dir_inode_operations
;
293 inode
->i_fop
= &jffs2_dir_operations
;
297 inode
->i_op
= &jffs2_file_inode_operations
;
298 inode
->i_fop
= &jffs2_file_operations
;
299 inode
->i_mapping
->a_ops
= &jffs2_file_address_operations
;
300 inode
->i_mapping
->nrpages
= 0;
305 /* Read the device numbers from the media */
306 if (f
->metadata
->size
!= sizeof(jdev
.old
) &&
307 f
->metadata
->size
!= sizeof(jdev
.new)) {
308 printk(KERN_NOTICE
"Device node has strange size %d\n", f
->metadata
->size
);
311 D1(printk(KERN_DEBUG
"Reading device numbers from flash\n"));
312 ret
= jffs2_read_dnode(c
, f
, f
->metadata
, (char *)&jdev
, 0, f
->metadata
->size
);
315 printk(KERN_NOTICE
"Read device numbers for inode %lu failed\n", (unsigned long)inode
->i_ino
);
318 if (f
->metadata
->size
== sizeof(jdev
.old
))
319 rdev
= old_decode_dev(je16_to_cpu(jdev
.old
));
321 rdev
= new_decode_dev(je32_to_cpu(jdev
.new));
325 inode
->i_op
= &jffs2_file_inode_operations
;
326 init_special_inode(inode
, inode
->i_mode
, rdev
);
330 printk(KERN_WARNING
"jffs2_read_inode(): Bogus imode %o for ino %lu\n", inode
->i_mode
, (unsigned long)inode
->i_ino
);
335 D1(printk(KERN_DEBUG
"jffs2_read_inode() returning\n"));
336 unlock_new_inode(inode
);
343 jffs2_do_clear_inode(c
, f
);
348 void jffs2_dirty_inode(struct inode
*inode
)
352 if (!(inode
->i_state
& I_DIRTY_DATASYNC
)) {
353 D2(printk(KERN_DEBUG
"jffs2_dirty_inode() not calling setattr() for ino #%lu\n", inode
->i_ino
));
357 D1(printk(KERN_DEBUG
"jffs2_dirty_inode() calling setattr() for ino #%lu\n", inode
->i_ino
));
359 iattr
.ia_valid
= ATTR_MODE
|ATTR_UID
|ATTR_GID
|ATTR_ATIME
|ATTR_MTIME
|ATTR_CTIME
;
360 iattr
.ia_mode
= inode
->i_mode
;
361 iattr
.ia_uid
= inode
->i_uid
;
362 iattr
.ia_gid
= inode
->i_gid
;
363 iattr
.ia_atime
= inode
->i_atime
;
364 iattr
.ia_mtime
= inode
->i_mtime
;
365 iattr
.ia_ctime
= inode
->i_ctime
;
367 jffs2_do_setattr(inode
, &iattr
);
370 int jffs2_remount_fs (struct super_block
*sb
, int *flags
, char *data
)
372 struct jffs2_sb_info
*c
= JFFS2_SB_INFO(sb
);
374 if (c
->flags
& JFFS2_SB_FLAG_RO
&& !(sb
->s_flags
& MS_RDONLY
))
377 /* We stop if it was running, then restart if it needs to.
378 This also catches the case where it was stopped and this
379 is just a remount to restart it.
380 Flush the writebuffer, if neccecary, else we loose it */
381 if (!(sb
->s_flags
& MS_RDONLY
)) {
382 jffs2_stop_garbage_collect_thread(c
);
384 jffs2_flush_wbuf_pad(c
);
388 if (!(*flags
& MS_RDONLY
))
389 jffs2_start_garbage_collect_thread(c
);
391 *flags
|= MS_NOATIME
;
396 void jffs2_write_super (struct super_block
*sb
)
398 struct jffs2_sb_info
*c
= JFFS2_SB_INFO(sb
);
401 if (sb
->s_flags
& MS_RDONLY
)
404 D1(printk(KERN_DEBUG
"jffs2_write_super()\n"));
405 jffs2_garbage_collect_trigger(c
);
406 jffs2_erase_pending_blocks(c
, 0);
407 jffs2_flush_wbuf_gc(c
, 0);
411 /* jffs2_new_inode: allocate a new inode and inocache, add it to the hash,
412 fill in the raw_inode while you're at it. */
413 struct inode
*jffs2_new_inode (struct inode
*dir_i
, int mode
, struct jffs2_raw_inode
*ri
)
416 struct super_block
*sb
= dir_i
->i_sb
;
417 struct jffs2_sb_info
*c
;
418 struct jffs2_inode_info
*f
;
421 D1(printk(KERN_DEBUG
"jffs2_new_inode(): dir_i %ld, mode 0x%x\n", dir_i
->i_ino
, mode
));
423 c
= JFFS2_SB_INFO(sb
);
425 inode
= new_inode(sb
);
428 return ERR_PTR(-ENOMEM
);
430 f
= JFFS2_INODE_INFO(inode
);
431 jffs2_init_inode_info(f
);
434 memset(ri
, 0, sizeof(*ri
));
435 /* Set OS-specific defaults for new inodes */
436 ri
->uid
= cpu_to_je16(current
->fsuid
);
438 if (dir_i
->i_mode
& S_ISGID
) {
439 ri
->gid
= cpu_to_je16(dir_i
->i_gid
);
443 ri
->gid
= cpu_to_je16(current
->fsgid
);
446 /* POSIX ACLs have to be processed now, at least partly.
447 The umask is only applied if there's no default ACL */
448 ret
= jffs2_init_acl_pre(dir_i
, inode
, &mode
);
450 make_bad_inode(inode
);
454 ret
= jffs2_do_new_inode (c
, f
, mode
, ri
);
456 make_bad_inode(inode
);
461 inode
->i_ino
= je32_to_cpu(ri
->ino
);
462 inode
->i_mode
= jemode_to_cpu(ri
->mode
);
463 inode
->i_gid
= je16_to_cpu(ri
->gid
);
464 inode
->i_uid
= je16_to_cpu(ri
->uid
);
465 inode
->i_atime
= inode
->i_ctime
= inode
->i_mtime
= CURRENT_TIME_SEC
;
466 ri
->atime
= ri
->mtime
= ri
->ctime
= cpu_to_je32(I_SEC(inode
->i_mtime
));
471 insert_inode_hash(inode
);
477 int jffs2_do_fill_super(struct super_block
*sb
, void *data
, int silent
)
479 struct jffs2_sb_info
*c
;
480 struct inode
*root_i
;
484 c
= JFFS2_SB_INFO(sb
);
486 #ifndef CONFIG_JFFS2_FS_WRITEBUFFER
487 if (c
->mtd
->type
== MTD_NANDFLASH
) {
488 printk(KERN_ERR
"jffs2: Cannot operate on NAND flash unless jffs2 NAND support is compiled in.\n");
491 if (c
->mtd
->type
== MTD_DATAFLASH
) {
492 printk(KERN_ERR
"jffs2: Cannot operate on DataFlash unless jffs2 DataFlash support is compiled in.\n");
497 c
->flash_size
= c
->mtd
->size
;
498 c
->sector_size
= c
->mtd
->erasesize
;
499 blocks
= c
->flash_size
/ c
->sector_size
;
502 * Size alignment check
504 if ((c
->sector_size
* blocks
) != c
->flash_size
) {
505 c
->flash_size
= c
->sector_size
* blocks
;
506 printk(KERN_INFO
"jffs2: Flash size not aligned to erasesize, reducing to %dKiB\n",
507 c
->flash_size
/ 1024);
510 if (c
->flash_size
< 5*c
->sector_size
) {
511 printk(KERN_ERR
"jffs2: Too few erase blocks (%d)\n", c
->flash_size
/ c
->sector_size
);
515 c
->cleanmarker_size
= sizeof(struct jffs2_unknown_node
);
517 /* NAND (or other bizarre) flash... do setup accordingly */
518 ret
= jffs2_flash_setup(c
);
522 c
->inocache_list
= kcalloc(INOCACHE_HASHSIZE
, sizeof(struct jffs2_inode_cache
*), GFP_KERNEL
);
523 if (!c
->inocache_list
) {
528 jffs2_init_xattr_subsystem(c
);
530 if ((ret
= jffs2_do_mount_fs(c
)))
533 D1(printk(KERN_DEBUG
"jffs2_do_fill_super(): Getting root inode\n"));
534 root_i
= jffs2_iget(sb
, 1);
535 if (IS_ERR(root_i
)) {
536 D1(printk(KERN_WARNING
"get root inode failed\n"));
537 ret
= PTR_ERR(root_i
);
543 D1(printk(KERN_DEBUG
"jffs2_do_fill_super(): d_alloc_root()\n"));
544 sb
->s_root
= d_alloc_root(root_i
);
548 sb
->s_maxbytes
= 0xFFFFFFFF;
549 sb
->s_blocksize
= PAGE_CACHE_SIZE
;
550 sb
->s_blocksize_bits
= PAGE_CACHE_SHIFT
;
551 sb
->s_magic
= JFFS2_SUPER_MAGIC
;
552 if (!(sb
->s_flags
& MS_RDONLY
))
553 jffs2_start_garbage_collect_thread(c
);
559 jffs2_free_ino_caches(c
);
560 jffs2_free_raw_node_refs(c
);
561 if (jffs2_blocks_use_vmalloc(c
))
566 jffs2_clear_xattr_subsystem(c
);
567 kfree(c
->inocache_list
);
569 jffs2_flash_cleanup(c
);
574 void jffs2_gc_release_inode(struct jffs2_sb_info
*c
,
575 struct jffs2_inode_info
*f
)
577 iput(OFNI_EDONI_2SFFJ(f
));
580 struct jffs2_inode_info
*jffs2_gc_fetch_inode(struct jffs2_sb_info
*c
,
584 struct jffs2_inode_cache
*ic
;
586 /* The inode has zero nlink but its nodes weren't yet marked
587 obsolete. This has to be because we're still waiting for
588 the final (close() and) iput() to happen.
590 There's a possibility that the final iput() could have
591 happened while we were contemplating. In order to ensure
592 that we don't cause a new read_inode() (which would fail)
593 for the inode in question, we use ilookup() in this case
596 The nlink can't _become_ zero at this point because we're
597 holding the alloc_sem, and jffs2_do_unlink() would also
598 need that while decrementing nlink on any inode.
600 inode
= ilookup(OFNI_BS_2SFFJ(c
), inum
);
602 D1(printk(KERN_DEBUG
"ilookup() failed for ino #%u; inode is probably deleted.\n",
605 spin_lock(&c
->inocache_lock
);
606 ic
= jffs2_get_ino_cache(c
, inum
);
608 D1(printk(KERN_DEBUG
"Inode cache for ino #%u is gone.\n", inum
));
609 spin_unlock(&c
->inocache_lock
);
612 if (ic
->state
!= INO_STATE_CHECKEDABSENT
) {
613 /* Wait for progress. Don't just loop */
614 D1(printk(KERN_DEBUG
"Waiting for ino #%u in state %d\n",
615 ic
->ino
, ic
->state
));
616 sleep_on_spinunlock(&c
->inocache_wq
, &c
->inocache_lock
);
618 spin_unlock(&c
->inocache_lock
);
624 /* Inode has links to it still; they're not going away because
625 jffs2_do_unlink() would need the alloc_sem and we have it.
626 Just iget() it, and if read_inode() is necessary that's OK.
628 inode
= jffs2_iget(OFNI_BS_2SFFJ(c
), inum
);
630 return ERR_CAST(inode
);
632 if (is_bad_inode(inode
)) {
633 printk(KERN_NOTICE
"Eep. read_inode() failed for ino #%u. nlink %d\n",
635 /* NB. This will happen again. We need to do something appropriate here. */
637 return ERR_PTR(-EIO
);
640 return JFFS2_INODE_INFO(inode
);
643 unsigned char *jffs2_gc_fetch_page(struct jffs2_sb_info
*c
,
644 struct jffs2_inode_info
*f
,
645 unsigned long offset
,
648 struct inode
*inode
= OFNI_EDONI_2SFFJ(f
);
651 pg
= read_cache_page_async(inode
->i_mapping
, offset
>> PAGE_CACHE_SHIFT
,
652 (void *)jffs2_do_readpage_unlock
, inode
);
656 *priv
= (unsigned long)pg
;
660 void jffs2_gc_release_page(struct jffs2_sb_info
*c
,
664 struct page
*pg
= (void *)*priv
;
667 page_cache_release(pg
);
670 static int jffs2_flash_setup(struct jffs2_sb_info
*c
) {
673 if (jffs2_cleanmarker_oob(c
)) {
674 /* NAND flash... do setup accordingly */
675 ret
= jffs2_nand_flash_setup(c
);
681 if (jffs2_dataflash(c
)) {
682 ret
= jffs2_dataflash_setup(c
);
687 /* and Intel "Sibley" flash */
688 if (jffs2_nor_wbuf_flash(c
)) {
689 ret
= jffs2_nor_wbuf_flash_setup(c
);
694 /* and an UBI volume */
695 if (jffs2_ubivol(c
)) {
696 ret
= jffs2_ubivol_setup(c
);
704 void jffs2_flash_cleanup(struct jffs2_sb_info
*c
) {
706 if (jffs2_cleanmarker_oob(c
)) {
707 jffs2_nand_flash_cleanup(c
);
711 if (jffs2_dataflash(c
)) {
712 jffs2_dataflash_cleanup(c
);
715 /* and Intel "Sibley" flash */
716 if (jffs2_nor_wbuf_flash(c
)) {
717 jffs2_nor_wbuf_flash_cleanup(c
);
720 /* and an UBI volume */
721 if (jffs2_ubivol(c
)) {
722 jffs2_ubivol_cleanup(c
);