Skip to content

Commit

Permalink
coda: add bdi backing to mount session
Browse files Browse the repository at this point in the history
This ensures that dirty data gets flushed properly.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
  • Loading branch information
Jens Axboe committed Apr 22, 2010
1 parent 8044f7f commit 5163d90
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 0 deletions.
8 changes: 8 additions & 0 deletions fs/coda/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,10 @@ static int coda_fill_super(struct super_block *sb, void *data, int silent)
return -EBUSY;
}

error = bdi_setup_and_register(&vc->bdi, "coda", BDI_CAP_MAP_COPY);
if (error)
goto bdi_err;

vc->vc_sb = sb;

sb->s_fs_info = vc;
Expand All @@ -175,6 +179,7 @@ static int coda_fill_super(struct super_block *sb, void *data, int silent)
sb->s_blocksize_bits = 12;
sb->s_magic = CODA_SUPER_MAGIC;
sb->s_op = &coda_super_operations;
sb->s_bdi = &vc->bdi;

/* get root fid from Venus: this needs the root inode */
error = venus_rootfid(sb, &fid);
Expand All @@ -200,6 +205,8 @@ static int coda_fill_super(struct super_block *sb, void *data, int silent)
return 0;

error:
bdi_destroy(&vc->bdi);
bdi_err:
if (root)
iput(root);
if (vc)
Expand All @@ -210,6 +217,7 @@ static int coda_fill_super(struct super_block *sb, void *data, int silent)

static void coda_put_super(struct super_block *sb)
{
bdi_destroy(&coda_vcp(sb)->bdi);
coda_vcp(sb)->vc_sb = NULL;
sb->s_fs_info = NULL;

Expand Down
2 changes: 2 additions & 0 deletions include/linux/coda_psdev.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#ifndef __CODA_PSDEV_H
#define __CODA_PSDEV_H

#include <linux/backing-dev.h>
#include <linux/magic.h>

#define CODA_PSDEV_MAJOR 67
Expand All @@ -17,6 +18,7 @@ struct venus_comm {
struct list_head vc_processing;
int vc_inuse;
struct super_block *vc_sb;
struct backing_dev_info bdi;
};


Expand Down

0 comments on commit 5163d90

Please sign in to comment.