patch-2.4.17 linux/fs/reiserfs/journal.c
Next file: linux/fs/reiserfs/lbalance.c
Previous file: linux/fs/reiserfs/ioctl.c
Back to the patch index
Back to the overall index
- Lines: 84
- Date:
Fri Dec 21 16:40:33 2001
- Orig file:
linux-2.4.16/fs/reiserfs/journal.c
- Orig date:
Fri Nov 9 22:18:25 2001
diff -Naur -X /home/marcelo/lib/dontdiff linux-2.4.16/fs/reiserfs/journal.c linux/fs/reiserfs/journal.c
@@ -92,6 +92,8 @@
static int flush_journal_list(struct super_block *s, struct reiserfs_journal_list *jl, int flushall) ;
static int flush_commit_list(struct super_block *s, struct reiserfs_journal_list *jl, int flushall) ;
static int can_dirty(struct reiserfs_journal_cnode *cn) ;
+static int remove_from_journal_list(struct super_block *s, struct reiserfs_journal_list *jl, struct buffer_head *bh, int remove_freed);
+static int journal_join(struct reiserfs_transaction_handle *th, struct super_block *p_s_sb, unsigned long nblocks);
static void init_journal_hash(struct super_block *p_s_sb) {
memset(SB_JOURNAL(p_s_sb)->j_hash_table, 0, JOURNAL_HASH_SIZE * sizeof(struct reiserfs_journal_cnode *)) ;
@@ -147,7 +149,7 @@
}
bn = allocate_bitmap_node(p_s_sb) ;
if (!bn) {
- current->policy = SCHED_YIELD ;
+ current->policy |= SCHED_YIELD ;
schedule() ;
goto repeat ;
}
@@ -1697,7 +1699,7 @@
/* step three, starting at the oldest transaction, replay */
if (last_flush_start > 0) {
oldest_start = last_flush_start ;
- oldest_trans_id = last_flush_trans_id ;
+ oldest_trans_id = last_flush_trans_id + 1 ;
}
cur_dblock = oldest_start ;
if (oldest_trans_id) {
@@ -1717,6 +1719,8 @@
}
cur_dblock = reiserfs_get_journal_block(p_s_sb) + SB_JOURNAL(p_s_sb)->j_start ;
replay_count++ ;
+ if (cur_dblock == oldest_start)
+ break;
}
if (oldest_trans_id == 0) {
@@ -2083,7 +2087,7 @@
}
-int journal_join(struct reiserfs_transaction_handle *th, struct super_block *p_s_sb, unsigned long nblocks) {
+static int journal_join(struct reiserfs_transaction_handle *th, struct super_block *p_s_sb, unsigned long nblocks) {
return do_journal_begin_r(th, p_s_sb, nblocks, 1) ;
}
@@ -2238,7 +2242,7 @@
**
** returns 1 if it cleaned and relsed the buffer. 0 otherwise
*/
-int remove_from_transaction(struct super_block *p_s_sb, unsigned long blocknr, int already_cleaned) {
+static int remove_from_transaction(struct super_block *p_s_sb, unsigned long blocknr, int already_cleaned) {
struct buffer_head *bh ;
struct reiserfs_journal_cnode *cn ;
int ret = 0;
@@ -2279,7 +2283,7 @@
}
/* removes from a specific journal list hash */
-int remove_from_journal_list(struct super_block *s, struct reiserfs_journal_list *jl, struct buffer_head *bh, int remove_freed) {
+static int remove_from_journal_list(struct super_block *s, struct reiserfs_journal_list *jl, struct buffer_head *bh, int remove_freed) {
remove_journal_hash(SB_JOURNAL(s)->j_list_hash_table, jl, bh, remove_freed) ;
return 0 ;
}
@@ -2341,20 +2345,6 @@
int show_reiserfs_locks(void) {
dump_journal_writers() ;
-#if 0 /* debugging code for when we are compiled static don't delete */
- p_s_sb = sb_entry(super_blocks.next);
- while (p_s_sb != sb_entry(&super_blocks)) {
- if (reiserfs_is_super(p_s_sb)) {
-printk("journal lock is %d, join lock is %d, writers %d must wait is %d\n",
- atomic_read(&(SB_JOURNAL(p_s_sb)->j_wlock)),
- atomic_read(&(SB_JOURNAL(p_s_sb)->j_jlock)),
- atomic_read(&(SB_JOURNAL(p_s_sb)->j_wcount)),
- SB_JOURNAL(p_s_sb)->j_must_wait) ;
- printk("used cnodes %d, free cnodes %d\n", SB_JOURNAL(p_s_sb)->j_cnode_used, SB_JOURNAL(p_s_sb)->j_cnode_free) ;
- }
- p_s_sb = sb_entry(p_s_sb->s_list.next);
- }
-#endif
return 0 ;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)