Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[PATCH] remember mode of reiserfs journal

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro e5eb8caa c2dd0dae

+5 -2
+4 -2
fs/reiserfs/journal.c
··· 2575 2575 if (journal->j_dev_bd != NULL) { 2576 2576 if (journal->j_dev_bd->bd_dev != super->s_dev) 2577 2577 bd_release(journal->j_dev_bd); 2578 - result = blkdev_put(journal->j_dev_bd, 0); /* move up */ 2578 + result = blkdev_put(journal->j_dev_bd, journal->j_dev_mode); 2579 2579 journal->j_dev_bd = NULL; 2580 2580 } 2581 2581 ··· 2608 2608 /* there is no "jdev" option and journal is on separate device */ 2609 2609 if ((!jdev_name || !jdev_name[0])) { 2610 2610 journal->j_dev_bd = open_by_devnum(jdev, blkdev_mode); 2611 + journal->j_dev_mode = blkdev_mode; 2611 2612 if (IS_ERR(journal->j_dev_bd)) { 2612 2613 result = PTR_ERR(journal->j_dev_bd); 2613 2614 journal->j_dev_bd = NULL; ··· 2629 2628 return 0; 2630 2629 } 2631 2630 2631 + journal->j_dev_mode = blkdev_mode; 2632 2632 journal->j_dev_bd = open_bdev_exclusive(jdev_name, 2633 - FMODE_READ|FMODE_WRITE, journal); 2633 + blkdev_mode, journal); 2634 2634 if (IS_ERR(journal->j_dev_bd)) { 2635 2635 result = PTR_ERR(journal->j_dev_bd); 2636 2636 journal->j_dev_bd = NULL;
+1
include/linux/reiserfs_fs_sb.h
··· 178 178 struct reiserfs_journal_cnode *j_first; /* oldest journal block. start here for traverse */ 179 179 180 180 struct block_device *j_dev_bd; 181 + fmode_t j_dev_mode; 181 182 int j_1st_reserved_block; /* first block on s_dev of reserved area journal */ 182 183 183 184 unsigned long j_state;