diff options
Diffstat (limited to 'fs/ntfs')
-rw-r--r-- | fs/ntfs/ChangeLog | 1 | ||||
-rw-r--r-- | fs/ntfs/compress.c | 8 | ||||
-rw-r--r-- | fs/ntfs/file.c | 9 |
3 files changed, 8 insertions, 10 deletions
diff --git a/fs/ntfs/ChangeLog b/fs/ntfs/ChangeLog index 1168d3ed2bec..96224c020797 100644 --- a/fs/ntfs/ChangeLog +++ b/fs/ntfs/ChangeLog | |||
@@ -58,6 +58,7 @@ ToDo/Notes: | |||
58 | - Fix a bug in fs/ntfs/index.c::ntfs_index_lookup(). When the returned | 58 | - Fix a bug in fs/ntfs/index.c::ntfs_index_lookup(). When the returned |
59 | index entry is in the index root, we forgot to set the @ir pointer in | 59 | index entry is in the index root, we forgot to set the @ir pointer in |
60 | the index context. Thanks to Yura Pakhuchiy for finding this bug. | 60 | the index context. Thanks to Yura Pakhuchiy for finding this bug. |
61 | - Remove bogus setting of PageError in ntfs_read_compressed_block(). | ||
61 | 62 | ||
62 | 2.1.23 - Implement extension of resident files and make writing safe as well as | 63 | 2.1.23 - Implement extension of resident files and make writing safe as well as |
63 | many bug fixes, cleanups, and enhancements... | 64 | many bug fixes, cleanups, and enhancements... |
diff --git a/fs/ntfs/compress.c b/fs/ntfs/compress.c index 6d265cfd49aa..25d24106f893 100644 --- a/fs/ntfs/compress.c +++ b/fs/ntfs/compress.c | |||
@@ -539,7 +539,6 @@ int ntfs_read_compressed_block(struct page *page) | |||
539 | if (unlikely(!pages || !bhs)) { | 539 | if (unlikely(!pages || !bhs)) { |
540 | kfree(bhs); | 540 | kfree(bhs); |
541 | kfree(pages); | 541 | kfree(pages); |
542 | SetPageError(page); | ||
543 | unlock_page(page); | 542 | unlock_page(page); |
544 | ntfs_error(vol->sb, "Failed to allocate internal buffers."); | 543 | ntfs_error(vol->sb, "Failed to allocate internal buffers."); |
545 | return -ENOMEM; | 544 | return -ENOMEM; |
@@ -871,9 +870,6 @@ lock_retry_remap: | |||
871 | for (; prev_cur_page < cur_page; prev_cur_page++) { | 870 | for (; prev_cur_page < cur_page; prev_cur_page++) { |
872 | page = pages[prev_cur_page]; | 871 | page = pages[prev_cur_page]; |
873 | if (page) { | 872 | if (page) { |
874 | if (prev_cur_page == xpage && | ||
875 | !xpage_done) | ||
876 | SetPageError(page); | ||
877 | flush_dcache_page(page); | 873 | flush_dcache_page(page); |
878 | kunmap(page); | 874 | kunmap(page); |
879 | unlock_page(page); | 875 | unlock_page(page); |
@@ -904,8 +900,6 @@ lock_retry_remap: | |||
904 | "Terminating them with extreme " | 900 | "Terminating them with extreme " |
905 | "prejudice. Inode 0x%lx, page index " | 901 | "prejudice. Inode 0x%lx, page index " |
906 | "0x%lx.", ni->mft_no, page->index); | 902 | "0x%lx.", ni->mft_no, page->index); |
907 | if (cur_page == xpage && !xpage_done) | ||
908 | SetPageError(page); | ||
909 | flush_dcache_page(page); | 903 | flush_dcache_page(page); |
910 | kunmap(page); | 904 | kunmap(page); |
911 | unlock_page(page); | 905 | unlock_page(page); |
@@ -953,8 +947,6 @@ err_out: | |||
953 | for (i = cur_page; i < max_page; i++) { | 947 | for (i = cur_page; i < max_page; i++) { |
954 | page = pages[i]; | 948 | page = pages[i]; |
955 | if (page) { | 949 | if (page) { |
956 | if (i == xpage && !xpage_done) | ||
957 | SetPageError(page); | ||
958 | flush_dcache_page(page); | 950 | flush_dcache_page(page); |
959 | kunmap(page); | 951 | kunmap(page); |
960 | unlock_page(page); | 952 | unlock_page(page); |
diff --git a/fs/ntfs/file.c b/fs/ntfs/file.c index e0f530ce6b99..be9fd1dd423d 100644 --- a/fs/ntfs/file.c +++ b/fs/ntfs/file.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * file.c - NTFS kernel file operations. Part of the Linux-NTFS project. | 2 | * file.c - NTFS kernel file operations. Part of the Linux-NTFS project. |
3 | * | 3 | * |
4 | * Copyright (c) 2001-2004 Anton Altaparmakov | 4 | * Copyright (c) 2001-2005 Anton Altaparmakov |
5 | * | 5 | * |
6 | * This program/include file is free software; you can redistribute it and/or | 6 | * This program/include file is free software; you can redistribute it and/or |
7 | * modify it under the terms of the GNU General Public License as published | 7 | * modify it under the terms of the GNU General Public License as published |
@@ -94,6 +94,11 @@ static int ntfs_file_fsync(struct file *filp, struct dentry *dentry, | |||
94 | if (!datasync || !NInoNonResident(NTFS_I(vi))) | 94 | if (!datasync || !NInoNonResident(NTFS_I(vi))) |
95 | ret = ntfs_write_inode(vi, 1); | 95 | ret = ntfs_write_inode(vi, 1); |
96 | write_inode_now(vi, !datasync); | 96 | write_inode_now(vi, !datasync); |
97 | /* | ||
98 | * NOTE: If we were to use mapping->private_list (see ext2 and | ||
99 | * fs/buffer.c) for dirty blocks then we could optimize the below to be | ||
100 | * sync_mapping_buffers(vi->i_mapping). | ||
101 | */ | ||
97 | err = sync_blockdev(vi->i_sb->s_bdev); | 102 | err = sync_blockdev(vi->i_sb->s_bdev); |
98 | if (unlikely(err && !ret)) | 103 | if (unlikely(err && !ret)) |
99 | ret = err; | 104 | ret = err; |