Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs updates from Al Viro: - more ->d_init() stuff (work.dcache) - pathname resolution cleanups (work.namei) - a few missing iov_iter primitives - copy_from_iter_full() and friends. Either copy the full requested amount, advance the iterator and return true, or fail, return false and do _not_ advance the iterator. Quite a few open-coded callers converted (and became more readable and harder to fuck up that way) (work.iov_iter) - several assorted patches, the big one being logfs removal * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: logfs: remove from tree vfs: fix put_compat_statfs64() does not handle errors namei: fold should_follow_link() with the step into not-followed link namei: pass both WALK_GET and WALK_MORE to should_follow_link() namei: invert WALK_PUT logics namei: shift interpretation of LOOKUP_FOLLOW inside should_follow_link() namei: saner calling conventions for mountpoint_last() namei.c: get rid of user_path_parent() switch getfrag callbacks to ..._full() primitives make skb_add_data,{_nocache}() and skb_copy_to_page_nocache() advance only on success [iov_iter] new primitives - copy_from_iter_full() and friends don't open-code file_inode() ceph: switch to use of ->d_init() ceph: unify dentry_operations instances lustre: switch to use of ->d_init()
This commit is contained in:
@@ -355,7 +355,6 @@ static ssize_t orangefs_devreq_write_iter(struct kiocb *iocb,
|
||||
__u64 tag;
|
||||
} head;
|
||||
int total = ret = iov_iter_count(iter);
|
||||
int n;
|
||||
int downcall_size = sizeof(struct orangefs_downcall_s);
|
||||
int head_size = sizeof(head);
|
||||
|
||||
@@ -372,8 +371,7 @@ static ssize_t orangefs_devreq_write_iter(struct kiocb *iocb,
|
||||
return -EFAULT;
|
||||
}
|
||||
|
||||
n = copy_from_iter(&head, head_size, iter);
|
||||
if (n < head_size) {
|
||||
if (!copy_from_iter_full(&head, head_size, iter)) {
|
||||
gossip_err("%s: failed to copy head.\n", __func__);
|
||||
return -EFAULT;
|
||||
}
|
||||
@@ -407,8 +405,7 @@ static ssize_t orangefs_devreq_write_iter(struct kiocb *iocb,
|
||||
return ret;
|
||||
}
|
||||
|
||||
n = copy_from_iter(&op->downcall, downcall_size, iter);
|
||||
if (n != downcall_size) {
|
||||
if (!copy_from_iter_full(&op->downcall, downcall_size, iter)) {
|
||||
gossip_err("%s: failed to copy downcall.\n", __func__);
|
||||
goto Efault;
|
||||
}
|
||||
@@ -462,10 +459,8 @@ static ssize_t orangefs_devreq_write_iter(struct kiocb *iocb,
|
||||
goto Enomem;
|
||||
}
|
||||
memset(op->downcall.trailer_buf, 0, op->downcall.trailer_size);
|
||||
n = copy_from_iter(op->downcall.trailer_buf,
|
||||
op->downcall.trailer_size,
|
||||
iter);
|
||||
if (n != op->downcall.trailer_size) {
|
||||
if (!copy_from_iter_full(op->downcall.trailer_buf,
|
||||
op->downcall.trailer_size, iter)) {
|
||||
gossip_err("%s: failed to copy trailer.\n", __func__);
|
||||
vfree(op->downcall.trailer_buf);
|
||||
goto Efault;
|
||||
|
@@ -724,7 +724,7 @@ static int orangefs_lock(struct file *filp, int cmd, struct file_lock *fl)
|
||||
{
|
||||
int rc = -EINVAL;
|
||||
|
||||
if (ORANGEFS_SB(filp->f_inode->i_sb)->flags & ORANGEFS_OPT_LOCAL_LOCK) {
|
||||
if (ORANGEFS_SB(file_inode(filp)->i_sb)->flags & ORANGEFS_OPT_LOCAL_LOCK) {
|
||||
if (cmd == F_GETLK) {
|
||||
rc = 0;
|
||||
posix_test_lock(filp, fl);
|
||||
|
@@ -434,6 +434,7 @@ static ssize_t orangefs_debug_write(struct file *file,
|
||||
char *debug_string;
|
||||
struct orangefs_kernel_op_s *new_op = NULL;
|
||||
struct client_debug_mask c_mask = { NULL, 0, 0 };
|
||||
char *s;
|
||||
|
||||
gossip_debug(GOSSIP_DEBUGFS_DEBUG,
|
||||
"orangefs_debug_write: %pD\n",
|
||||
@@ -521,8 +522,9 @@ static ssize_t orangefs_debug_write(struct file *file,
|
||||
}
|
||||
|
||||
mutex_lock(&orangefs_debug_lock);
|
||||
memset(file->f_inode->i_private, 0, ORANGEFS_MAX_DEBUG_STRING_LEN);
|
||||
sprintf((char *)file->f_inode->i_private, "%s\n", debug_string);
|
||||
s = file_inode(file)->i_private;
|
||||
memset(s, 0, ORANGEFS_MAX_DEBUG_STRING_LEN);
|
||||
sprintf(s, "%s\n", debug_string);
|
||||
mutex_unlock(&orangefs_debug_lock);
|
||||
|
||||
*ppos += count;
|
||||
|
Reference in New Issue
Block a user