diff options
author | Alex Shi <alex.shi@linaro.org> | 2015-04-20 13:51:23 +0800 |
---|---|---|
committer | Alex Shi <alex.shi@linaro.org> | 2015-04-20 13:51:23 +0800 |
commit | d315de219a699e697bcde7e10c3bae58082552bb (patch) | |
tree | 41b0d2121844c73f70f05f353e5d8e961ef9bb1e /fs | |
parent | 142e6be5c40648bebe5267c6470966b6ba8f0e8b (diff) | |
parent | 663276faa26c2837eca83a5800b3668be19aaaff (diff) |
Merge branch 'linux-linaro-lsk-v3.14' into linux-linaro-lsk-v3.14-android
Diffstat (limited to 'fs')
-rw-r--r-- | fs/aio.c | 3 | ||||
-rw-r--r-- | fs/btrfs/tree-log.c | 16 | ||||
-rw-r--r-- | fs/cifs/file.c | 1 | ||||
-rw-r--r-- | fs/cifs/smb2ops.c | 3 | ||||
-rw-r--r-- | fs/ocfs2/file.c | 14 |
5 files changed, 20 insertions, 17 deletions
@@ -719,6 +719,9 @@ static struct kioctx *ioctx_alloc(unsigned nr_events) err_cleanup: aio_nr_sub(ctx->max_reqs); err_ctx: + atomic_set(&ctx->dead, 1); + if (ctx->mmap_size) + vm_munmap(ctx->mmap_base, ctx->mmap_size); aio_free_ring(ctx); err: mutex_unlock(&ctx->ring_lock); diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c index a7f32bfdd5e7..ec8b6542c8bd 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c @@ -1235,21 +1235,13 @@ out: } static int insert_orphan_item(struct btrfs_trans_handle *trans, - struct btrfs_root *root, u64 offset) + struct btrfs_root *root, u64 ino) { int ret; - struct btrfs_path *path; - - path = btrfs_alloc_path(); - if (!path) - return -ENOMEM; - ret = btrfs_find_item(root, path, BTRFS_ORPHAN_OBJECTID, - offset, BTRFS_ORPHAN_ITEM_KEY, NULL); - if (ret > 0) - ret = btrfs_insert_orphan_item(trans, root, offset); - - btrfs_free_path(path); + ret = btrfs_insert_orphan_item(trans, root, ino); + if (ret == -EEXIST) + ret = 0; return ret; } diff --git a/fs/cifs/file.c b/fs/cifs/file.c index 0218a9b23b38..40ddb6e93912 100644 --- a/fs/cifs/file.c +++ b/fs/cifs/file.c @@ -1821,6 +1821,7 @@ refind_writable: cifsFileInfo_put(inv_file); spin_lock(&cifs_file_list_lock); ++refind; + inv_file = NULL; goto refind_writable; } } diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c index 34a17d425be6..30f3eb5bc022 100644 --- a/fs/cifs/smb2ops.c +++ b/fs/cifs/smb2ops.c @@ -630,7 +630,8 @@ smb2_clone_range(const unsigned int xid, /* No need to change MaxChunks since already set to 1 */ chunk_sizes_updated = true; - } + } else + goto cchunk_out; } cchunk_out: diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c index 51632c40e896..7fe30f655aa5 100644 --- a/fs/ocfs2/file.c +++ b/fs/ocfs2/file.c @@ -2391,10 +2391,14 @@ out_dio: /* buffered aio wouldn't have proper lock coverage today */ BUG_ON(ret == -EIOCBQUEUED && !(file->f_flags & O_DIRECT)); + if (unlikely(written <= 0)) + goto no_sync; + if (((file->f_flags & O_DSYNC) && !direct_io) || IS_SYNC(inode) || ((file->f_flags & O_DIRECT) && !direct_io)) { - ret = filemap_fdatawrite_range(file->f_mapping, *ppos, - *ppos + count - 1); + ret = filemap_fdatawrite_range(file->f_mapping, + iocb->ki_pos - written, + iocb->ki_pos - 1); if (ret < 0) written = ret; @@ -2407,10 +2411,12 @@ out_dio: } if (!ret) - ret = filemap_fdatawait_range(file->f_mapping, *ppos, - *ppos + count - 1); + ret = filemap_fdatawait_range(file->f_mapping, + iocb->ki_pos - written, + iocb->ki_pos - 1); } +no_sync: /* * deep in g_f_a_w_n()->ocfs2_direct_IO we pass in a ocfs2_dio_end_io * function pointer which is called when o_direct io completes so that |