提交 e5eb8caa 编写于 作者: A Al Viro

[PATCH] remember mode of reiserfs journal

Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
上级 c2dd0dae
...@@ -2575,7 +2575,7 @@ static int release_journal_dev(struct super_block *super, ...@@ -2575,7 +2575,7 @@ static int release_journal_dev(struct super_block *super,
if (journal->j_dev_bd != NULL) { if (journal->j_dev_bd != NULL) {
if (journal->j_dev_bd->bd_dev != super->s_dev) if (journal->j_dev_bd->bd_dev != super->s_dev)
bd_release(journal->j_dev_bd); bd_release(journal->j_dev_bd);
result = blkdev_put(journal->j_dev_bd, 0); /* move up */ result = blkdev_put(journal->j_dev_bd, journal->j_dev_mode);
journal->j_dev_bd = NULL; journal->j_dev_bd = NULL;
} }
...@@ -2608,6 +2608,7 @@ static int journal_init_dev(struct super_block *super, ...@@ -2608,6 +2608,7 @@ static int journal_init_dev(struct super_block *super,
/* there is no "jdev" option and journal is on separate device */ /* there is no "jdev" option and journal is on separate device */
if ((!jdev_name || !jdev_name[0])) { if ((!jdev_name || !jdev_name[0])) {
journal->j_dev_bd = open_by_devnum(jdev, blkdev_mode); journal->j_dev_bd = open_by_devnum(jdev, blkdev_mode);
journal->j_dev_mode = blkdev_mode;
if (IS_ERR(journal->j_dev_bd)) { if (IS_ERR(journal->j_dev_bd)) {
result = PTR_ERR(journal->j_dev_bd); result = PTR_ERR(journal->j_dev_bd);
journal->j_dev_bd = NULL; journal->j_dev_bd = NULL;
...@@ -2628,8 +2629,9 @@ static int journal_init_dev(struct super_block *super, ...@@ -2628,8 +2629,9 @@ static int journal_init_dev(struct super_block *super,
return 0; return 0;
} }
journal->j_dev_mode = blkdev_mode;
journal->j_dev_bd = open_bdev_exclusive(jdev_name, journal->j_dev_bd = open_bdev_exclusive(jdev_name,
FMODE_READ|FMODE_WRITE, journal); blkdev_mode, journal);
if (IS_ERR(journal->j_dev_bd)) { if (IS_ERR(journal->j_dev_bd)) {
result = PTR_ERR(journal->j_dev_bd); result = PTR_ERR(journal->j_dev_bd);
journal->j_dev_bd = NULL; journal->j_dev_bd = NULL;
......
...@@ -178,6 +178,7 @@ struct reiserfs_journal { ...@@ -178,6 +178,7 @@ struct reiserfs_journal {
struct reiserfs_journal_cnode *j_first; /* oldest journal block. start here for traverse */ struct reiserfs_journal_cnode *j_first; /* oldest journal block. start here for traverse */
struct block_device *j_dev_bd; struct block_device *j_dev_bd;
fmode_t j_dev_mode;
int j_1st_reserved_block; /* first block on s_dev of reserved area journal */ int j_1st_reserved_block; /* first block on s_dev of reserved area journal */
unsigned long j_state; unsigned long j_state;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册