mirror of
https://github.com/adulau/aha.git
synced 2024-12-29 04:06:22 +00:00
kill-the-bkl/reiserfs: drop the fs race watchdog from _get_block_create_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>
This commit is contained in:
parent
205cb37b89
commit
27b3a5c51b
1 changed files with 2 additions and 9 deletions
|
@ -251,7 +251,6 @@ static int _get_block_create_0(struct inode *inode, sector_t block,
|
||||||
struct cpu_key key;
|
struct cpu_key key;
|
||||||
struct buffer_head *bh;
|
struct buffer_head *bh;
|
||||||
struct item_head *ih, tmp_ih;
|
struct item_head *ih, tmp_ih;
|
||||||
int fs_gen;
|
|
||||||
b_blocknr_t blocknr;
|
b_blocknr_t blocknr;
|
||||||
char *p = NULL;
|
char *p = NULL;
|
||||||
int chars;
|
int chars;
|
||||||
|
@ -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,
|
(loff_t) block * inode->i_sb->s_blocksize + 1, TYPE_ANY,
|
||||||
3);
|
3);
|
||||||
|
|
||||||
research:
|
|
||||||
result = search_for_position_by_key(inode->i_sb, &key, &path);
|
result = search_for_position_by_key(inode->i_sb, &key, &path);
|
||||||
if (result != POSITION_FOUND) {
|
if (result != POSITION_FOUND) {
|
||||||
pathrelse(&path);
|
pathrelse(&path);
|
||||||
|
@ -340,7 +338,6 @@ static int _get_block_create_0(struct inode *inode, sector_t block,
|
||||||
}
|
}
|
||||||
// read file tail into part of page
|
// read file tail into part of page
|
||||||
offset = (cpu_key_k_offset(&key) - 1) & (PAGE_CACHE_SIZE - 1);
|
offset = (cpu_key_k_offset(&key) - 1) & (PAGE_CACHE_SIZE - 1);
|
||||||
fs_gen = get_generation(inode->i_sb);
|
|
||||||
copy_item_head(&tmp_ih, ih);
|
copy_item_head(&tmp_ih, ih);
|
||||||
|
|
||||||
/* we only want to kmap if we are reading the tail into the page.
|
/* we only want to kmap if we are reading the tail into the page.
|
||||||
|
@ -348,13 +345,9 @@ static int _get_block_create_0(struct inode *inode, sector_t block,
|
||||||
** sure we need to. But, this means the item might move if
|
** sure we need to. But, this means the item might move if
|
||||||
** kmap schedules
|
** kmap schedules
|
||||||
*/
|
*/
|
||||||
if (!p) {
|
if (!p)
|
||||||
p = (char *)kmap(bh_result->b_page);
|
p = (char *)kmap(bh_result->b_page);
|
||||||
if (fs_changed(fs_gen, inode->i_sb)
|
|
||||||
&& item_moved(&tmp_ih, &path)) {
|
|
||||||
goto research;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
p += offset;
|
p += offset;
|
||||||
memset(p, 0, inode->i_sb->s_blocksize);
|
memset(p, 0, inode->i_sb->s_blocksize);
|
||||||
do {
|
do {
|
||||||
|
|
Loading…
Reference in a new issue