Skip to content

Commit

Permalink
kill-the-bkl/reiserfs: drop the fs race watchdog from _get_block_crea…
Browse files Browse the repository at this point in the history
…te_0()

We had a watchdog in _get_block_create_0() that jumped to a fixup retry
path in case the bkl got relaxed while calling kmap().
This is not necessary anymore since we now have a reiserfs lock that is
not implicitly relaxed while sleeping.

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jeff Mahoney <jeffm@suse.com>
Cc: Chris Mason <chris.mason@oracle.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Alexander Beregalov <a.beregalov@gmail.com>
Cc: Laurent Riffard <laurent.riffard@free.fr>
Cc: Thomas Gleixner <tglx@linutronix.de>
  • Loading branch information
Frederic Weisbecker committed Oct 14, 2009
1 parent 205cb37 commit 27b3a5c
Showing 1 changed file with 2 additions and 9 deletions.
11 changes: 2 additions & 9 deletions fs/reiserfs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,6 @@ static int _get_block_create_0(struct inode *inode, sector_t block,
struct cpu_key key;
struct buffer_head *bh;
struct item_head *ih, tmp_ih;
int fs_gen;
b_blocknr_t blocknr;
char *p = NULL;
int chars;
Expand All @@ -265,7 +264,6 @@ static int _get_block_create_0(struct inode *inode, sector_t block,
(loff_t) block * inode->i_sb->s_blocksize + 1, TYPE_ANY,
3);

research:
result = search_for_position_by_key(inode->i_sb, &key, &path);
if (result != POSITION_FOUND) {
pathrelse(&path);
Expand Down Expand Up @@ -340,21 +338,16 @@ static int _get_block_create_0(struct inode *inode, sector_t block,
}
// read file tail into part of page
offset = (cpu_key_k_offset(&key) - 1) & (PAGE_CACHE_SIZE - 1);
fs_gen = get_generation(inode->i_sb);
copy_item_head(&tmp_ih, ih);

/* we only want to kmap if we are reading the tail into the page.
** this is not the common case, so we don't kmap until we are
** sure we need to. But, this means the item might move if
** kmap schedules
*/
if (!p) {
if (!p)
p = (char *)kmap(bh_result->b_page);
if (fs_changed(fs_gen, inode->i_sb)
&& item_moved(&tmp_ih, &path)) {
goto research;
}
}

p += offset;
memset(p, 0, inode->i_sb->s_blocksize);
do {
Expand Down

0 comments on commit 27b3a5c

Please sign in to comment.