The patch titled reiser4: add missing txn_restart before get_nonexclusive_access calls has been added to the -mm tree. Its filename is reiser4-add-missing-txn_restart-before-get_nonexclusive_access-calls.patch See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this From: Alexander Zarochentsev <zam@xxxxxxxxxxx> Add missing txn_restart_current() before get_nonexclusive_access() calls. Signed-off-by: Alexander Zarochentsev <zam@xxxxxxxxxxx> Signed-off-by: Hans Reiser <reiser@xxxxxxxxxxx> Cc: Vladimir Saveliev <vs@xxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- fs/reiser4/plugin/file/file.c | 17 ++++++++--------- fs/reiser4/plugin/file/file.h | 2 +- fs/reiser4/plugin/file/funcs.h | 5 ----- fs/reiser4/plugin/file/tail_conversion.c | 12 +++--------- fs/reiser4/plugin/item/extent_file_ops.c | 3 ++- fs/reiser4/plugin/item/tail.c | 3 ++- 6 files changed, 16 insertions(+), 26 deletions(-) diff -puN fs/reiser4/plugin/file/file.c~reiser4-add-missing-txn_restart-before-get_nonexclusive_access-calls fs/reiser4/plugin/file/file.c --- devel/fs/reiser4/plugin/file/file.c~reiser4-add-missing-txn_restart-before-get_nonexclusive_access-calls 2006-05-14 02:12:24.000000000 -0700 +++ devel-akpm/fs/reiser4/plugin/file/file.c 2006-05-14 02:12:24.000000000 -0700 @@ -1600,7 +1600,7 @@ writepages_unix_file(struct address_spac break; } } else - get_nonexclusive_access(uf_info, 0); + get_nonexclusive_access(uf_info); while (to_capture > 0) { pgoff_t start; @@ -2026,7 +2026,7 @@ read_unix_file(struct file *file, char _ while (left > 0) { txn_restart_current(); - get_nonexclusive_access(uf_info, 0); + get_nonexclusive_access(uf_info); size = i_size_read(inode); if (*off >= size) { @@ -2181,7 +2181,7 @@ append_and_or_overwrite(hint_t * hint, s if (!exclusive) { drop_exclusive_access(uf_info); txn_restart_current(); - get_nonexclusive_access(uf_info, 0); + get_nonexclusive_access(uf_info); } if (result) return result; @@ -2535,19 +2535,18 @@ ssize_t write_unix_file(struct file *fil while (left > 0) { int excl = 0; - /* getting exclusive or not exclusive access requires no - transaction open */ - txn_restart_current(); - /* faultin user page */ fault_in_pages_readable(buf, left > PAGE_CACHE_SIZE ? PAGE_CACHE_SIZE : left); + /* getting exclusive or not exclusive access requires no + transaction open */ + txn_restart_current(); if (inode->i_size == 0) { get_exclusive_access(uf_info); excl = 1; } else { - get_nonexclusive_access(uf_info, 0); + get_nonexclusive_access(uf_info); excl = 0; } @@ -3028,7 +3027,7 @@ sendfile_unix_file(struct file *file, lo mutex_unlock(&inode->i_mutex); uf_info = unix_file_inode_data(inode); - get_nonexclusive_access(uf_info, 0); + get_nonexclusive_access(uf_info); result = generic_file_sendfile(file, ppos, count, actor, target); drop_nonexclusive_access(uf_info); error: diff -puN fs/reiser4/plugin/file/file.h~reiser4-add-missing-txn_restart-before-get_nonexclusive_access-calls fs/reiser4/plugin/file/file.h --- devel/fs/reiser4/plugin/file/file.h~reiser4-add-missing-txn_restart-before-get_nonexclusive_access-calls 2006-05-14 02:12:24.000000000 -0700 +++ devel-akpm/fs/reiser4/plugin/file/file.h 2006-05-14 02:12:24.000000000 -0700 @@ -104,7 +104,7 @@ typedef struct unix_file_info { struct unix_file_info *unix_file_inode_data(const struct inode *inode); void get_exclusive_access(unix_file_info_t *); void drop_exclusive_access(unix_file_info_t *); -void get_nonexclusive_access(unix_file_info_t *, int); +void get_nonexclusive_access(unix_file_info_t *); void drop_nonexclusive_access(unix_file_info_t *); int try_to_get_nonexclusive_access(unix_file_info_t *); diff -puN fs/reiser4/plugin/file/funcs.h~reiser4-add-missing-txn_restart-before-get_nonexclusive_access-calls fs/reiser4/plugin/file/funcs.h --- devel/fs/reiser4/plugin/file/funcs.h~reiser4-add-missing-txn_restart-before-get_nonexclusive_access-calls 2006-05-14 02:12:24.000000000 -0700 +++ devel-akpm/fs/reiser4/plugin/file/funcs.h 2006-05-14 02:12:24.000000000 -0700 @@ -1,11 +1,6 @@ /* Copyright 2001, 2002, 2003, 2004 by Hans Reiser, licensing governed by reiser4/README */ /* this prototypes functions used by both file.c and tail_conversion.c */ -void get_exclusive_access(unix_file_info_t *); -void drop_exclusive_access(unix_file_info_t *); -void get_nonexclusive_access(unix_file_info_t *, int); -void drop_nonexclusive_access(unix_file_info_t *); - int tail2extent(unix_file_info_t *); int extent2tail(unix_file_info_t *); int finish_conversion(struct inode *inode); diff -puN fs/reiser4/plugin/file/tail_conversion.c~reiser4-add-missing-txn_restart-before-get_nonexclusive_access-calls fs/reiser4/plugin/file/tail_conversion.c --- devel/fs/reiser4/plugin/file/tail_conversion.c~reiser4-add-missing-txn_restart-before-get_nonexclusive_access-calls 2006-05-14 02:12:24.000000000 -0700 +++ devel-akpm/fs/reiser4/plugin/file/tail_conversion.c 2006-05-14 02:12:24.000000000 -0700 @@ -70,18 +70,12 @@ static void nea_grabbed(unix_file_info_t * * Nonexclusive access is obtained on a file before read, write, readpage. */ -void get_nonexclusive_access(unix_file_info_t *uf_info, int atom_may_exist) +void get_nonexclusive_access(unix_file_info_t *uf_info) { assert("nikita-3029", schedulable()); - /* unix_file_filemap_nopage may call this when current atom exist already */ - assert("nikita-3361", - ergo(atom_may_exist == 0, - get_current_context()->trans->atom == NULL)); - BUG_ON(atom_may_exist == 0 - && get_current_context()->trans->atom != NULL); - + assert("nikita-3361", get_current_context()->trans->atom == NULL); + BUG_ON(get_current_context()->trans->atom != NULL); down_read(&uf_info->latch); - nea_grabbed(uf_info); } diff -puN fs/reiser4/plugin/item/extent_file_ops.c~reiser4-add-missing-txn_restart-before-get_nonexclusive_access-calls fs/reiser4/plugin/item/extent_file_ops.c --- devel/fs/reiser4/plugin/item/extent_file_ops.c~reiser4-add-missing-txn_restart-before-get_nonexclusive_access-calls 2006-05-14 02:12:24.000000000 -0700 +++ devel-akpm/fs/reiser4/plugin/item/extent_file_ops.c 2006-05-14 02:12:24.000000000 -0700 @@ -804,10 +804,11 @@ extent_balance_dirty_pages(struct inode f->length > PAGE_CACHE_SIZE ? PAGE_CACHE_SIZE : f->length); + txn_restart_current(); if (excl) get_exclusive_access(uf_info); else - get_nonexclusive_access(uf_info, 0); + get_nonexclusive_access(uf_info); } return 0; } diff -puN fs/reiser4/plugin/item/tail.c~reiser4-add-missing-txn_restart-before-get_nonexclusive_access-calls fs/reiser4/plugin/item/tail.c --- devel/fs/reiser4/plugin/item/tail.c~reiser4-add-missing-txn_restart-before-get_nonexclusive_access-calls 2006-05-14 02:12:24.000000000 -0700 +++ devel-akpm/fs/reiser4/plugin/item/tail.c 2006-05-14 02:12:24.000000000 -0700 @@ -507,10 +507,11 @@ tail_balance_dirty_pages(struct address_ } else drop_nonexclusive_access(uf_info); reiser4_throttle_write(inode); + txn_restart_current(); if (excl) get_exclusive_access(uf_info); else - get_nonexclusive_access(uf_info, 0); + get_nonexclusive_access(uf_info); } return 0; } _ Patches currently in -mm which might be from zam@xxxxxxxxxxx are reiser4.patch reiser4-add-missing-txn_restart-before-get_nonexclusive_access-calls.patch reiser4-have-get_exclusive_access-restart-transaction.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html