This is a changeset 5 out of 15.
You can pull it from bk://namesys.com/bk/reiser3-linux-2.5
Or use plain text patch at the end of this message
This patch moves BKL further down the call chain into reiserfs_truncate_file.
By Josh MacDonald.
Chris Mason spent a lot of efforts in helping to convert this changeset to
Linus-compatible form.
Diffstat:
file.c | 2 --
inode.c | 5 +++--
stree.c | 4 ++--
3 files changed, 5 insertions(+), 6 deletions(-)
Plaintext patch:
# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
# ChangeSet 1.598 -> 1.599
# fs/reiserfs/file.c 1.14 -> 1.15
# fs/reiserfs/inode.c 1.61 -> 1.62
# fs/reiserfs/stree.c 1.29 -> 1.30
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/05/30 green@angband.namesys.com 1.599
# stree.c, inode.c, file.c:
# reiserfs: move BKL further down the call chain into reiserfs_truncate_file. From Josh MacDonald
# --------------------------------------------
#
diff -Nru a/fs/reiserfs/file.c b/fs/reiserfs/file.c
--- a/fs/reiserfs/file.c Thu May 30 18:42:19 2002
+++ b/fs/reiserfs/file.c Thu May 30 18:42:19 2002
@@ -66,9 +66,7 @@
}
static void reiserfs_vfs_truncate_file(struct inode *inode) {
- lock_kernel();
reiserfs_truncate_file(inode, 1) ;
- unlock_kernel();
}
/* Sync a reiserfs file. */
diff -Nru a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c
--- a/fs/reiserfs/inode.c Thu May 30 18:42:19 2002
+++ b/fs/reiserfs/inode.c Thu May 30 18:42:19 2002
@@ -1738,7 +1738,6 @@
void reiserfs_truncate_file(struct inode *p_s_inode, int update_timestamps) {
struct reiserfs_transaction_handle th ;
int windex ;
-
/* we want the offset for the first byte after the end of the file */
unsigned long offset = p_s_inode->i_size & (PAGE_CACHE_SIZE - 1) ;
unsigned blocksize = p_s_inode->i_sb->s_blocksize ;
@@ -1747,6 +1746,8 @@
int error ;
struct buffer_head *bh = NULL ;
+ lock_kernel ();
+
if (p_s_inode->i_size > 0) {
if ((error = grab_tail_page(p_s_inode, &page, &bh))) {
// -ENOENT means we truncated past the end of the file,
@@ -1800,7 +1801,7 @@
page_cache_release(page) ;
}
- return ;
+ unlock_kernel ();
}
static int map_block_for_writepage(struct inode *inode,
diff -Nru a/fs/reiserfs/stree.c b/fs/reiserfs/stree.c
--- a/fs/reiserfs/stree.c Thu May 30 18:42:19 2002
+++ b/fs/reiserfs/stree.c Thu May 30 18:42:19 2002
@@ -1715,13 +1715,13 @@
/* Cut or delete file item. */
n_deleted = reiserfs_cut_from_item(th, &s_search_path, &s_item_key, p_s_inode, page, n_new_file_size);
if (n_deleted < 0) {
- reiserfs_warning ("vs-5665: reiserfs_truncate_file: cut_from_item failed");
+ reiserfs_warning ("vs-5665: reiserfs_do_truncate: reiserfs_cut_from_item failed");
reiserfs_check_path(&s_search_path) ;
return;
}
RFALSE( n_deleted > n_file_size,
- "PAP-5670: reiserfs_truncate_file returns too big number: deleted %d, file_size %lu, item_key %K",
+ "PAP-5670: reiserfs_cut_from_item: too many bytes deleted: deleted %d, file_size %lu, item_key %K",
n_deleted, n_file_size, &s_item_key);
/* Change key to search the last file item. */
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Sat Jun 15 2002 - 22:00:17 EST