aboutsummaryrefslogtreecommitdiffstats
path: root/fs/logfs/super.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/logfs/super.c')
-rw-r--r--fs/logfs/super.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/fs/logfs/super.c b/fs/logfs/super.c
index d128a2c1c8d1..94d80f7ee7c2 100644
--- a/fs/logfs/super.c
+++ b/fs/logfs/super.c
@@ -317,6 +317,7 @@ static int logfs_make_writeable(struct super_block *sb)
317 317
318static int logfs_get_sb_final(struct super_block *sb, struct vfsmount *mnt) 318static int logfs_get_sb_final(struct super_block *sb, struct vfsmount *mnt)
319{ 319{
320 struct logfs_super *super = logfs_super(sb);
320 struct inode *rootdir; 321 struct inode *rootdir;
321 int err; 322 int err;
322 323
@@ -329,15 +330,22 @@ static int logfs_get_sb_final(struct super_block *sb, struct vfsmount *mnt)
329 if (!sb->s_root) 330 if (!sb->s_root)
330 goto fail; 331 goto fail;
331 332
333 super->s_erase_page = alloc_pages(GFP_KERNEL, 0);
334 if (!super->s_erase_page)
335 goto fail2;
336 memset(page_address(super->s_erase_page), 0xFF, PAGE_SIZE);
337
332 /* FIXME: check for read-only mounts */ 338 /* FIXME: check for read-only mounts */
333 err = logfs_make_writeable(sb); 339 err = logfs_make_writeable(sb);
334 if (err) 340 if (err)
335 goto fail2; 341 goto fail3;
336 342
337 log_super("LogFS: Finished mounting\n"); 343 log_super("LogFS: Finished mounting\n");
338 simple_set_mnt(mnt, sb); 344 simple_set_mnt(mnt, sb);
339 return 0; 345 return 0;
340 346
347fail3:
348 __free_page(super->s_erase_page);
341fail2: 349fail2:
342 iput(rootdir); 350 iput(rootdir);
343fail: 351fail:
@@ -498,6 +506,8 @@ static void logfs_kill_sb(struct super_block *sb)
498 logfs_cleanup_journal(sb); 506 logfs_cleanup_journal(sb);
499 logfs_cleanup_areas(sb); 507 logfs_cleanup_areas(sb);
500 logfs_cleanup_rw(sb); 508 logfs_cleanup_rw(sb);
509 if (super->s_erase_page)
510 __free_page(super->s_erase_page);
501 super->s_devops->put_device(sb); 511 super->s_devops->put_device(sb);
502 mempool_destroy(super->s_btree_pool); 512 mempool_destroy(super->s_btree_pool);
503 mempool_destroy(super->s_alias_pool); 513 mempool_destroy(super->s_alias_pool);