projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[TIPC] Initial merge
[powerpc.git]
/
mm
/
filemap.c
diff --git
a/mm/filemap.c
b/mm/filemap.c
index
478f4c7
..
a965b6b
100644
(file)
--- a/
mm/filemap.c
+++ b/
mm/filemap.c
@@
-15,6
+15,7
@@
#include <linux/compiler.h>
#include <linux/fs.h>
#include <linux/aio.h>
#include <linux/compiler.h>
#include <linux/fs.h>
#include <linux/aio.h>
+#include <linux/capability.h>
#include <linux/kernel_stat.h>
#include <linux/mm.h>
#include <linux/swap.h>
#include <linux/kernel_stat.h>
#include <linux/mm.h>
#include <linux/swap.h>
@@
-61,7
+62,7
@@
generic_file_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov,
* ->swap_lock (exclusive_swap_page, others)
* ->mapping->tree_lock
*
* ->swap_lock (exclusive_swap_page, others)
* ->mapping->tree_lock
*
- * ->i_
sem
+ * ->i_
mutex
* ->i_mmap_lock (truncate->unmap_mapping_range)
*
* ->mmap_sem
* ->i_mmap_lock (truncate->unmap_mapping_range)
*
* ->mmap_sem
@@
-73,9
+74,9
@@
generic_file_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov,
* ->lock_page (access_process_vm)
*
* ->mmap_sem
* ->lock_page (access_process_vm)
*
* ->mmap_sem
- * ->i_
sem
(msync)
+ * ->i_
mutex
(msync)
*
*
- * ->i_
sem
+ * ->i_
mutex
* ->i_alloc_sem (various)
*
* ->inode_lock
* ->i_alloc_sem (various)
*
* ->inode_lock
@@
-276,7
+277,7
@@
static int wait_on_page_writeback_range(struct address_space *mapping,
* integrity" operation. It waits upon in-flight writeout before starting and
* waiting upon new writeout. If there was an IO error, return it.
*
* integrity" operation. It waits upon in-flight writeout before starting and
* waiting upon new writeout. If there was an IO error, return it.
*
- * We need to re-take i_
sem
during the generic_osync_inode list walk because
+ * We need to re-take i_
mutex
during the generic_osync_inode list walk because
* it is otherwise livelockable.
*/
int sync_page_range(struct inode *inode, struct address_space *mapping,
* it is otherwise livelockable.
*/
int sync_page_range(struct inode *inode, struct address_space *mapping,
@@
-290,9
+291,9
@@
int sync_page_range(struct inode *inode, struct address_space *mapping,
return 0;
ret = filemap_fdatawrite_range(mapping, pos, pos + count - 1);
if (ret == 0) {
return 0;
ret = filemap_fdatawrite_range(mapping, pos, pos + count - 1);
if (ret == 0) {
-
down(&inode->i_sem
);
+
mutex_lock(&inode->i_mutex
);
ret = generic_osync_inode(inode, mapping, OSYNC_METADATA);
ret = generic_osync_inode(inode, mapping, OSYNC_METADATA);
-
up(&inode->i_sem
);
+
mutex_unlock(&inode->i_mutex
);
}
if (ret == 0)
ret = wait_on_page_writeback_range(mapping, start, end);
}
if (ret == 0)
ret = wait_on_page_writeback_range(mapping, start, end);
@@
-301,7
+302,7
@@
int sync_page_range(struct inode *inode, struct address_space *mapping,
EXPORT_SYMBOL(sync_page_range);
/*
EXPORT_SYMBOL(sync_page_range);
/*
- * Note: Holding i_
sem
across sync_page_range_nolock is not a good idea
+ * Note: Holding i_
mutex
across sync_page_range_nolock is not a good idea
* as it forces O_SYNC writers to different parts of the same file
* to be serialised right until io completion.
*/
* as it forces O_SYNC writers to different parts of the same file
* to be serialised right until io completion.
*/
@@
-1892,7
+1893,7
@@
generic_file_direct_write(struct kiocb *iocb, const struct iovec *iov,
/*
* Sync the fs metadata but not the minor inode changes and
* of course not the data as we did direct DMA for the IO.
/*
* Sync the fs metadata but not the minor inode changes and
* of course not the data as we did direct DMA for the IO.
- * i_
sem
is held, which protects generic_osync_inode() from
+ * i_
mutex
is held, which protects generic_osync_inode() from
* livelocking.
*/
if (written >= 0 && ((file->f_flags & O_SYNC) || IS_SYNC(inode))) {
* livelocking.
*/
if (written >= 0 && ((file->f_flags & O_SYNC) || IS_SYNC(inode))) {
@@
-2108,7
+2109,7
@@
__generic_file_aio_write_nolock(struct kiocb *iocb, const struct iovec *iov,
if (err)
goto out;
if (err)
goto out;
-
inode_update_time(inode, 1
);
+
file_update_time(file
);
/* coalesce the iovecs and go direct-to-BIO for O_DIRECT */
if (unlikely(file->f_flags & O_DIRECT)) {
/* coalesce the iovecs and go direct-to-BIO for O_DIRECT */
if (unlikely(file->f_flags & O_DIRECT)) {
@@
-2195,10
+2196,10
@@
ssize_t generic_file_aio_write(struct kiocb *iocb, const char __user *buf,
BUG_ON(iocb->ki_pos != pos);
BUG_ON(iocb->ki_pos != pos);
-
down(&inode->i_sem
);
+
mutex_lock(&inode->i_mutex
);
ret = __generic_file_aio_write_nolock(iocb, &local_iov, 1,
&iocb->ki_pos);
ret = __generic_file_aio_write_nolock(iocb, &local_iov, 1,
&iocb->ki_pos);
-
up(&inode->i_sem
);
+
mutex_unlock(&inode->i_mutex
);
if (ret > 0 && ((file->f_flags & O_SYNC) || IS_SYNC(inode))) {
ssize_t err;
if (ret > 0 && ((file->f_flags & O_SYNC) || IS_SYNC(inode))) {
ssize_t err;
@@
-2220,9
+2221,9
@@
ssize_t generic_file_write(struct file *file, const char __user *buf,
struct iovec local_iov = { .iov_base = (void __user *)buf,
.iov_len = count };
struct iovec local_iov = { .iov_base = (void __user *)buf,
.iov_len = count };
-
down(&inode->i_sem
);
+
mutex_lock(&inode->i_mutex
);
ret = __generic_file_write_nolock(file, &local_iov, 1, ppos);
ret = __generic_file_write_nolock(file, &local_iov, 1, ppos);
-
up(&inode->i_sem
);
+
mutex_unlock(&inode->i_mutex
);
if (ret > 0 && ((file->f_flags & O_SYNC) || IS_SYNC(inode))) {
ssize_t err;
if (ret > 0 && ((file->f_flags & O_SYNC) || IS_SYNC(inode))) {
ssize_t err;
@@
-2256,9
+2257,9
@@
ssize_t generic_file_writev(struct file *file, const struct iovec *iov,
struct inode *inode = mapping->host;
ssize_t ret;
struct inode *inode = mapping->host;
ssize_t ret;
-
down(&inode->i_sem
);
+
mutex_lock(&inode->i_mutex
);
ret = __generic_file_write_nolock(file, iov, nr_segs, ppos);
ret = __generic_file_write_nolock(file, iov, nr_segs, ppos);
-
up(&inode->i_sem
);
+
mutex_unlock(&inode->i_mutex
);
if (ret > 0 && ((file->f_flags & O_SYNC) || IS_SYNC(inode))) {
int err;
if (ret > 0 && ((file->f_flags & O_SYNC) || IS_SYNC(inode))) {
int err;
@@
-2272,7
+2273,7
@@
ssize_t generic_file_writev(struct file *file, const struct iovec *iov,
EXPORT_SYMBOL(generic_file_writev);
/*
EXPORT_SYMBOL(generic_file_writev);
/*
- * Called under i_
sem
for writes to S_ISREG files. Returns -EIO if something
+ * Called under i_
mutex
for writes to S_ISREG files. Returns -EIO if something
* went wrong during pagecache shootdown.
*/
static ssize_t
* went wrong during pagecache shootdown.
*/
static ssize_t