Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 19458
b: refs/heads/master
c: e0e851c
h: refs/heads/master
v: v3
  • Loading branch information
Chris Mason authored and Linus Torvalds committed Feb 1, 2006
1 parent 0e47109 commit a2c3c56
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 6 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: fc5cd582e9c934ddaf6f310179488932cd154794
refs/heads/master: e0e851cf30f1a9bd2e2a7624e9810378d6a2b072
7 changes: 7 additions & 0 deletions trunk/fs/reiserfs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -2363,6 +2363,13 @@ static int reiserfs_write_full_page(struct page *page,
int bh_per_page = PAGE_CACHE_SIZE / s->s_blocksize;
th.t_trans_id = 0;

/* no logging allowed when nonblocking or from PF_MEMALLOC */
if (checked && (current->flags & PF_MEMALLOC)) {
redirty_page_for_writepage(wbc, page);
unlock_page(page);
return 0;
}

/* The page dirty bit is cleared before writepage is called, which
* means we have to tell create_empty_buffers to make dirty buffers
* The page really should be up to date at this point, so tossing
Expand Down
19 changes: 14 additions & 5 deletions trunk/fs/reiserfs/journal.c
Original file line number Diff line number Diff line change
Expand Up @@ -988,6 +988,7 @@ static int flush_commit_list(struct super_block *s,
struct reiserfs_journal *journal = SB_JOURNAL(s);
int barrier = 0;
int retval = 0;
int write_len;

reiserfs_check_lock_depth(s, "flush_commit_list");

Expand Down Expand Up @@ -1037,16 +1038,24 @@ static int flush_commit_list(struct super_block *s,
BUG_ON(!list_empty(&jl->j_bh_list));
/*
* for the description block and all the log blocks, submit any buffers
* that haven't already reached the disk
* that haven't already reached the disk. Try to write at least 256
* log blocks. later on, we will only wait on blocks that correspond
* to this transaction, but while we're unplugging we might as well
* get a chunk of data on there.
*/
atomic_inc(&journal->j_async_throttle);
for (i = 0; i < (jl->j_len + 1); i++) {
write_len = jl->j_len + 1;
if (write_len < 256)
write_len = 256;
for (i = 0 ; i < write_len ; i++) {
bn = SB_ONDISK_JOURNAL_1st_BLOCK(s) + (jl->j_start + i) %
SB_ONDISK_JOURNAL_SIZE(s);
tbh = journal_find_get_block(s, bn);
if (buffer_dirty(tbh)) /* redundant, ll_rw_block() checks */
ll_rw_block(SWRITE, 1, &tbh);
put_bh(tbh);
if (tbh) {
if (buffer_dirty(tbh))
ll_rw_block(WRITE, 1, &tbh) ;
put_bh(tbh) ;
}
}
atomic_dec(&journal->j_async_throttle);

Expand Down

0 comments on commit a2c3c56

Please sign in to comment.