Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ocfs2_file_write_iter: stop messing with ppos

it's &iocb->ki_pos; no need to obfuscate.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Al Viro 5dc3161c dfea9345

+12 -12
+12 -12
fs/ocfs2/file.c
··· 2264 2264 int can_do_direct, has_refcount = 0; 2265 2265 ssize_t written = 0; 2266 2266 size_t count = iov_iter_count(from); 2267 - loff_t old_size, *ppos = &iocb->ki_pos; 2267 + loff_t old_size; 2268 2268 u32 old_clusters; 2269 2269 struct file *file = iocb->ki_filp; 2270 2270 struct inode *inode = file_inode(file); ··· 2330 2330 } 2331 2331 2332 2332 can_do_direct = direct_io; 2333 - ret = ocfs2_prepare_inode_for_write(file, ppos, count, appending, 2333 + ret = ocfs2_prepare_inode_for_write(file, &iocb->ki_pos, count, appending, 2334 2334 &can_do_direct, &has_refcount); 2335 2335 if (ret < 0) { 2336 2336 mlog_errno(ret); ··· 2338 2338 } 2339 2339 2340 2340 if (direct_io && !is_sync_kiocb(iocb)) 2341 - unaligned_dio = ocfs2_is_io_unaligned(inode, count, *ppos); 2341 + unaligned_dio = ocfs2_is_io_unaligned(inode, count, iocb->ki_pos); 2342 2342 2343 2343 /* 2344 2344 * We can't complete the direct I/O as requested, fall back to ··· 2374 2374 /* communicate with ocfs2_dio_end_io */ 2375 2375 ocfs2_iocb_set_rw_locked(iocb, rw_level); 2376 2376 2377 - ret = generic_write_checks(file, ppos, &count); 2377 + ret = generic_write_checks(file, &iocb->ki_pos, &count); 2378 2378 if (ret) 2379 2379 goto out_dio; 2380 2380 ··· 2382 2382 if (direct_io) { 2383 2383 loff_t endbyte; 2384 2384 ssize_t written_buffered; 2385 - written = generic_file_direct_write(iocb, from, *ppos); 2385 + written = generic_file_direct_write(iocb, from, iocb->ki_pos); 2386 2386 if (written < 0 || written == count) { 2387 2387 ret = written; 2388 2388 goto out_dio; ··· 2392 2392 * for completing the rest of the request. 2393 2393 */ 2394 2394 count -= written; 2395 - written_buffered = generic_perform_write(file, from, *ppos); 2395 + written_buffered = generic_perform_write(file, from, iocb->ki_pos); 2396 2396 /* 2397 2397 * If generic_file_buffered_write() returned a synchronous error 2398 2398 * then we want to return the number of bytes which were ··· 2409 2409 * disk and invalidated to preserve the expected O_DIRECT 2410 2410 * semantics. 2411 2411 */ 2412 - endbyte = *ppos + written_buffered - 1; 2413 - ret = filemap_write_and_wait_range(file->f_mapping, *ppos, 2412 + endbyte = iocb->ki_pos + written_buffered - 1; 2413 + ret = filemap_write_and_wait_range(file->f_mapping, iocb->ki_pos, 2414 2414 endbyte); 2415 2415 if (ret == 0) { 2416 - iocb->ki_pos = *ppos + written_buffered; 2416 + iocb->ki_pos += written_buffered; 2417 2417 written += written_buffered; 2418 2418 invalidate_mapping_pages(mapping, 2419 - *ppos >> PAGE_CACHE_SHIFT, 2419 + iocb->ki_pos >> PAGE_CACHE_SHIFT, 2420 2420 endbyte >> PAGE_CACHE_SHIFT); 2421 2421 } else { 2422 2422 /* ··· 2426 2426 } 2427 2427 } else { 2428 2428 current->backing_dev_info = inode_to_bdi(inode); 2429 - written = generic_perform_write(file, from, *ppos); 2429 + written = generic_perform_write(file, from, iocb->ki_pos); 2430 2430 if (likely(written >= 0)) 2431 - iocb->ki_pos = *ppos + written; 2431 + iocb->ki_pos = iocb->ki_pos + written; 2432 2432 current->backing_dev_info = NULL; 2433 2433 } 2434 2434