read_write.c (eb5bc2a213f96bd43b5f00a625acb0c669613645) | read_write.c (66ee59af630fd8d5f4f56fb28162857e629aa0ab) |
---|---|
1/* 2 * linux/fs/read_write.c 3 * 4 * Copyright (C) 1991, 1992 Linus Torvalds 5 */ 6 7#include <linux/slab.h> 8#include <linux/stat.h> --- 329 unchanged lines hidden (view full) --- 338 struct kiocb kiocb; 339 ssize_t ret; 340 341 if (!file->f_op->read_iter) 342 return -EINVAL; 343 344 init_sync_kiocb(&kiocb, file); 345 kiocb.ki_pos = *ppos; | 1/* 2 * linux/fs/read_write.c 3 * 4 * Copyright (C) 1991, 1992 Linus Torvalds 5 */ 6 7#include <linux/slab.h> 8#include <linux/stat.h> --- 329 unchanged lines hidden (view full) --- 338 struct kiocb kiocb; 339 ssize_t ret; 340 341 if (!file->f_op->read_iter) 342 return -EINVAL; 343 344 init_sync_kiocb(&kiocb, file); 345 kiocb.ki_pos = *ppos; |
346 kiocb.ki_nbytes = iov_iter_count(iter); | |
347 348 iter->type |= READ; 349 ret = file->f_op->read_iter(&kiocb, iter); 350 if (ret == -EIOCBQUEUED) 351 ret = wait_on_sync_kiocb(&kiocb); 352 353 if (ret > 0) 354 *ppos = kiocb.ki_pos; --- 6 unchanged lines hidden (view full) --- 361 struct kiocb kiocb; 362 ssize_t ret; 363 364 if (!file->f_op->write_iter) 365 return -EINVAL; 366 367 init_sync_kiocb(&kiocb, file); 368 kiocb.ki_pos = *ppos; | 346 347 iter->type |= READ; 348 ret = file->f_op->read_iter(&kiocb, iter); 349 if (ret == -EIOCBQUEUED) 350 ret = wait_on_sync_kiocb(&kiocb); 351 352 if (ret > 0) 353 *ppos = kiocb.ki_pos; --- 6 unchanged lines hidden (view full) --- 360 struct kiocb kiocb; 361 ssize_t ret; 362 363 if (!file->f_op->write_iter) 364 return -EINVAL; 365 366 init_sync_kiocb(&kiocb, file); 367 kiocb.ki_pos = *ppos; |
369 kiocb.ki_nbytes = iov_iter_count(iter); | |
370 371 iter->type |= WRITE; 372 ret = file->f_op->write_iter(&kiocb, iter); 373 if (ret == -EIOCBQUEUED) 374 ret = wait_on_sync_kiocb(&kiocb); 375 376 if (ret > 0) 377 *ppos = kiocb.ki_pos; --- 43 unchanged lines hidden (view full) --- 421ssize_t do_sync_read(struct file *filp, char __user *buf, size_t len, loff_t *ppos) 422{ 423 struct iovec iov = { .iov_base = buf, .iov_len = len }; 424 struct kiocb kiocb; 425 ssize_t ret; 426 427 init_sync_kiocb(&kiocb, filp); 428 kiocb.ki_pos = *ppos; | 368 369 iter->type |= WRITE; 370 ret = file->f_op->write_iter(&kiocb, iter); 371 if (ret == -EIOCBQUEUED) 372 ret = wait_on_sync_kiocb(&kiocb); 373 374 if (ret > 0) 375 *ppos = kiocb.ki_pos; --- 43 unchanged lines hidden (view full) --- 419ssize_t do_sync_read(struct file *filp, char __user *buf, size_t len, loff_t *ppos) 420{ 421 struct iovec iov = { .iov_base = buf, .iov_len = len }; 422 struct kiocb kiocb; 423 ssize_t ret; 424 425 init_sync_kiocb(&kiocb, filp); 426 kiocb.ki_pos = *ppos; |
429 kiocb.ki_nbytes = len; | |
430 431 ret = filp->f_op->aio_read(&kiocb, &iov, 1, kiocb.ki_pos); 432 if (-EIOCBQUEUED == ret) 433 ret = wait_on_sync_kiocb(&kiocb); 434 *ppos = kiocb.ki_pos; 435 return ret; 436} 437 438EXPORT_SYMBOL(do_sync_read); 439 440ssize_t new_sync_read(struct file *filp, char __user *buf, size_t len, loff_t *ppos) 441{ 442 struct iovec iov = { .iov_base = buf, .iov_len = len }; 443 struct kiocb kiocb; 444 struct iov_iter iter; 445 ssize_t ret; 446 447 init_sync_kiocb(&kiocb, filp); 448 kiocb.ki_pos = *ppos; | 427 428 ret = filp->f_op->aio_read(&kiocb, &iov, 1, kiocb.ki_pos); 429 if (-EIOCBQUEUED == ret) 430 ret = wait_on_sync_kiocb(&kiocb); 431 *ppos = kiocb.ki_pos; 432 return ret; 433} 434 435EXPORT_SYMBOL(do_sync_read); 436 437ssize_t new_sync_read(struct file *filp, char __user *buf, size_t len, loff_t *ppos) 438{ 439 struct iovec iov = { .iov_base = buf, .iov_len = len }; 440 struct kiocb kiocb; 441 struct iov_iter iter; 442 ssize_t ret; 443 444 init_sync_kiocb(&kiocb, filp); 445 kiocb.ki_pos = *ppos; |
449 kiocb.ki_nbytes = len; | |
450 iov_iter_init(&iter, READ, &iov, 1, len); 451 452 ret = filp->f_op->read_iter(&kiocb, &iter); 453 if (-EIOCBQUEUED == ret) 454 ret = wait_on_sync_kiocb(&kiocb); 455 *ppos = kiocb.ki_pos; 456 return ret; 457} --- 47 unchanged lines hidden (view full) --- 505ssize_t do_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos) 506{ 507 struct iovec iov = { .iov_base = (void __user *)buf, .iov_len = len }; 508 struct kiocb kiocb; 509 ssize_t ret; 510 511 init_sync_kiocb(&kiocb, filp); 512 kiocb.ki_pos = *ppos; | 446 iov_iter_init(&iter, READ, &iov, 1, len); 447 448 ret = filp->f_op->read_iter(&kiocb, &iter); 449 if (-EIOCBQUEUED == ret) 450 ret = wait_on_sync_kiocb(&kiocb); 451 *ppos = kiocb.ki_pos; 452 return ret; 453} --- 47 unchanged lines hidden (view full) --- 501ssize_t do_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos) 502{ 503 struct iovec iov = { .iov_base = (void __user *)buf, .iov_len = len }; 504 struct kiocb kiocb; 505 ssize_t ret; 506 507 init_sync_kiocb(&kiocb, filp); 508 kiocb.ki_pos = *ppos; |
513 kiocb.ki_nbytes = len; | |
514 515 ret = filp->f_op->aio_write(&kiocb, &iov, 1, kiocb.ki_pos); 516 if (-EIOCBQUEUED == ret) 517 ret = wait_on_sync_kiocb(&kiocb); 518 *ppos = kiocb.ki_pos; 519 return ret; 520} 521 522EXPORT_SYMBOL(do_sync_write); 523 524ssize_t new_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos) 525{ 526 struct iovec iov = { .iov_base = (void __user *)buf, .iov_len = len }; 527 struct kiocb kiocb; 528 struct iov_iter iter; 529 ssize_t ret; 530 531 init_sync_kiocb(&kiocb, filp); 532 kiocb.ki_pos = *ppos; | 509 510 ret = filp->f_op->aio_write(&kiocb, &iov, 1, kiocb.ki_pos); 511 if (-EIOCBQUEUED == ret) 512 ret = wait_on_sync_kiocb(&kiocb); 513 *ppos = kiocb.ki_pos; 514 return ret; 515} 516 517EXPORT_SYMBOL(do_sync_write); 518 519ssize_t new_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos) 520{ 521 struct iovec iov = { .iov_base = (void __user *)buf, .iov_len = len }; 522 struct kiocb kiocb; 523 struct iov_iter iter; 524 ssize_t ret; 525 526 init_sync_kiocb(&kiocb, filp); 527 kiocb.ki_pos = *ppos; |
533 kiocb.ki_nbytes = len; | |
534 iov_iter_init(&iter, WRITE, &iov, 1, len); 535 536 ret = filp->f_op->write_iter(&kiocb, &iter); 537 if (-EIOCBQUEUED == ret) 538 ret = wait_on_sync_kiocb(&kiocb); 539 *ppos = kiocb.ki_pos; 540 return ret; 541} --- 172 unchanged lines hidden (view full) --- 714 unsigned long nr_segs, size_t len, loff_t *ppos, iter_fn_t fn) 715{ 716 struct kiocb kiocb; 717 struct iov_iter iter; 718 ssize_t ret; 719 720 init_sync_kiocb(&kiocb, filp); 721 kiocb.ki_pos = *ppos; | 528 iov_iter_init(&iter, WRITE, &iov, 1, len); 529 530 ret = filp->f_op->write_iter(&kiocb, &iter); 531 if (-EIOCBQUEUED == ret) 532 ret = wait_on_sync_kiocb(&kiocb); 533 *ppos = kiocb.ki_pos; 534 return ret; 535} --- 172 unchanged lines hidden (view full) --- 708 unsigned long nr_segs, size_t len, loff_t *ppos, iter_fn_t fn) 709{ 710 struct kiocb kiocb; 711 struct iov_iter iter; 712 ssize_t ret; 713 714 init_sync_kiocb(&kiocb, filp); 715 kiocb.ki_pos = *ppos; |
722 kiocb.ki_nbytes = len; | |
723 724 iov_iter_init(&iter, rw, iov, nr_segs, len); 725 ret = fn(&kiocb, &iter); 726 if (ret == -EIOCBQUEUED) 727 ret = wait_on_sync_kiocb(&kiocb); 728 *ppos = kiocb.ki_pos; 729 return ret; 730} 731 732static ssize_t do_sync_readv_writev(struct file *filp, const struct iovec *iov, 733 unsigned long nr_segs, size_t len, loff_t *ppos, iov_fn_t fn) 734{ 735 struct kiocb kiocb; 736 ssize_t ret; 737 738 init_sync_kiocb(&kiocb, filp); 739 kiocb.ki_pos = *ppos; | 716 717 iov_iter_init(&iter, rw, iov, nr_segs, len); 718 ret = fn(&kiocb, &iter); 719 if (ret == -EIOCBQUEUED) 720 ret = wait_on_sync_kiocb(&kiocb); 721 *ppos = kiocb.ki_pos; 722 return ret; 723} 724 725static ssize_t do_sync_readv_writev(struct file *filp, const struct iovec *iov, 726 unsigned long nr_segs, size_t len, loff_t *ppos, iov_fn_t fn) 727{ 728 struct kiocb kiocb; 729 ssize_t ret; 730 731 init_sync_kiocb(&kiocb, filp); 732 kiocb.ki_pos = *ppos; |
740 kiocb.ki_nbytes = len; | |
741 742 ret = fn(&kiocb, iov, nr_segs, kiocb.ki_pos); 743 if (ret == -EIOCBQUEUED) 744 ret = wait_on_sync_kiocb(&kiocb); 745 *ppos = kiocb.ki_pos; 746 return ret; 747} 748 --- 678 unchanged lines hidden --- | 733 734 ret = fn(&kiocb, iov, nr_segs, kiocb.ki_pos); 735 if (ret == -EIOCBQUEUED) 736 ret = wait_on_sync_kiocb(&kiocb); 737 *ppos = kiocb.ki_pos; 738 return ret; 739} 740 --- 678 unchanged lines hidden --- |