Loading fs/aio.c +4 −0 Original line number Original line Diff line number Diff line Loading @@ -1324,6 +1324,8 @@ static ssize_t aio_rw_vect_retry(struct kiocb *iocb) if (iocb->ki_pos < 0) if (iocb->ki_pos < 0) return -EINVAL; return -EINVAL; if (opcode == IOCB_CMD_PWRITEV) file_start_write(file); do { do { ret = rw_op(iocb, &iocb->ki_iovec[iocb->ki_cur_seg], ret = rw_op(iocb, &iocb->ki_iovec[iocb->ki_cur_seg], iocb->ki_nr_segs - iocb->ki_cur_seg, iocb->ki_nr_segs - iocb->ki_cur_seg, Loading @@ -1336,6 +1338,8 @@ static ssize_t aio_rw_vect_retry(struct kiocb *iocb) } while (ret > 0 && iocb->ki_left > 0 && } while (ret > 0 && iocb->ki_left > 0 && (opcode == IOCB_CMD_PWRITEV || (opcode == IOCB_CMD_PWRITEV || (!S_ISFIFO(inode->i_mode) && !S_ISSOCK(inode->i_mode)))); (!S_ISFIFO(inode->i_mode) && !S_ISSOCK(inode->i_mode)))); if (opcode == IOCB_CMD_PWRITEV) file_end_write(file); /* This means we must have transferred all that we could */ /* This means we must have transferred all that we could */ /* No need to retry anymore */ /* No need to retry anymore */ Loading fs/btrfs/file.c +0 −3 Original line number Original line Diff line number Diff line Loading @@ -1514,8 +1514,6 @@ static ssize_t btrfs_file_aio_write(struct kiocb *iocb, size_t count, ocount; size_t count, ocount; bool sync = (file->f_flags & O_DSYNC) || IS_SYNC(file->f_mapping->host); bool sync = (file->f_flags & O_DSYNC) || IS_SYNC(file->f_mapping->host); sb_start_write(inode->i_sb); mutex_lock(&inode->i_mutex); mutex_lock(&inode->i_mutex); err = generic_segment_checks(iov, &nr_segs, &ocount, VERIFY_READ); err = generic_segment_checks(iov, &nr_segs, &ocount, VERIFY_READ); Loading Loading @@ -1617,7 +1615,6 @@ static ssize_t btrfs_file_aio_write(struct kiocb *iocb, if (sync) if (sync) atomic_dec(&BTRFS_I(inode)->sync_writers); atomic_dec(&BTRFS_I(inode)->sync_writers); out: out: sb_end_write(inode->i_sb); current->backing_dev_info = NULL; current->backing_dev_info = NULL; return num_written ? num_written : err; return num_written ? num_written : err; } } Loading fs/cifs/file.c +0 −3 Original line number Original line Diff line number Diff line Loading @@ -2520,8 +2520,6 @@ cifs_writev(struct kiocb *iocb, const struct iovec *iov, BUG_ON(iocb->ki_pos != pos); BUG_ON(iocb->ki_pos != pos); sb_start_write(inode->i_sb); /* /* * We need to hold the sem to be sure nobody modifies lock list * We need to hold the sem to be sure nobody modifies lock list * with a brlock that prevents writing. * with a brlock that prevents writing. Loading @@ -2545,7 +2543,6 @@ cifs_writev(struct kiocb *iocb, const struct iovec *iov, } } up_read(&cinode->lock_sem); up_read(&cinode->lock_sem); sb_end_write(inode->i_sb); return rc; return rc; } } Loading fs/compat.c +4 −2 Original line number Original line Diff line number Diff line Loading @@ -1103,10 +1103,12 @@ static ssize_t compat_do_readv_writev(int type, struct file *file, fnv = file->f_op->aio_write; fnv = file->f_op->aio_write; } } if (fnv) if (fnv) { file_start_write(file); ret = do_sync_readv_writev(file, iov, nr_segs, tot_len, ret = do_sync_readv_writev(file, iov, nr_segs, tot_len, pos, fnv); pos, fnv); else file_end_write(file); } else ret = do_loop_readv_writev(file, iov, nr_segs, pos, fn); ret = do_loop_readv_writev(file, iov, nr_segs, pos, fn); out: out: Loading fs/fuse/file.c +0 −2 Original line number Original line Diff line number Diff line Loading @@ -971,7 +971,6 @@ static ssize_t fuse_file_aio_write(struct kiocb *iocb, const struct iovec *iov, return err; return err; count = ocount; count = ocount; sb_start_write(inode->i_sb); mutex_lock(&inode->i_mutex); mutex_lock(&inode->i_mutex); /* We can write back this queue in page reclaim */ /* We can write back this queue in page reclaim */ Loading Loading @@ -1030,7 +1029,6 @@ static ssize_t fuse_file_aio_write(struct kiocb *iocb, const struct iovec *iov, out: out: current->backing_dev_info = NULL; current->backing_dev_info = NULL; mutex_unlock(&inode->i_mutex); mutex_unlock(&inode->i_mutex); sb_end_write(inode->i_sb); return written ? written : err; return written ? written : err; } } Loading Loading
fs/aio.c +4 −0 Original line number Original line Diff line number Diff line Loading @@ -1324,6 +1324,8 @@ static ssize_t aio_rw_vect_retry(struct kiocb *iocb) if (iocb->ki_pos < 0) if (iocb->ki_pos < 0) return -EINVAL; return -EINVAL; if (opcode == IOCB_CMD_PWRITEV) file_start_write(file); do { do { ret = rw_op(iocb, &iocb->ki_iovec[iocb->ki_cur_seg], ret = rw_op(iocb, &iocb->ki_iovec[iocb->ki_cur_seg], iocb->ki_nr_segs - iocb->ki_cur_seg, iocb->ki_nr_segs - iocb->ki_cur_seg, Loading @@ -1336,6 +1338,8 @@ static ssize_t aio_rw_vect_retry(struct kiocb *iocb) } while (ret > 0 && iocb->ki_left > 0 && } while (ret > 0 && iocb->ki_left > 0 && (opcode == IOCB_CMD_PWRITEV || (opcode == IOCB_CMD_PWRITEV || (!S_ISFIFO(inode->i_mode) && !S_ISSOCK(inode->i_mode)))); (!S_ISFIFO(inode->i_mode) && !S_ISSOCK(inode->i_mode)))); if (opcode == IOCB_CMD_PWRITEV) file_end_write(file); /* This means we must have transferred all that we could */ /* This means we must have transferred all that we could */ /* No need to retry anymore */ /* No need to retry anymore */ Loading
fs/btrfs/file.c +0 −3 Original line number Original line Diff line number Diff line Loading @@ -1514,8 +1514,6 @@ static ssize_t btrfs_file_aio_write(struct kiocb *iocb, size_t count, ocount; size_t count, ocount; bool sync = (file->f_flags & O_DSYNC) || IS_SYNC(file->f_mapping->host); bool sync = (file->f_flags & O_DSYNC) || IS_SYNC(file->f_mapping->host); sb_start_write(inode->i_sb); mutex_lock(&inode->i_mutex); mutex_lock(&inode->i_mutex); err = generic_segment_checks(iov, &nr_segs, &ocount, VERIFY_READ); err = generic_segment_checks(iov, &nr_segs, &ocount, VERIFY_READ); Loading Loading @@ -1617,7 +1615,6 @@ static ssize_t btrfs_file_aio_write(struct kiocb *iocb, if (sync) if (sync) atomic_dec(&BTRFS_I(inode)->sync_writers); atomic_dec(&BTRFS_I(inode)->sync_writers); out: out: sb_end_write(inode->i_sb); current->backing_dev_info = NULL; current->backing_dev_info = NULL; return num_written ? num_written : err; return num_written ? num_written : err; } } Loading
fs/cifs/file.c +0 −3 Original line number Original line Diff line number Diff line Loading @@ -2520,8 +2520,6 @@ cifs_writev(struct kiocb *iocb, const struct iovec *iov, BUG_ON(iocb->ki_pos != pos); BUG_ON(iocb->ki_pos != pos); sb_start_write(inode->i_sb); /* /* * We need to hold the sem to be sure nobody modifies lock list * We need to hold the sem to be sure nobody modifies lock list * with a brlock that prevents writing. * with a brlock that prevents writing. Loading @@ -2545,7 +2543,6 @@ cifs_writev(struct kiocb *iocb, const struct iovec *iov, } } up_read(&cinode->lock_sem); up_read(&cinode->lock_sem); sb_end_write(inode->i_sb); return rc; return rc; } } Loading
fs/compat.c +4 −2 Original line number Original line Diff line number Diff line Loading @@ -1103,10 +1103,12 @@ static ssize_t compat_do_readv_writev(int type, struct file *file, fnv = file->f_op->aio_write; fnv = file->f_op->aio_write; } } if (fnv) if (fnv) { file_start_write(file); ret = do_sync_readv_writev(file, iov, nr_segs, tot_len, ret = do_sync_readv_writev(file, iov, nr_segs, tot_len, pos, fnv); pos, fnv); else file_end_write(file); } else ret = do_loop_readv_writev(file, iov, nr_segs, pos, fn); ret = do_loop_readv_writev(file, iov, nr_segs, pos, fn); out: out: Loading
fs/fuse/file.c +0 −2 Original line number Original line Diff line number Diff line Loading @@ -971,7 +971,6 @@ static ssize_t fuse_file_aio_write(struct kiocb *iocb, const struct iovec *iov, return err; return err; count = ocount; count = ocount; sb_start_write(inode->i_sb); mutex_lock(&inode->i_mutex); mutex_lock(&inode->i_mutex); /* We can write back this queue in page reclaim */ /* We can write back this queue in page reclaim */ Loading Loading @@ -1030,7 +1029,6 @@ static ssize_t fuse_file_aio_write(struct kiocb *iocb, const struct iovec *iov, out: out: current->backing_dev_info = NULL; current->backing_dev_info = NULL; mutex_unlock(&inode->i_mutex); mutex_unlock(&inode->i_mutex); sb_end_write(inode->i_sb); return written ? written : err; return written ? written : err; } } Loading