Commit 003cbe45 authored by Anton Altaparmakov's avatar Anton Altaparmakov

NTFS: Add missing return -EOPNOTSUPP; in fs/ntfs/aops.c::ntfs_commit_nonresident_write().

parent 5164ccea
...@@ -32,6 +32,8 @@ ToDo: ...@@ -32,6 +32,8 @@ ToDo:
- Define export operations (->s_export_op) for NTFS (ntfs_export_ops) - Define export operations (->s_export_op) for NTFS (ntfs_export_ops)
and set them up in the super block at mount time (super.c) this and set them up in the super block at mount time (super.c) this
allows mounted NTFS volumes to be exported via NFS. allows mounted NTFS volumes to be exported via NFS.
- Add missing return -EOPNOTSUPP; in
fs/ntfs/aops.c::ntfs_commit_nonresident_write().
2.1.6 - Fix minor bug in handling of compressed directories. 2.1.6 - Fix minor bug in handling of compressed directories.
...@@ -73,6 +75,10 @@ ToDo: ...@@ -73,6 +75,10 @@ ToDo:
- Reduce function local stack usage from 0x3d4 bytes to just noise in - Reduce function local stack usage from 0x3d4 bytes to just noise in
fs/ntfs/upcase.c. (Randy Dunlap <rddunlap@osdl.ord>) fs/ntfs/upcase.c. (Randy Dunlap <rddunlap@osdl.ord>)
- Remove compiler warnings for newer gcc. - Remove compiler warnings for newer gcc.
- Pages are no longer kmapped by mm/filemap.c::generic_file_write()
around calls to ->{prepare,commit}_write. Adapt NTFS appropriately
in fs/ntfs/aops.c::ntfs_prepare_nonresident_write() by using
kmap_atomic(KM_USER0).
2.1.0 - First steps towards write support: implement file overwrite. 2.1.0 - First steps towards write support: implement file overwrite.
......
/** /**
* aops.c - NTFS kernel address space operations and page cache handling. * aops.c - NTFS kernel address space operations and page cache handling.
* Part of the Linux-NTFS project. * Part of the Linux-NTFS project.
* *
* Copyright (c) 2001-2003 Anton Altaparmakov * Copyright (c) 2001-2004 Anton Altaparmakov
* Copyright (c) 2002 Richard Russon * Copyright (c) 2002 Richard Russon
* *
* This program/include file is free software; you can redistribute it and/or * This program/include file is free software; you can redistribute it and/or
...@@ -10,13 +10,13 @@ ...@@ -10,13 +10,13 @@
* by the Free Software Foundation; either version 2 of the License, or * by the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version. * (at your option) any later version.
* *
* This program/include file is distributed in the hope that it will be * This program/include file is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty * useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. * GNU General Public License for more details.
* *
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program (in the main directory of the Linux-NTFS * along with this program (in the main directory of the Linux-NTFS
* distribution in the file COPYING); if not, write to the Free Software * distribution in the file COPYING); if not, write to the Free Software
* Foundation,Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * Foundation,Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/ */
...@@ -575,11 +575,11 @@ static int ntfs_write_block(struct page *page) ...@@ -575,11 +575,11 @@ static int ntfs_write_block(struct page *page)
// Again for each page do: // Again for each page do:
// - wait_on_page_locked() // - wait_on_page_locked()
// - Check (PageUptodate(page) && // - Check (PageUptodate(page) &&
// !PageError(page)) // !PageError(page))
// Update initialized size in the attribute and // Update initialized size in the attribute and
// in the inode. // in the inode.
// Again, for each page do: // Again, for each page do:
// __set_page_dirty_buffers(); // __set_page_dirty_buffers();
// page_cache_release() // page_cache_release()
// We don't need to wait on the writes. // We don't need to wait on the writes.
// Update iblock. // Update iblock.
...@@ -1121,11 +1121,11 @@ static int ntfs_prepare_nonresident_write(struct page *page, ...@@ -1121,11 +1121,11 @@ static int ntfs_prepare_nonresident_write(struct page *page,
// Again for each page do: // Again for each page do:
// - wait_on_page_locked() // - wait_on_page_locked()
// - Check (PageUptodate(page) && // - Check (PageUptodate(page) &&
// !PageError(page)) // !PageError(page))
// Update initialized size in the attribute and // Update initialized size in the attribute and
// in the inode. // in the inode.
// Again, for each page do: // Again, for each page do:
// __set_page_dirty_buffers(); // __set_page_dirty_buffers();
// page_cache_release() // page_cache_release()
// We don't need to wait on the writes. // We don't need to wait on the writes.
// Update iblock. // Update iblock.
...@@ -1197,7 +1197,7 @@ static int ntfs_prepare_nonresident_write(struct page *page, ...@@ -1197,7 +1197,7 @@ static int ntfs_prepare_nonresident_write(struct page *page,
// TODO: Instantiate the hole. // TODO: Instantiate the hole.
// clear_buffer_new(bh); // clear_buffer_new(bh);
// unmap_underlying_metadata(bh->b_bdev, // unmap_underlying_metadata(bh->b_bdev,
// bh->b_blocknr); // bh->b_blocknr);
// For non-uptodate buffers, need to // For non-uptodate buffers, need to
// zero out the region outside the // zero out the region outside the
// request in this bh or all bhs, // request in this bh or all bhs,
...@@ -1288,7 +1288,7 @@ static int ntfs_prepare_nonresident_write(struct page *page, ...@@ -1288,7 +1288,7 @@ static int ntfs_prepare_nonresident_write(struct page *page,
if (PageUptodate(page)) { if (PageUptodate(page)) {
if (!buffer_uptodate(bh)) if (!buffer_uptodate(bh))
set_buffer_uptodate(bh); set_buffer_uptodate(bh);
continue; continue;
} }
/* /*
* The page is not uptodate. The buffer is mapped. If it is not * The page is not uptodate. The buffer is mapped. If it is not
...@@ -1536,6 +1536,7 @@ static int ntfs_commit_nonresident_write(struct page *page, ...@@ -1536,6 +1536,7 @@ static int ntfs_commit_nonresident_write(struct page *page,
if (pos > vi->i_size) { if (pos > vi->i_size) {
ntfs_error(vi->i_sb, "Writing beyond the existing file size is " ntfs_error(vi->i_sb, "Writing beyond the existing file size is "
"not supported yet. Sorry."); "not supported yet. Sorry.");
return -EOPNOTSUPP;
// vi->i_size = pos; // vi->i_size = pos;
// mark_inode_dirty(vi); // mark_inode_dirty(vi);
} }
...@@ -1719,7 +1720,7 @@ static int ntfs_commit_write(struct file *file, struct page *page, ...@@ -1719,7 +1720,7 @@ static int ntfs_commit_write(struct file *file, struct page *page,
/* /*
* Bring the out of bounds area(s) uptodate by copying data * Bring the out of bounds area(s) uptodate by copying data
* from the mft record to the page. * from the mft record to the page.
*/ */
if (from > 0) if (from > 0)
memcpy(kaddr, kattr, from); memcpy(kaddr, kattr, from);
if (to < bytes) if (to < bytes)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment