Searched refs:iocb (Results 1 - 108 of 108) sorted by relevance

/linux-4.1.27/fs/ocfs2/
H A Daops.h63 #define ocfs2_iocb_is_rw_locked(iocb) \
64 test_bit(0, (unsigned long *)&iocb->private) ocfs2_iocb_set_rw_locked()
65 static inline void ocfs2_iocb_set_rw_locked(struct kiocb *iocb, int level) ocfs2_iocb_set_rw_locked() argument
67 set_bit(0, (unsigned long *)&iocb->private); ocfs2_iocb_set_rw_locked()
69 set_bit(1, (unsigned long *)&iocb->private); ocfs2_iocb_set_rw_locked()
71 clear_bit(1, (unsigned long *)&iocb->private); ocfs2_iocb_set_rw_locked()
76 * iocb->private, which is going to be used for communication between
87 #define ocfs2_iocb_clear_rw_locked(iocb) \
88 clear_bit(OCFS2_IOCB_RW_LOCK, (unsigned long *)&iocb->private)
89 #define ocfs2_iocb_rw_locked_level(iocb) \
90 test_bit(OCFS2_IOCB_RW_LOCK_LEVEL, (unsigned long *)&iocb->private)
91 #define ocfs2_iocb_set_sem_locked(iocb) \
92 set_bit(OCFS2_IOCB_SEM, (unsigned long *)&iocb->private)
93 #define ocfs2_iocb_clear_sem_locked(iocb) \
94 clear_bit(OCFS2_IOCB_SEM, (unsigned long *)&iocb->private)
95 #define ocfs2_iocb_is_sem_locked(iocb) \
96 test_bit(OCFS2_IOCB_SEM, (unsigned long *)&iocb->private)
98 #define ocfs2_iocb_set_unaligned_aio(iocb) \
99 set_bit(OCFS2_IOCB_UNALIGNED_IO, (unsigned long *)&iocb->private)
100 #define ocfs2_iocb_clear_unaligned_aio(iocb) \
101 clear_bit(OCFS2_IOCB_UNALIGNED_IO, (unsigned long *)&iocb->private)
102 #define ocfs2_iocb_is_unaligned_aio(iocb) \
103 test_bit(OCFS2_IOCB_UNALIGNED_IO, (unsigned long *)&iocb->private)
H A Dfile.c2250 static ssize_t ocfs2_file_write_iter(struct kiocb *iocb, ocfs2_file_write_iter() argument
2260 struct file *file = iocb->ki_filp; ocfs2_file_write_iter()
2277 appending = iocb->ki_flags & IOCB_APPEND ? 1 : 0; ocfs2_file_write_iter()
2278 direct_io = iocb->ki_flags & IOCB_DIRECT ? 1 : 0; ocfs2_file_write_iter()
2282 ocfs2_iocb_clear_sem_locked(iocb); ocfs2_file_write_iter()
2289 ocfs2_iocb_set_sem_locked(iocb); ocfs2_file_write_iter()
2324 ret = generic_write_checks(iocb, from); ocfs2_file_write_iter()
2333 ret = ocfs2_prepare_inode_for_write(file, iocb->ki_pos, count, appending, ocfs2_file_write_iter()
2340 if (direct_io && !is_sync_kiocb(iocb)) ocfs2_file_write_iter()
2341 unaligned_dio = ocfs2_is_io_unaligned(inode, count, iocb->ki_pos); ocfs2_file_write_iter()
2354 iocb->ki_flags &= ~IOCB_DIRECT; ocfs2_file_write_iter()
2366 /* Mark the iocb as needing an unlock in ocfs2_dio_end_io */ ocfs2_file_write_iter()
2367 ocfs2_iocb_set_unaligned_aio(iocb); ocfs2_file_write_iter()
2378 ocfs2_iocb_set_rw_locked(iocb, rw_level); ocfs2_file_write_iter()
2380 written = __generic_file_write_iter(iocb, from); ocfs2_file_write_iter()
2382 BUG_ON(written == -EIOCBQUEUED && !(iocb->ki_flags & IOCB_DIRECT)); ocfs2_file_write_iter()
2390 iocb->ki_pos - written, ocfs2_file_write_iter()
2391 iocb->ki_pos - 1); ocfs2_file_write_iter()
2403 iocb->ki_pos - written, ocfs2_file_write_iter()
2404 iocb->ki_pos - 1); ocfs2_file_write_iter()
2417 if ((ret == -EIOCBQUEUED) || (!ocfs2_iocb_is_rw_locked(iocb))) { ocfs2_file_write_iter()
2424 ocfs2_iocb_clear_unaligned_aio(iocb); ocfs2_file_write_iter()
2434 ocfs2_iocb_clear_sem_locked(iocb); ocfs2_file_write_iter()
2473 static ssize_t ocfs2_file_read_iter(struct kiocb *iocb, ocfs2_file_read_iter() argument
2477 struct file *filp = iocb->ki_filp; ocfs2_file_read_iter()
2493 ocfs2_iocb_clear_sem_locked(iocb); ocfs2_file_read_iter()
2499 if (iocb->ki_flags & IOCB_DIRECT) { ocfs2_file_read_iter()
2501 ocfs2_iocb_set_sem_locked(iocb); ocfs2_file_read_iter()
2510 ocfs2_iocb_set_rw_locked(iocb, rw_level); ocfs2_file_read_iter()
2529 ret = generic_file_read_iter(iocb, to); ocfs2_file_read_iter()
2533 BUG_ON(ret == -EIOCBQUEUED && !(iocb->ki_flags & IOCB_DIRECT)); ocfs2_file_read_iter()
2536 if (ret == -EIOCBQUEUED || !ocfs2_iocb_is_rw_locked(iocb)) { ocfs2_file_read_iter()
2543 ocfs2_iocb_clear_sem_locked(iocb); ocfs2_file_read_iter()
H A Daops.c611 static void ocfs2_dio_end_io(struct kiocb *iocb, ocfs2_dio_end_io() argument
616 struct inode *inode = file_inode(iocb->ki_filp); ocfs2_dio_end_io()
620 BUG_ON(!ocfs2_iocb_is_rw_locked(iocb)); ocfs2_dio_end_io()
622 if (ocfs2_iocb_is_sem_locked(iocb)) ocfs2_dio_end_io()
623 ocfs2_iocb_clear_sem_locked(iocb); ocfs2_dio_end_io()
625 if (ocfs2_iocb_is_unaligned_aio(iocb)) { ocfs2_dio_end_io()
626 ocfs2_iocb_clear_unaligned_aio(iocb); ocfs2_dio_end_io()
631 ocfs2_iocb_clear_rw_locked(iocb); ocfs2_dio_end_io()
633 level = ocfs2_iocb_rw_locked_level(iocb); ocfs2_dio_end_io()
778 static ssize_t ocfs2_direct_IO_write(struct kiocb *iocb, ocfs2_direct_IO_write() argument
786 struct file *file = iocb->ki_filp; ocfs2_direct_IO_write()
858 written = __blockdev_direct_IO(iocb, inode, inode->i_sb->s_bdev, iter, ocfs2_direct_IO_write()
948 static ssize_t ocfs2_direct_IO(struct kiocb *iocb, struct iov_iter *iter, ocfs2_direct_IO() argument
951 struct file *file = iocb->ki_filp; ocfs2_direct_IO()
971 return __blockdev_direct_IO(iocb, inode, inode->i_sb->s_bdev, ocfs2_direct_IO()
976 return ocfs2_direct_IO_write(iocb, iter, offset); ocfs2_direct_IO()
/linux-4.1.27/include/linux/
H A Daio.h18 struct iocb __user *__user *iocbpp, bool compat);
23 struct iocb __user * __user *iocbpp, do_io_submit()
H A Derrno.h30 #define EIOCBQUEUED 529 /* iocb queued, will get completion event */
H A Dnfs_fs.h451 extern ssize_t nfs_file_direct_read(struct kiocb *iocb,
454 extern ssize_t nfs_file_direct_write(struct kiocb *iocb,
H A Dsocket.h54 struct kiocb *msg_iocb; /* ptr to iocb for async requests */
H A Dsyscalls.h17 struct iocb;
507 struct iocb __user * __user *);
508 asmlinkage long sys_io_cancel(aio_context_t ctx_id, struct iocb __user *iocb,
H A Dfs.h71 typedef void (dio_iodone_t)(struct kiocb *iocb, loff_t offset,
325 void (*ki_complete)(struct kiocb *iocb, long ret, long ret2);
2602 extern ssize_t blkdev_read_iter(struct kiocb *iocb, struct iov_iter *to);
2603 extern ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from);
2664 ssize_t __blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
2670 static inline ssize_t blockdev_direct_IO(struct kiocb *iocb, blockdev_direct_IO() argument
2675 return __blockdev_direct_IO(iocb, inode, inode->i_sb->s_bdev, iter, blockdev_direct_IO()
H A Dcompat.h513 u32 __user *iocb);
/linux-4.1.27/fs/ncpfs/
H A Dfile.c101 ncp_file_read_iter(struct kiocb *iocb, struct iov_iter *to) ncp_file_read_iter() argument
103 struct file *file = iocb->ki_filp; ncp_file_read_iter()
106 off_t pos = iocb->ki_pos; ncp_file_read_iter()
157 iocb->ki_pos = pos; ncp_file_read_iter()
168 ncp_file_write_iter(struct kiocb *iocb, struct iov_iter *from) ncp_file_write_iter() argument
170 struct file *file = iocb->ki_filp; ncp_file_write_iter()
179 errno = generic_write_checks(iocb, from); ncp_file_write_iter()
199 pos = iocb->ki_pos; ncp_file_write_iter()
224 iocb->ki_pos = pos; ncp_file_write_iter()
/linux-4.1.27/include/uapi/linux/
H A Daio_abi.h50 * Valid flags for the "aio_flags" member of the "struct iocb".
52 * IOCB_FLAG_RESFD - Set if the "aio_resfd" member of the "struct iocb"
59 __u64 data; /* the data field from the iocb */
60 __u64 obj; /* what iocb this event came from */
79 struct iocb { struct
97 /* flags for the "struct iocb" */
/linux-4.1.27/tools/usb/ffs-aio-example/multibuff/device_app/
H A Daio_multibuff.c144 struct iocb **iocb; member in struct:io_buffer
212 iobuf->iocb = malloc(n*sizeof(*iobuf->iocb)); init_bufs()
218 iobuf->iocb[i] = malloc(sizeof(**iobuf->iocb)); init_bufs()
228 free(iobuf->iocb[i]); delete_bufs()
231 free(iobuf->iocb); delete_bufs()
332 io_prep_pwrite(iobuf[i].iocb[j], ep1, main()
336 iobuf[i].iocb[j]->u.c.flags |= IOCB_FLAG_RESFD; main()
337 iobuf[i].iocb[j]->u.c.resfd = evfd; main()
340 ret = io_submit(ctx, iobuf[i].cnt, iobuf[i].iocb); main()
365 /* if all req's from iocb completed */ main()
/linux-4.1.27/fs/
H A Daio.c178 struct iocb __user *ki_user_iocb; /* user's aiocb */
185 * If the aio_resfd field of the userspace iocb is not zero,
524 void kiocb_set_cancel_fn(struct kiocb *iocb, kiocb_cancel_fn *cancel) kiocb_set_cancel_fn() argument
526 struct aio_kiocb *req = container_of(iocb, struct aio_kiocb, common); kiocb_set_cancel_fn()
1048 * Called when the io request on the given iocb is complete.
1052 struct aio_kiocb *iocb = container_of(kiocb, struct aio_kiocb, common); aio_complete() local
1053 struct kioctx *ctx = iocb->ki_ctx; aio_complete()
1061 * - events go directly into the iocb for fast handling aio_complete()
1062 * - the sync task with the iocb in its stack holds the single iocb aio_complete()
1064 * - the sync task helpfully left a reference to itself in the iocb aio_complete()
1068 if (iocb->ki_list.next) { aio_complete()
1072 list_del(&iocb->ki_list); aio_complete()
1092 event->obj = (u64)(unsigned long)iocb->ki_user_iocb; aio_complete()
1093 event->data = iocb->ki_user_data; aio_complete()
1101 ctx, tail, iocb, iocb->ki_user_iocb, iocb->ki_user_data, aio_complete()
1122 pr_debug("added to ring %p at [%u]\n", iocb, tail); aio_complete()
1129 if (iocb->ki_eventfd != NULL) aio_complete()
1130 eventfd_signal(iocb->ki_eventfd, 1); aio_complete()
1133 kiocb_free(iocb); aio_complete()
1487 static int io_submit_one(struct kioctx *ctx, struct iocb __user *user_iocb, io_submit_one() argument
1488 struct iocb *iocb, bool compat) io_submit_one()
1494 if (unlikely(iocb->aio_reserved1 || iocb->aio_reserved2)) { io_submit_one()
1501 (iocb->aio_buf != (unsigned long)iocb->aio_buf) || io_submit_one()
1502 (iocb->aio_nbytes != (size_t)iocb->aio_nbytes) || io_submit_one()
1503 ((ssize_t)iocb->aio_nbytes < 0) io_submit_one()
1513 req->common.ki_filp = fget(iocb->aio_fildes); io_submit_one()
1518 req->common.ki_pos = iocb->aio_offset; io_submit_one()
1522 if (iocb->aio_flags & IOCB_FLAG_RESFD) { io_submit_one()
1529 req->ki_eventfd = eventfd_ctx_fdget((int) iocb->aio_resfd); io_submit_one()
1546 req->ki_user_data = iocb->aio_data; io_submit_one()
1548 ret = aio_run_iocb(&req->common, iocb->aio_lio_opcode, io_submit_one()
1549 (char __user *)(unsigned long)iocb->aio_buf, io_submit_one()
1550 iocb->aio_nbytes, io_submit_one()
1564 struct iocb __user *__user *iocbpp, bool compat) do_io_submit()
1593 struct iocb __user *user_iocb; do_io_submit()
1594 struct iocb tmp; do_io_submit()
1619 * specified by ctx_id is invalid, if nr is < 0, if the iocb at
1621 * is invalid for the file descriptor in the iocb. May fail with
1624 * iocb is invalid. May fail with -EAGAIN if insufficient resources
1629 struct iocb __user * __user *, iocbpp) SYSCALL_DEFINE3()
1635 * Finds a given iocb for cancellation.
1638 lookup_kiocb(struct kioctx *ctx, struct iocb __user *iocb, u32 key) lookup_kiocb() argument
1649 if (kiocb->ki_user_iocb == iocb) lookup_kiocb()
1656 * Attempts to cancel an iocb previously passed to io_submit. If
1662 * invalid. May fail with -EAGAIN if the iocb specified was not
1665 SYSCALL_DEFINE3(io_cancel, aio_context_t, ctx_id, struct iocb __user *, iocb, SYSCALL_DEFINE3()
1673 ret = get_user(key, &iocb->aio_key); SYSCALL_DEFINE3()
1683 kiocb = lookup_kiocb(ctx, iocb, key); SYSCALL_DEFINE3()
H A Ddirect-io.c129 struct kiocb *iocb; /* kiocb */ member in struct:dio
254 dio->end_io(dio->iocb, offset, transferred, dio->private); dio_complete()
263 err = generic_write_sync(dio->iocb->ki_filp, offset, dio_complete()
269 dio->iocb->ki_complete(dio->iocb, ret, 0); dio_complete()
280 dio_complete(dio, dio->iocb->ki_pos, 0, true); dio_aio_complete_work()
309 dio_complete(dio, dio->iocb->ki_pos, 0, true); dio_bio_end_aio()
1098 do_blockdev_direct_IO(struct kiocb *iocb, struct inode *inode, do_blockdev_direct_IO() argument
1147 iocb->ki_filp->f_mapping; do_blockdev_direct_IO()
1178 if (is_sync_kiocb(iocb)) do_blockdev_direct_IO()
1194 ((iocb->ki_filp->f_flags & O_DSYNC) || do_blockdev_direct_IO()
1195 IS_SYNC(iocb->ki_filp->f_mapping->host))) { do_blockdev_direct_IO()
1224 dio->iocb = iocb; do_blockdev_direct_IO()
1312 ssize_t __blockdev_direct_IO(struct kiocb *iocb, struct inode *inode, __blockdev_direct_IO() argument
1330 return do_blockdev_direct_IO(iocb, inode, bdev, iter, offset, get_block, __blockdev_direct_IO()
H A Dblock_dev.c149 blkdev_direct_IO(struct kiocb *iocb, struct iov_iter *iter, loff_t offset) blkdev_direct_IO() argument
151 struct file *file = iocb->ki_filp; blkdev_direct_IO()
154 return __blockdev_direct_IO(iocb, inode, I_BDEV(inode), iter, offset, blkdev_direct_IO()
1603 ssize_t blkdev_write_iter(struct kiocb *iocb, struct iov_iter *from) blkdev_write_iter() argument
1605 struct file *file = iocb->ki_filp; blkdev_write_iter()
1617 if (iocb->ki_pos >= size) blkdev_write_iter()
1620 iov_iter_truncate(from, size - iocb->ki_pos); blkdev_write_iter()
1623 ret = __generic_file_write_iter(iocb, from); blkdev_write_iter()
1626 err = generic_write_sync(file, iocb->ki_pos - ret, ret); blkdev_write_iter()
1635 ssize_t blkdev_read_iter(struct kiocb *iocb, struct iov_iter *to) blkdev_read_iter() argument
1637 struct file *file = iocb->ki_filp; blkdev_read_iter()
1640 loff_t pos = iocb->ki_pos; blkdev_read_iter()
1647 return generic_file_read_iter(iocb, to); blkdev_read_iter()
H A Ddax.c176 * @iocb: The control block for this I/O
191 ssize_t dax_do_io(struct kiocb *iocb, struct inode *inode, dax_do_io() argument
220 end_io(iocb, pos, retval, bh.b_private); dax_do_io()
H A Dpipe.c229 pipe_read(struct kiocb *iocb, struct iov_iter *to) pipe_read() argument
232 struct file *filp = iocb->ki_filp; pipe_read()
338 pipe_write(struct kiocb *iocb, struct iov_iter *from) pipe_write() argument
340 struct file *filp = iocb->ki_filp; pipe_write()
H A Dcompat.c620 copy_iocb(long nr, u32 __user *ptr32, struct iocb __user * __user *ptr64) copy_iocb()
634 #define MAX_AIO_SUBMITS (PAGE_SIZE/sizeof(struct iocb *))
637 int, nr, u32 __user *, iocb) COMPAT_SYSCALL_DEFINE3()
639 struct iocb __user * __user *iocb64; COMPAT_SYSCALL_DEFINE3()
649 ret = copy_iocb(nr, iocb, iocb64); COMPAT_SYSCALL_DEFINE3()
/linux-4.1.27/fs/ceph/
H A Dfile.c433 static ssize_t ceph_sync_read(struct kiocb *iocb, struct iov_iter *i, ceph_sync_read() argument
436 struct file *file = iocb->ki_filp; ceph_sync_read()
439 u64 off = iocb->ki_pos; ceph_sync_read()
460 if (iocb->ki_flags & IOCB_DIRECT) { ceph_sync_read()
510 if (off > iocb->ki_pos) { ceph_sync_read()
511 ret = off - iocb->ki_pos; ceph_sync_read()
512 iocb->ki_pos = off; ceph_sync_read()
560 ceph_sync_direct_write(struct kiocb *iocb, struct iov_iter *from, loff_t pos) ceph_sync_direct_write() argument
562 struct file *file = iocb->ki_filp; ceph_sync_direct_write()
662 iocb->ki_pos = pos; ceph_sync_direct_write()
677 ceph_sync_write(struct kiocb *iocb, struct iov_iter *from, loff_t pos) ceph_sync_write() argument
679 struct file *file = iocb->ki_filp; ceph_sync_write()
794 iocb->ki_pos = pos; ceph_sync_write()
806 static ssize_t ceph_read_iter(struct kiocb *iocb, struct iov_iter *to) ceph_read_iter() argument
808 struct file *filp = iocb->ki_filp; ceph_read_iter()
820 inode, ceph_vinop(inode), iocb->ki_pos, (unsigned)len, inode); ceph_read_iter()
831 (iocb->ki_flags & IOCB_DIRECT) || ceph_read_iter()
835 inode, ceph_vinop(inode), iocb->ki_pos, (unsigned)len, ceph_read_iter()
840 ret = ceph_sync_read(iocb, to, &retry_op); ceph_read_iter()
846 inode, ceph_vinop(inode), iocb->ki_pos, (unsigned)len, ceph_read_iter()
849 ret = generic_file_read_iter(iocb, to); ceph_read_iter()
882 if (iocb->ki_pos < i_size && ceph_read_iter()
883 iocb->ki_pos < PAGE_CACHE_SIZE) { ceph_read_iter()
885 iocb->ki_pos + len); ceph_read_iter()
890 iocb->ki_pos & ~PAGE_MASK, ceph_read_iter()
891 end - iocb->ki_pos, to); ceph_read_iter()
892 iocb->ki_pos += ret; ceph_read_iter()
895 if (iocb->ki_pos < i_size && read < len) { ceph_read_iter()
897 i_size - iocb->ki_pos); ceph_read_iter()
899 iocb->ki_pos += ret; ceph_read_iter()
907 if (retry_op == CHECK_EOF && iocb->ki_pos < i_size && ceph_read_iter()
910 ", reading more\n", iocb->ki_pos, ceph_read_iter()
936 static ssize_t ceph_write_iter(struct kiocb *iocb, struct iov_iter *from) ceph_write_iter() argument
938 struct file *file = iocb->ki_filp; ceph_write_iter()
956 err = generic_write_checks(iocb, from); ceph_write_iter()
960 pos = iocb->ki_pos; ceph_write_iter()
998 (iocb->ki_flags & IOCB_DIRECT) || (fi->flags & CEPH_F_SYNC)) { ceph_write_iter()
1003 if (iocb->ki_flags & IOCB_DIRECT) ceph_write_iter()
1004 written = ceph_sync_direct_write(iocb, &data, pos); ceph_write_iter()
1006 written = ceph_sync_write(iocb, &data, pos); ceph_write_iter()
1028 iocb->ki_pos = pos + written; ceph_write_iter()
H A Daddr.c1205 static ssize_t ceph_direct_io(struct kiocb *iocb, struct iov_iter *iter, ceph_direct_io() argument
/linux-4.1.27/fs/coda/
H A Dfile.c30 coda_file_read_iter(struct kiocb *iocb, struct iov_iter *to) coda_file_read_iter() argument
32 struct file *coda_file = iocb->ki_filp; coda_file_read_iter()
37 return vfs_iter_read(cfi->cfi_container, to, &iocb->ki_pos); coda_file_read_iter()
62 coda_file_write_iter(struct kiocb *iocb, struct iov_iter *to) coda_file_write_iter() argument
64 struct file *coda_file = iocb->ki_filp; coda_file_write_iter()
75 ret = vfs_iter_write(cfi->cfi_container, to, &iocb->ki_pos); coda_file_write_iter()
/linux-4.1.27/fs/nfs/
H A Ddirect.c79 struct kiocb * iocb; /* controlling i/o request */ member in struct:nfs_direct_req
246 * @iocb: target I/O control block
256 ssize_t nfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter, loff_t pos) nfs_direct_IO() argument
258 struct inode *inode = iocb->ki_filp->f_mapping->host; nfs_direct_IO()
267 return nfs_file_direct_read(iocb, iter, pos); nfs_direct_IO()
268 return nfs_file_direct_write(iocb, iter); nfs_direct_IO()
351 if (dreq->iocb) nfs_direct_wait()
366 * Synchronous I/O uses a stack-allocated iocb. Thus we can't trust
367 * the iocb is still valid here if this is a synchronous request.
373 if (dreq->iocb && write) { nfs_direct_complete()
374 loff_t pos = dreq->iocb->ki_pos + dreq->count; nfs_direct_complete()
387 if (dreq->iocb) { nfs_direct_complete()
391 dreq->iocb->ki_complete(dreq->iocb, res, 0); nfs_direct_complete()
549 * @iocb: target I/O control block
567 ssize_t nfs_file_direct_read(struct kiocb *iocb, struct iov_iter *iter, nfs_file_direct_read() argument
570 struct file *file = iocb->ki_filp; nfs_file_direct_read()
601 dreq->ctx = get_nfs_open_context(nfs_file_open_context(iocb->ki_filp)); nfs_file_direct_read()
608 if (!is_sync_kiocb(iocb)) nfs_file_direct_read()
609 dreq->iocb = iocb; nfs_file_direct_read()
619 iocb->ki_pos = pos + result; nfs_file_direct_read()
939 * @iocb: target I/O control block
958 ssize_t nfs_file_direct_write(struct kiocb *iocb, struct iov_iter *iter) nfs_file_direct_write() argument
961 struct file *file = iocb->ki_filp; nfs_file_direct_write()
969 file, iov_iter_count(iter), (long long) iocb->ki_pos); nfs_file_direct_write()
974 pos = iocb->ki_pos; nfs_file_direct_write()
1000 dreq->ctx = get_nfs_open_context(nfs_file_open_context(iocb->ki_filp)); nfs_file_direct_write()
1007 if (!is_sync_kiocb(iocb)) nfs_file_direct_write()
1008 dreq->iocb = iocb; nfs_file_direct_write()
1024 iocb->ki_pos = pos + result; nfs_file_direct_write()
1026 if (i_size_read(inode) < iocb->ki_pos) nfs_file_direct_write()
1027 i_size_write(inode, iocb->ki_pos); nfs_file_direct_write()
H A Dfile.c168 nfs_file_read(struct kiocb *iocb, struct iov_iter *to) nfs_file_read() argument
170 struct inode *inode = file_inode(iocb->ki_filp); nfs_file_read()
173 if (iocb->ki_flags & IOCB_DIRECT) nfs_file_read()
174 return nfs_file_direct_read(iocb, to, iocb->ki_pos); nfs_file_read()
177 iocb->ki_filp, nfs_file_read()
178 iov_iter_count(to), (unsigned long) iocb->ki_pos); nfs_file_read()
180 result = nfs_revalidate_mapping_protected(inode, iocb->ki_filp->f_mapping); nfs_file_read()
182 result = generic_file_read_iter(iocb, to); nfs_file_read()
671 ssize_t nfs_file_write(struct kiocb *iocb, struct iov_iter *from) nfs_file_write() argument
673 struct file *file = iocb->ki_filp; nfs_file_write()
683 if (iocb->ki_flags & IOCB_DIRECT) { nfs_file_write()
684 result = generic_write_checks(iocb, from); nfs_file_write()
687 return nfs_file_direct_write(iocb, from); nfs_file_write()
691 file, count, (long long) iocb->ki_pos); nfs_file_write()
699 if (iocb->ki_flags & IOCB_APPEND) { nfs_file_write()
709 result = generic_file_write_iter(iocb, from); nfs_file_write()
/linux-4.1.27/drivers/scsi/lpfc/
H A Dlpfc_sli.c80 return &iocbq->iocb; lpfc_get_iocb_from_iocbq()
531 * lpfc_cmd_iocb - Get next command iocb entry in the ring
535 * This function returns pointer to next command iocb entry
537 * other threads consume the next command iocb.
548 * lpfc_resp_iocb - Get next response iocb entry in the ring
552 * This function returns pointer to next response iocb entry
554 * that no other thread consume the next response iocb.
565 * __lpfc_sli_get_iocbq - Allocates an iocb object from iocb pool
569 * allocates a new driver iocb object from the iocb pool. If the
571 * allocated iocb object else it returns NULL.
898 * __lpfc_sli_get_sglq - Allocates an iocb object from sgl pool
920 } else if ((piocbq->iocb.ulpCommand == CMD_GEN_REQUEST64_CR) && __lpfc_sli_get_sglq()
960 * lpfc_sli_get_iocbq - Allocates an iocb object from iocb pool
964 * allocates a new driver iocb object from the iocb pool. If the
966 * allocated iocb object else it returns NULL.
981 * __lpfc_sli_release_iocbq_s4 - Release iocb to the iocb pool
983 * @iocbq: Pointer to driver iocb object.
986 * iocb object to the iocb pool. The iotag in the iocb object
987 * does not change for each use of the iocb object. This function
988 * clears all other fields of the iocb object when it is freed.
1002 size_t start_clean = offsetof(struct lpfc_iocbq, iocb); __lpfc_sli_release_iocbq_s4()
1047 * __lpfc_sli_release_iocbq_s3 - Release iocb to the iocb pool
1049 * @iocbq: Pointer to driver iocb object.
1052 * iocb object to the iocb pool. The iotag in the iocb object
1053 * does not change for each use of the iocb object. This function
1054 * clears all other fields of the iocb object when it is freed.
1059 size_t start_clean = offsetof(struct lpfc_iocbq, iocb); __lpfc_sli_release_iocbq_s3()
1071 * __lpfc_sli_release_iocbq - Release iocb to the iocb pool
1073 * @iocbq: Pointer to driver iocb object.
1076 * iocb object to the iocb pool. The iotag in the iocb object
1077 * does not change for each use of the iocb object. This function
1078 * clears all other fields of the iocb object when it is freed.
1088 * lpfc_sli_release_iocbq - Release iocb to the iocb pool
1090 * @iocbq: Pointer to driver iocb object.
1092 * This function is called with no lock held to release the iocb to
1093 * iocb pool.
1131 piocb->iocb.ulpStatus = ulpstatus; lpfc_sli_cancel_iocbs()
1132 piocb->iocb.un.ulpWord[4] = ulpWord4; lpfc_sli_cancel_iocbs()
1140 * lpfc_sli_iocb_cmd_type - Get the iocb type
1141 * @iocb_cmnd: iocb command code.
1143 * This function is called by ring event handler function to get the iocb type.
1144 * This function translates the iocb command to an iocb command type used to
1147 * LPFC_UNKNOWN_IOCB if it is an unsupported iocb
1148 * LPFC_SOL_IOCB if it is a solicited iocb completion
1149 * LPFC_ABORT_IOCB if it is an abort iocb
1150 * LPFC_UNSOL_IOCB if it is an unsolicited iocb
1298 * lpfc_sli_ringtxcmpl_put - Adds new iocb to the txcmplq
1301 * @piocb: Pointer to the driver iocb object.
1304 * new iocb to txcmplq of the given ring. This function always returns
1317 (piocb->iocb.ulpCommand != CMD_ABORT_XRI_CN) && lpfc_sli_ringtxcmpl_put()
1318 (piocb->iocb.ulpCommand != CMD_CLOSE_XRI_CN) && lpfc_sli_ringtxcmpl_put()
1338 * iocb in txq of the given ring. If there is any iocb in
1339 * the txq, the function returns first iocb in the list after
1340 * removing the iocb from the list, else it returns NULL.
1352 * lpfc_sli_next_iocb_slot - Get next iocb slot in the ring
1357 * iocb without releasing the lock. If the caller releases the lock,
1358 * iocb slot returned by the function is not guaranteed to be available.
1359 * The function returns pointer to the next available iocb slot if there
1408 * lpfc_sli_next_iotag - Get an iotag for the iocb
1410 * @iocbq: Pointer to driver iocb object.
1412 * This function gets an iotag for the iocb. If there is no unused iotag and
1483 * lpfc_sli_submit_iocb - Submit an iocb to the firmware
1486 * @iocb: Pointer to iocb slot in the ring.
1487 * @nextiocb: Pointer to driver iocb object which need to be
1490 * This function is called with hbalock held to post a new iocb to
1491 * the firmware. This function copies the new iocb to ring iocb slot and
1492 * updates the ring pointers. It adds the new iocb to txcmplq if there is
1493 * a completion call back for this iocb else the function will free the
1494 * iocb object.
1498 IOCB_t *iocb, struct lpfc_iocbq *nextiocb) lpfc_sli_submit_iocb()
1503 nextiocb->iocb.ulpIoTag = (nextiocb->iocb_cmpl) ? nextiocb->iotag : 0; lpfc_sli_submit_iocb()
1509 *(((uint32_t *) &nextiocb->iocb) + 4), lpfc_sli_submit_iocb()
1510 *(((uint32_t *) &nextiocb->iocb) + 6), lpfc_sli_submit_iocb()
1511 *(((uint32_t *) &nextiocb->iocb) + 7)); lpfc_sli_submit_iocb()
1515 * Issue iocb command to adapter lpfc_sli_submit_iocb()
1517 lpfc_sli_pcimem_bcopy(&nextiocb->iocb, iocb, phba->iocb_cmd_size); lpfc_sli_submit_iocb()
1606 IOCB_t *iocb; lpfc_sli_resume_iocb() local
1622 while ((iocb = lpfc_sli_next_iocb_slot(phba, pring)) && lpfc_sli_resume_iocb()
1624 lpfc_sli_submit_iocb(phba, pring, iocb, nextiocb); lpfc_sli_resume_iocb()
1626 if (iocb) lpfc_sli_resume_iocb()
2460 * lpfc_sli_process_unsol_iocb - Unsolicited iocb handler
2463 * @saveq: Pointer to the unsolicited iocb.
2466 * when there is an unsolicited iocb posted to the response ring by the
2470 * When the function returns 1 the caller can free the iocb object otherwise
2471 * upper layer functions will free the iocb objects.
2483 irsp = &(saveq->iocb); lpfc_sli_process_unsol_iocb()
2493 "ASYNC_STATUS iocb received evt_code " lpfc_sli_process_unsol_iocb()
2532 "an unsolicited iocb. tag 0x%x\n", lpfc_sli_process_unsol_iocb()
2544 " unsolicited iocb. tag 0x%x\n", lpfc_sli_process_unsol_iocb()
2549 irsp = &(iocbq->iocb); lpfc_sli_process_unsol_iocb()
2558 "buffer for an unsolicited iocb" lpfc_sli_process_unsol_iocb()
2571 "iocb. tag 0x%x\n", lpfc_sli_process_unsol_iocb()
2584 if (iocbq->iocb.unsli3.rcvsli3.ox_id == lpfc_sli_process_unsol_iocb()
2585 saveq->iocb.unsli3.rcvsli3.ox_id) { lpfc_sli_process_unsol_iocb()
2594 if (saveq->iocb.ulpStatus != IOSTAT_INTERMED_RSP) { lpfc_sli_process_unsol_iocb()
2597 irsp = &(saveq->iocb); lpfc_sli_process_unsol_iocb()
2607 w5p = (WORD5 *)&(saveq->iocb.un.ulpWord[5]); lpfc_sli_process_unsol_iocb()
2632 * lpfc_sli_iocbq_lookup - Find command iocb for the given response iocb
2635 * @prspiocb: Pointer to response iocb object.
2637 * This function looks up the iocb_lookup table to get the command iocb
2638 * corresponding to the given response iocb using the iotag of the
2639 * response iocb. This function is called with the hbalock held.
2640 * This function returns the command iocb object if it finds the command
2641 * iocb else returns NULL.
2651 iotag = prspiocb->iocb.ulpIoTag; lpfc_sli_iocbq_lookup()
2666 *(((uint32_t *) &prspiocb->iocb) + 7)); lpfc_sli_iocbq_lookup()
2671 * lpfc_sli_iocbq_lookup_by_tag - Find command iocb for the iotag
2676 * This function looks up the iocb_lookup table to get the command iocb
2679 * This function returns the command iocb object if it finds the command
2680 * iocb else returns NULL.
2704 * lpfc_sli_process_sol_iocb - process solicited iocb completion
2707 * @saveq: Pointer to the response iocb to be processed.
2710 * rings when there is a new response iocb in the response ring.
2712 * gets the command iocb associated with the response iocb and
2713 * calls the completion handler for the command iocb. If there
2715 * associated with command iocb. If the response iocb is for
2716 * an already aborted command iocb, the status of the completion
2739 if (saveq->iocb.ulpStatus && lpfc_sli_process_sol_iocb()
2741 (cmdiocbp->iocb.ulpCommand == lpfc_sli_process_sol_iocb()
2760 saveq->iocb.ulpStatus = lpfc_sli_process_sol_iocb()
2762 saveq->iocb.un.ulpWord[4] = lpfc_sli_process_sol_iocb()
2804 cmdiocbp->iocb.ulpStatus = lpfc_sli_process_sol_iocb()
2806 cmdiocbp->iocb.un.ulpWord[4] = lpfc_sli_process_sol_iocb()
2814 saveq->iocb.ulpStatus = lpfc_sli_process_sol_iocb()
2816 saveq->iocb.un.ulpWord[4] = lpfc_sli_process_sol_iocb()
2846 saveq->iocb.ulpIoTag, lpfc_sli_process_sol_iocb()
2847 saveq->iocb.ulpStatus, lpfc_sli_process_sol_iocb()
2848 saveq->iocb.un.ulpWord[4], lpfc_sli_process_sol_iocb()
2849 saveq->iocb.ulpCommand, lpfc_sli_process_sol_iocb()
2850 saveq->iocb.ulpContext); lpfc_sli_process_sol_iocb()
2862 * This function is called from the iocb ring event handlers when
2951 * The function processes each response iocb in the response ring until it
2952 * finds an iocb with LE bit set and chains all the iocbs up to the iocb with
2953 * LE bit set. The function will call the completion handler of the command iocb
2954 * if the response iocb indicates a completion for a command iocb or it is
2956 * function if this is an unsolicited iocb.
3010 (uint32_t *) &rspiocbq.iocb, lpfc_sli_handle_fast_ring_event()
3013 irsp = &rspiocbq.iocb; lpfc_sli_handle_fast_ring_event()
3051 * Idle exchange closed via ABTS from port. No iocb lpfc_sli_handle_fast_ring_event()
3141 * lpfc_sli_sp_handle_rspiocb - Handle slow-path response iocb
3148 * seeing the iocb with the LE bit set. The function will call
3149 * lpfc_sli_process_sol_iocb function if the response iocb indicates a
3150 * completion of a command iocb. The function will call the
3151 * lpfc_sli_process_unsol_iocb function if this is an unsolicited iocb.
3153 * iocb is an abort completion. The function returns NULL when the response
3154 * iocb has the LE bit set and all the chained iocbs are processed, otherwise
3155 * this function shall chain the iocb on to the iocb_continueq and return the
3156 * response iocb passed in.
3173 /* First add the response iocb to the countinueq list */ lpfc_sli_sp_handle_rspiocb()
3178 irsp = &rspiocbp->iocb; lpfc_sli_sp_handle_rspiocb()
3182 * associated with this iocb completion. lpfc_sli_sp_handle_rspiocb()
3187 irsp = &(saveq->iocb); lpfc_sli_sp_handle_rspiocb()
3337 * remove each response iocb in the response ring and calls the handle
3338 * response iocb routine (lpfc_sli_sp_handle_rspiocb) to process it.
3385 * The process is to get the next available response iocb, get lpfc_sli_handle_slow_ring_event_s3()
3386 * a free iocb from the list, copy the response data into the lpfc_sli_handle_slow_ring_event_s3()
3387 * free iocb, insert to the continuation list, and update the lpfc_sli_handle_slow_ring_event_s3()
3389 * iocb's in the ring available to DMA as fast as possible but lpfc_sli_handle_slow_ring_event_s3()
3390 * pays a penalty for a copy operation. Since the iocb is lpfc_sli_handle_slow_ring_event_s3()
3406 lpfc_sli_pcimem_bcopy(entry, &rspiocbp->iocb, lpfc_sli_handle_slow_ring_event_s3()
3408 irsp = &rspiocbp->iocb; lpfc_sli_handle_slow_ring_event_s3()
3471 * ELS response iocb on the driver internal slow-path response iocb worker
3473 * response iocb from the response worker queue and calls the handle
3474 * response iocb routine (lpfc_sli_sp_handle_rspiocb) to process it.
3489 /* Get the response iocb from the head of work queue */ lpfc_sli_handle_slow_ring_event_s4()
3523 * This function aborts all iocbs in the given ring and frees all the iocb
3524 * objects in txq. This function issues an abort iocb for all the iocb commands
3532 struct lpfc_iocbq *iocb, *next_iocb; lpfc_sli_abort_iocb_ring() local
3549 list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, list) lpfc_sli_abort_iocb_ring()
3550 lpfc_sli_issue_abort_iotag(phba, pring, iocb); lpfc_sli_abort_iocb_ring()
3558 list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, list) lpfc_sli_abort_iocb_ring()
3559 lpfc_sli_issue_abort_iotag(phba, pring, iocb); lpfc_sli_abort_iocb_ring()
3573 * This function aborts all iocbs in FCP rings and frees all the iocb
3574 * objects in txq. This function issues an abort iocb for all the iocb commands
3602 * This function flushes all iocbs in the fcp ring and frees all the iocb
3604 * for all the iocb commands in txcmplq, they will just be returned with
3991 * register. After the HBA resets, this function resets all the iocb ring
4626 * the SLI, setup iocb rings and HBQ rings. In the end the function
6937 /* If HBA has a deferred error attention, fail the iocb. */ lpfc_sli_issue_mbox_s3()
7851 * __lpfc_sli_ringtx_put - Add an iocb to the txq
7854 * @piocb: Pointer to address of newly added command iocb.
7857 * iocb to the txq when SLI layer cannot submit the command iocb
7864 /* Insert the caller's iocb in the txq tail for later processing. */ __lpfc_sli_ringtx_put()
7869 * lpfc_sli_next_iocb - Get the next iocb in the txq
7872 * @piocb: Pointer to address of newly added command iocb.
7875 * iocb is submitted to the firmware. This function checks
7881 * If there is no iocb in the txq then the function will return
7903 * @ring_number: SLI ring number to issue iocb on.
7904 * @piocb: Pointer to command iocb.
7908 * an iocb command to an HBA with SLI-3 interface spec. If the PCI slot is
7914 * processing new iocb. If there is no slot available in the ring and
7915 * flag & SLI_IOCB_RET_IOCB is set, the new iocb is added to the txq, otherwise
7919 * after it successfully submit the iocb to firmware or after adding to the
7927 IOCB_t *iocb; __lpfc_sli_issue_iocb_s3() local
7931 (piocb->iocb.ulpCommand != CMD_ABORT_XRI_CN) && __lpfc_sli_issue_iocb_s3()
7932 (piocb->iocb.ulpCommand != CMD_CLOSE_XRI_CN)) { __lpfc_sli_issue_iocb_s3()
7936 piocb->iocb.ulpCommand); __lpfc_sli_issue_iocb_s3()
7946 /* If HBA has a deferred error attention, fail the iocb. */ __lpfc_sli_issue_iocb_s3()
7968 switch (piocb->iocb.ulpCommand) { __lpfc_sli_issue_iocb_s3()
7972 (piocb->iocb.un.genreq64.w5.hcsw.Rctl != __lpfc_sli_issue_iocb_s3()
7974 (piocb->iocb.un.genreq64.w5.hcsw.Type != __lpfc_sli_issue_iocb_s3()
8005 while ((iocb = lpfc_sli_next_iocb_slot(phba, pring)) && __lpfc_sli_issue_iocb_s3()
8007 lpfc_sli_submit_iocb(phba, pring, iocb, nextiocb); __lpfc_sli_issue_iocb_s3()
8009 if (iocb) __lpfc_sli_issue_iocb_s3()
8035 * @piocb: Pointer to command iocb.
8068 icmd = &piocbq->iocb; lpfc_sli4_bpl2sgl()
8106 if (piocbq->iocb.ulpCommand == CMD_GEN_REQUEST64_CR) { lpfc_sli4_bpl2sgl()
8173 * @piocb: Pointer to command iocb.
8176 * This routine converts the iocb command to its Work Queue Entry
8215 memcpy(wqe, &iocbq->iocb, sizeof(union lpfc_wqe)); lpfc_sli4_iocb2wqe()
8221 if (iocbq->iocb.un.genreq64.bdl.bdeFlags == BUFF_TYPE_BLP_64) { lpfc_sli4_iocb2wqe()
8222 numBdes = iocbq->iocb.un.genreq64.bdl.bdeSize / lpfc_sli4_iocb2wqe()
8243 xmit_len = iocbq->iocb.un.fcpi64.bdl.bdeSize; lpfc_sli4_iocb2wqe()
8245 iocbq->iocb.ulpIoTag = iocbq->iotag; lpfc_sli4_iocb2wqe()
8246 cmnd = iocbq->iocb.ulpCommand; lpfc_sli4_iocb2wqe()
8248 switch (iocbq->iocb.ulpCommand) { lpfc_sli4_iocb2wqe()
8254 if (!iocbq->iocb.ulpLe) { lpfc_sli4_iocb2wqe()
8258 iocbq->iocb.ulpCommand); lpfc_sli4_iocb2wqe()
8265 iocbq->iocb.ulpTimeout); lpfc_sli4_iocb2wqe()
8270 ct = ((iocbq->iocb.ulpCt_h << 1) | iocbq->iocb.ulpCt_l); lpfc_sli4_iocb2wqe()
8272 iocbq->iocb.ulpContext); lpfc_sli4_iocb2wqe()
8317 iocbq->iocb.un.ulpWord[3]); lpfc_sli4_iocb2wqe()
8319 iocbq->iocb.unsli3.rcvsli3.ox_id); lpfc_sli4_iocb2wqe()
8326 /* word3 iocb=io_tag32 wqe=reserved */ lpfc_sli4_iocb2wqe()
8341 /* word3 iocb=iotag32 wqe=seq_payload_len */ lpfc_sli4_iocb2wqe()
8343 /* word4 iocb=rsvd wqe=rsvd */ lpfc_sli4_iocb2wqe()
8344 /* word5 iocb=rctl/type/df_ctl wqe=rctl/type/df_ctl memcpy */ lpfc_sli4_iocb2wqe()
8345 /* word6 iocb=ctxt_tag/io_tag wqe=ctxt_tag/xri */ lpfc_sli4_iocb2wqe()
8347 ((iocbq->iocb.ulpCt_h << 1) | iocbq->iocb.ulpCt_l)); lpfc_sli4_iocb2wqe()
8356 /* word3 iocb=iotag wqe=payload_offset_len */ lpfc_sli4_iocb2wqe()
8362 /* word4 iocb=parameter wqe=total_xfer_length memcpy */ lpfc_sli4_iocb2wqe()
8363 /* word5 iocb=initial_xfer_len wqe=initial_xfer_len memcpy */ lpfc_sli4_iocb2wqe()
8365 iocbq->iocb.ulpFCP2Rcvy); lpfc_sli4_iocb2wqe()
8366 bf_set(wqe_lnk, &wqe->fcp_iwrite.wqe_com, iocbq->iocb.ulpXS); lpfc_sli4_iocb2wqe()
8373 bf_set(wqe_pu, &wqe->fcp_iwrite.wqe_com, iocbq->iocb.ulpPU); lpfc_sli4_iocb2wqe()
8385 /* word3 iocb=iotag wqe=payload_offset_len */ lpfc_sli4_iocb2wqe()
8391 /* word4 iocb=parameter wqe=total_xfer_length memcpy */ lpfc_sli4_iocb2wqe()
8392 /* word5 iocb=initial_xfer_len wqe=initial_xfer_len memcpy */ lpfc_sli4_iocb2wqe()
8394 iocbq->iocb.ulpFCP2Rcvy); lpfc_sli4_iocb2wqe()
8395 bf_set(wqe_lnk, &wqe->fcp_iread.wqe_com, iocbq->iocb.ulpXS); lpfc_sli4_iocb2wqe()
8402 bf_set(wqe_pu, &wqe->fcp_iread.wqe_com, iocbq->iocb.ulpPU); lpfc_sli4_iocb2wqe()
8414 /* word3 iocb=iotag wqe=payload_offset_len */ lpfc_sli4_iocb2wqe()
8420 /* word3 iocb=IO_TAG wqe=reserved */ lpfc_sli4_iocb2wqe()
8431 iocbq->iocb.ulpFCP2Rcvy); lpfc_sli4_iocb2wqe()
8446 numBdes = iocbq->iocb.un.genreq64.bdl.bdeSize / lpfc_sli4_iocb2wqe()
8454 /* word3 iocb=IO_TAG wqe=request_payload_len */ lpfc_sli4_iocb2wqe()
8456 /* word4 iocb=parameter wqe=relative_offset memcpy */ lpfc_sli4_iocb2wqe()
8459 if (iocbq->iocb.ulpCt_h || iocbq->iocb.ulpCt_l) { lpfc_sli4_iocb2wqe()
8460 ct = ((iocbq->iocb.ulpCt_h << 1) | iocbq->iocb.ulpCt_l); lpfc_sli4_iocb2wqe()
8463 ct, iocbq->iocb.ulpCommand); lpfc_sli4_iocb2wqe()
8467 bf_set(wqe_tmo, &wqe->gen_req.wqe_com, iocbq->iocb.ulpTimeout); lpfc_sli4_iocb2wqe()
8468 bf_set(wqe_pu, &wqe->gen_req.wqe_com, iocbq->iocb.ulpPU); lpfc_sli4_iocb2wqe()
8480 /* word3 iocb=iotag32 wqe=response_payload_len */ lpfc_sli4_iocb2wqe()
8484 /* word5 iocb=rsvd wge=did */ lpfc_sli4_iocb2wqe()
8486 iocbq->iocb.un.xseq64.xmit_els_remoteID); lpfc_sli4_iocb2wqe()
8502 ((iocbq->iocb.ulpCt_h << 1) | iocbq->iocb.ulpCt_l)); lpfc_sli4_iocb2wqe()
8503 bf_set(wqe_pu, &wqe->xmit_els_rsp.wqe_com, iocbq->iocb.ulpPU); lpfc_sli4_iocb2wqe()
8505 iocbq->iocb.unsli3.rcvsli3.ox_id); lpfc_sli4_iocb2wqe()
8506 if (!iocbq->iocb.ulpCt_h && iocbq->iocb.ulpCt_l) lpfc_sli4_iocb2wqe()
8534 abrt_iotag = iocbq->iocb.un.acxri.abortContextTag; lpfc_sli4_iocb2wqe()
8541 if ((iocbq->iocb.ulpCommand == CMD_CLOSE_XRI_CN) || fip) lpfc_sli4_iocb2wqe()
8551 /* word5 iocb=CONTEXT_TAG|IO_TAG wqe=reserved */ lpfc_sli4_iocb2wqe()
8554 ((iocbq->iocb.ulpCt_h << 1) | iocbq->iocb.ulpCt_l)); lpfc_sli4_iocb2wqe()
8555 abort_tag = iocbq->iocb.un.acxri.abortIoTag; lpfc_sli4_iocb2wqe()
8577 bf_get(lpfc_abts_oxid, &iocbq->iocb.un.bls_rsp)); lpfc_sli4_iocb2wqe()
8578 if (bf_get(lpfc_abts_orig, &iocbq->iocb.un.bls_rsp) == lpfc_sli4_iocb2wqe()
8592 bf_get(lpfc_abts_rxid, &iocbq->iocb.un.bls_rsp)); lpfc_sli4_iocb2wqe()
8601 iocbq->iocb.ulpContext); lpfc_sli4_iocb2wqe()
8610 if (iocbq->iocb.un.xseq64.w5.hcsw.Rctl == FC_RCTL_BA_RJT) { lpfc_sli4_iocb2wqe()
8612 bf_get(lpfc_vndr_code, &iocbq->iocb.un.bls_rsp)); lpfc_sli4_iocb2wqe()
8614 bf_get(lpfc_rsn_expln, &iocbq->iocb.un.bls_rsp)); lpfc_sli4_iocb2wqe()
8616 bf_get(lpfc_rsn_code, &iocbq->iocb.un.bls_rsp)); lpfc_sli4_iocb2wqe()
8629 iocbq->iocb.ulpCommand); lpfc_sli4_iocb2wqe()
8647 bf_set(wqe_class, &wqe->generic.wqe_com, iocbq->iocb.ulpClass); lpfc_sli4_iocb2wqe()
8655 * @ring_number: SLI ring number to issue iocb on.
8656 * @piocb: Pointer to command iocb.
8660 * an iocb command to an HBA with SLI-4 interface spec.
8663 * after it successfully submit the iocb to firmware or after adding to the
8676 if (piocb->iocb.ulpCommand == CMD_ABORT_XRI_CN || __lpfc_sli_issue_iocb_s4()
8677 piocb->iocb.ulpCommand == CMD_CLOSE_XRI_CN) __lpfc_sli_issue_iocb_s4()
8745 * __lpfc_sli_issue_iocb - Wrapper func of lockless version for issuing iocb
8830 * @piocb: Pointer to command iocb.
8916 /* Adjust cmd/rsp ring iocb entries more evenly */ lpfc_extra_ring_setup()
8945 * @iocbq: Pointer to iocb object.
8964 vpi = iocbq->iocb.un.asyncstat.sub_ctxt_tag; lpfc_sli_abts_err_handler()
8965 rpi = iocbq->iocb.ulpContext; lpfc_sli_abts_err_handler()
8970 vpi, rpi, iocbq->iocb.ulpStatus); lpfc_sli_abts_err_handler()
8979 if (iocbq->iocb.ulpStatus == IOSTAT_LOCAL_REJECT) lpfc_sli_abts_err_handler()
8987 iocbq->iocb.ulpContext, iocbq->iocb.ulpStatus, lpfc_sli_abts_err_handler()
9037 * lpfc_sli_async_event_handler - ASYNC iocb handler function
9040 * @iocbq: Pointer to iocb object.
9043 * function when there is an ASYNC event iocb in the ring.
9059 icmd = &iocbq->iocb; lpfc_sli_async_event_handler()
9243 * lpfc_sli_queue_setup sets up mailbox queues and iocb queues for each
9338 * - Send abort for all iocb commands associated with this
9350 struct lpfc_iocbq *iocb, *next_iocb; lpfc_sli_host_down() local
9371 list_for_each_entry_safe(iocb, next_iocb, &pring->txq, list) { lpfc_sli_host_down()
9372 if (iocb->vport != vport) lpfc_sli_host_down()
9374 list_move_tail(&iocb->list, &completions); lpfc_sli_host_down()
9378 list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, lpfc_sli_host_down()
9380 if (iocb->vport != vport) lpfc_sli_host_down()
9382 lpfc_sli_issue_abort_iotag(phba, pring, iocb); lpfc_sli_host_down()
9400 * This function cleans up all iocb, buffers, mailbox commands
9406 * - Iterate through the iocb txq and free each entry
9558 * allocates a tag for buffer posted using CMD_QUE_XRI64_CX iocb. The
9584 * Buffers posted using CMD_QUE_XRI64_CX iocb are in pring->postbufq
9586 * iocb is posted to the response ring with the tag of the buffer.
9589 * iocb. If the buffer is found then lpfc_dmabuf object of the
9667 * @cmdiocb: Pointer to driver command iocb object.
9668 * @rspiocb: Pointer to driver response iocb object.
9673 * associated with the abort iocb.
9679 IOCB_t *irsp = &rspiocb->iocb; lpfc_sli_abort_els_cmpl()
9687 * will return the iocb. Just Log the message. lpfc_sli_abort_els_cmpl()
9689 abort_context = cmdiocb->iocb.un.acxri.abortContextTag; lpfc_sli_abort_els_cmpl()
9690 abort_iotag = cmdiocb->iocb.un.acxri.abortIoTag; lpfc_sli_abort_els_cmpl()
9700 * so the abort routine puts the iotag of the iocb lpfc_sli_abort_els_cmpl()
9707 "0327 Cannot abort els iocb %p " lpfc_sli_abort_els_cmpl()
9722 * @cmdiocb: Pointer to driver command iocb object.
9723 * @rspiocb: Pointer to driver response iocb object.
9734 IOCB_t *irsp = &rspiocb->iocb; lpfc_ignore_els_cmpl()
9742 if (cmdiocb->iocb.ulpCommand == CMD_GEN_REQUEST64_CR) lpfc_ignore_els_cmpl()
9750 * lpfc_sli_abort_iotag_issue - Issue abort for a command iocb
9753 * @cmdiocb: Pointer to driver command iocb object.
9755 * This function issues an abort iocb for the provided command iocb down to
9756 * the port. Other than the case the outstanding command iocb is an abort
9759 * memory allocation failure or when the command iocb is an abort request.
9778 icmd = &cmdiocb->iocb; lpfc_sli_abort_iotag_issue()
9794 iabt = &abtsiocbp->iocb; lpfc_sli_abort_iotag_issue()
9849 * iocb off txcmplq and call compl in case of IOCB_ERROR. lpfc_sli_abort_iotag_issue()
9855 * lpfc_sli_issue_abort_iotag - Abort function for a command iocb
9858 * @cmdiocb: Pointer to driver command iocb object.
9860 * This function issues an abort iocb for the provided command iocb. In case
9861 * of unloading, the abort iocb will not be issued to commands on the ELS
9864 * hbalock held. The function returns 0 when the command iocb is an abort
9880 icmd = &cmdiocb->iocb; lpfc_sli_issue_abort_iotag()
9887 * If we're unloading, don't abort iocb on the ELS ring, but change lpfc_sli_issue_abort_iotag()
9906 * iocb off txcmplq and call compl in case of IOCB_ERROR. lpfc_sli_issue_abort_iotag()
9932 * @iocbq: Pointer to driver iocb object.
9938 * This function acts as an iocb filter for functions which abort or count
9940 * 0 if the filtering criteria is met for the given iocb and will return
9943 * given iocb is for the SCSI device specified by vport, tgt_id and
9946 * given iocb is for the SCSI target specified by vport and tgt_id
9949 * given iocb is for the SCSI host associated with the given vport.
10036 * @cmdiocb: Pointer to command iocb object.
10037 * @rspiocb: Pointer to response iocb object.
10039 * This function is called when an aborted FCP iocb completes. This
10041 * This function frees the iocb.
10051 cmdiocb->iocb.un.acxri.abortContextTag, lpfc_sli_abort_fcp_cmpl()
10052 cmdiocb->iocb.un.acxri.abortIoTag, lpfc_sli_abort_fcp_cmpl()
10053 cmdiocb->iotag, rspiocb->iocb.ulpStatus, lpfc_sli_abort_fcp_cmpl()
10054 rspiocb->iocb.un.ulpWord[4]); lpfc_sli_abort_fcp_cmpl()
10115 cmd = &iocbq->iocb; lpfc_sli_abort_iocb()
10116 abtsiocb->iocb.un.acxri.abortType = ABORT_TYPE_ABTS; lpfc_sli_abort_iocb()
10117 abtsiocb->iocb.un.acxri.abortContextTag = cmd->ulpContext; lpfc_sli_abort_iocb()
10119 abtsiocb->iocb.un.acxri.abortIoTag = iocbq->sli4_xritag; lpfc_sli_abort_iocb()
10121 abtsiocb->iocb.un.acxri.abortIoTag = cmd->ulpIoTag; lpfc_sli_abort_iocb()
10122 abtsiocb->iocb.ulpLe = 1; lpfc_sli_abort_iocb()
10123 abtsiocb->iocb.ulpClass = cmd->ulpClass; lpfc_sli_abort_iocb()
10134 abtsiocb->iocb.ulpCommand = CMD_ABORT_XRI_CN; lpfc_sli_abort_iocb()
10136 abtsiocb->iocb.ulpCommand = CMD_CLOSE_XRI_CN; lpfc_sli_abort_iocb()
10217 icmd = &iocbq->iocb; lpfc_sli_abort_taskmgmt()
10218 abtsiocbq->iocb.un.acxri.abortType = ABORT_TYPE_ABTS; lpfc_sli_abort_taskmgmt()
10219 abtsiocbq->iocb.un.acxri.abortContextTag = icmd->ulpContext; lpfc_sli_abort_taskmgmt()
10221 abtsiocbq->iocb.un.acxri.abortIoTag = lpfc_sli_abort_taskmgmt()
10224 abtsiocbq->iocb.un.acxri.abortIoTag = icmd->ulpIoTag; lpfc_sli_abort_taskmgmt()
10225 abtsiocbq->iocb.ulpLe = 1; lpfc_sli_abort_taskmgmt()
10226 abtsiocbq->iocb.ulpClass = icmd->ulpClass; lpfc_sli_abort_taskmgmt()
10241 abtsiocbq->iocb.ulpCommand = CMD_ABORT_XRI_CN; lpfc_sli_abort_taskmgmt()
10243 abtsiocbq->iocb.ulpCommand = CMD_CLOSE_XRI_CN; lpfc_sli_abort_taskmgmt()
10281 * @cmdiocbq: Pointer to command iocb.
10282 * @rspiocbq: Pointer to response iocb.
10290 * This function copy the contents of the response iocb to the
10291 * response iocb memory object provided by the caller of
10293 * sleeps for the iocb completion.
10308 * A time out has occurred for the iocb. If a time out lpfc_sli_wake_iocb_wait()
10325 memcpy(&((struct lpfc_iocbq *)cmdiocbq->context2)->iocb, lpfc_sli_wake_iocb_wait()
10326 &rspiocbq->iocb, sizeof(IOCB_t)); lpfc_sli_wake_iocb_wait()
10346 * @piocbq: Pointer to command iocb.
10370 * lpfc_sli_issue_iocb_wait - Synchronous function to issue iocb commands
10373 * @piocb: Pointer to command iocb.
10374 * @prspiocbq: Pointer to response iocb.
10377 * This function issues the iocb to firmware and waits for the
10378 * iocb to complete. The iocb_cmpl field of the shall be used
10382 * that will provide the needed clean up. If the iocb command is
10386 * a status of IOCB_TIMEDOUT. The caller should not free the iocb
10388 * The function waits for the iocb completion using an
10390 * This function will sleep while waiting for iocb completion.
10394 * This function assumes that the iocb completions occur while
10396 * the thread which process iocb completion for this ring.
10397 * This function clears the iocb_flag of the iocb object before
10398 * issuing the iocb and the iocb completion handler sets this
10399 * flag and wakes this thread when the iocb completes.
10400 * The contents of the response iocb will be copied to prspiocbq
10416 struct lpfc_iocbq *iocb; lpfc_sli_issue_iocb_wait() local
10457 * IOCB timed out. Inform the wake iocb wait lpfc_sli_issue_iocb_wait()
10487 list_for_each_entry(iocb, &pring->txq, list) { lpfc_sli_issue_iocb_wait()
10490 list_for_each_entry(iocb, &pring->txcmplq, list) { lpfc_sli_issue_iocb_wait()
11479 size_t offset = offsetof(struct lpfc_iocbq, iocb); lpfc_sli4_iocb_param_transfer()
11485 pIocbIn->iocb.ulpStatus = (status & LPFC_IOCB_STATUS_MASK); lpfc_sli4_iocb_param_transfer()
11487 if (pIocbIn->iocb.ulpStatus == IOSTAT_FCP_RSP_ERROR) lpfc_sli4_iocb_param_transfer()
11488 pIocbIn->iocb.un.fcpi.fcpi_parm = lpfc_sli4_iocb_param_transfer()
11489 pIocbOut->iocb.un.fcpi.fcpi_parm - lpfc_sli4_iocb_param_transfer()
11492 pIocbIn->iocb.un.ulpWord[4] = wcqe->parameter; lpfc_sli4_iocb_param_transfer()
11494 pIocbIn->iocb.un.ulpWord[4] = wcqe->parameter; lpfc_sli4_iocb_param_transfer()
11495 switch (pIocbOut->iocb.ulpCommand) { lpfc_sli4_iocb_param_transfer()
11506 numBdes = pIocbOut->iocb.un.genreq64.bdl.bdeSize/ lpfc_sli4_iocb_param_transfer()
11521 pIocbIn->iocb.un.genreq64.bdl.bdeSize = max_response; lpfc_sli4_iocb_param_transfer()
11523 pIocbIn->iocb.un.genreq64.bdl.bdeSize = lpfc_sli4_iocb_param_transfer()
11529 pIocbIn->iocb.ulpStatus = IOSTAT_LOCAL_REJECT; lpfc_sli4_iocb_param_transfer()
11532 pIocbIn->iocb.un.ulpWord[4] = IOERR_RX_DMA_FAILED; lpfc_sli4_iocb_param_transfer()
11534 pIocbIn->iocb.un.ulpWord[4] = IOERR_TX_DMA_FAILED; lpfc_sli4_iocb_param_transfer()
11536 pIocbIn->iocb.unsli3.sli3_bg.bgstat = 0; lpfc_sli4_iocb_param_transfer()
11538 pIocbIn->iocb.unsli3.sli3_bg.bgstat |= lpfc_sli4_iocb_param_transfer()
11541 pIocbIn->iocb.unsli3.sli3_bg.bgstat |= lpfc_sli4_iocb_param_transfer()
11544 pIocbIn->iocb.unsli3.sli3_bg.bgstat |= lpfc_sli4_iocb_param_transfer()
11549 pIocbIn->iocb.unsli3.sli3_bg.bgstat |= lpfc_sli4_iocb_param_transfer()
11551 pIocbIn->iocb.unsli3.sli3_bg.bghm = lpfc_sli4_iocb_param_transfer()
11559 if (!pIocbIn->iocb.unsli3.sli3_bg.bgstat) lpfc_sli4_iocb_param_transfer()
11560 pIocbIn->iocb.unsli3.sli3_bg.bgstat |= lpfc_sli4_iocb_param_transfer()
14366 * This function gets an xritag for the iocb. If there is no unused xritag
15015 * lpfc_sli4_seq_abort_rsp_cmpl - BLS ABORT RSP seq abort iocb complete handler
15020 * This function handles the sequence abort response iocb command complete
15022 * accept iocb.
15039 if (rsp_iocbq && rsp_iocbq->iocb.ulpStatus) lpfc_sli4_seq_abort_rsp_cmpl()
15042 rsp_iocbq->iocb.ulpStatus, lpfc_sli4_seq_abort_rsp_cmpl()
15043 rsp_iocbq->iocb.un.ulpWord[4]); lpfc_sli4_seq_abort_rsp_cmpl()
15117 /* Allocate buffer for rsp iocb */ lpfc_sli4_seq_abort_rsp()
15125 icmd = &ctiocb->iocb; lpfc_sli4_seq_abort_rsp()
15132 /* Fill in the rest of iocb fields */ lpfc_sli4_seq_abort_rsp()
15338 first_iocbq->iocb.unsli3.rcvsli3.acc_len = 0; lpfc_prep_seq()
15339 first_iocbq->iocb.ulpStatus = IOSTAT_SUCCESS; lpfc_prep_seq()
15343 first_iocbq->iocb.ulpCommand = CMD_IOCB_RCV_ELS64_CX; lpfc_prep_seq()
15344 first_iocbq->iocb.un.rcvels.parmRo = lpfc_prep_seq()
15346 first_iocbq->iocb.ulpPU = PARM_NPIV_DID; lpfc_prep_seq()
15348 first_iocbq->iocb.ulpCommand = CMD_IOCB_RCV_SEQ64_CX; lpfc_prep_seq()
15349 first_iocbq->iocb.ulpContext = NO_XRI; lpfc_prep_seq()
15350 first_iocbq->iocb.unsli3.rcvsli3.ox_id = lpfc_prep_seq()
15353 first_iocbq->iocb.unsli3.rcvsli3.vpi = lpfc_prep_seq()
15361 first_iocbq->iocb.ulpBdeCount = 1; lpfc_prep_seq()
15363 first_iocbq->iocb.un.cont64[0].tus.f.bdeSize = lpfc_prep_seq()
15366 first_iocbq->iocb.un.cont64[0].tus.f.bdeSize = tot_len; lpfc_prep_seq()
15368 first_iocbq->iocb.un.rcvels.remoteID = sid; lpfc_prep_seq()
15370 first_iocbq->iocb.unsli3.rcvsli3.acc_len = tot_len; lpfc_prep_seq()
15384 iocbq->iocb.ulpBdeCount++; lpfc_prep_seq()
15390 &iocbq->iocb.unsli3.sli3Words[4]; lpfc_prep_seq()
15396 iocbq->iocb.unsli3.rcvsli3.acc_len += len; lpfc_prep_seq()
15402 first_iocbq->iocb.ulpStatus = lpfc_prep_seq()
15404 first_iocbq->iocb.un.ulpWord[4] = lpfc_prep_seq()
15416 iocbq->iocb.ulpBdeCount = 1; lpfc_prep_seq()
15418 iocbq->iocb.un.cont64[0].tus.f.bdeSize = lpfc_prep_seq()
15421 iocbq->iocb.un.cont64[0].tus.f.bdeSize = len; lpfc_prep_seq()
15424 iocbq->iocb.unsli3.rcvsli3.acc_len = tot_len; lpfc_prep_seq()
15426 iocbq->iocb.un.rcvels.remoteID = sid; lpfc_prep_seq()
15446 "iocb Rctl x%x Type x%x received\n", lpfc_sli4_send_seq_to_ulp()
15461 /* Free iocb created in lpfc_prep_seq */ lpfc_sli4_send_seq_to_ulp()
17029 /* The xri and iocb resources secured, lpfc_drain_txq()
17037 fail_msg = "to convert iocb to wqe"; lpfc_drain_txq()
1497 lpfc_sli_submit_iocb(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, IOCB_t *iocb, struct lpfc_iocbq *nextiocb) lpfc_sli_submit_iocb() argument
H A Dlpfc_els.c54 struct lpfc_iocbq *iocb);
122 * lpfc_prep_els_iocb - Allocate and prepare a lpfc iocb data structure
146 * Pointer to the newly allocated/prepared els iocb data structure
147 * NULL - when els iocb data structure allocation/preparation failed
165 /* Allocate buffer for command iocb */ lpfc_prep_els_iocb()
200 icmd = &elsiocb->iocb; lpfc_prep_els_iocb()
298 /* prevent preparing iocb with NULL ndlp reference */ lpfc_prep_els_iocb()
948 * @cmdiocb: pointer to lpfc command iocb data structure.
949 * @rspiocb: pointer to lpfc response iocb data structure.
974 IOCB_t *irsp = &rspiocb->iocb; lpfc_cmpl_els_flogi()
1179 * lpfc_issue_els_flogi - Issue an flogi iocb command for a vport
1197 * 0 - successfully issued flogi iocb for @vport
1198 * 1 - failed to issue flogi iocb for @vport
1223 icmd = &elsiocb->iocb; lpfc_issue_els_flogi()
1245 elsiocb->iocb.ulpCt_h = ((SLI4_CT_FCFI >> 1) & 1); lpfc_issue_els_flogi()
1246 elsiocb->iocb.ulpCt_l = (SLI4_CT_FCFI & 1); lpfc_issue_els_flogi()
1249 elsiocb->iocb.ulpContext = phba->fcf.fcfi; lpfc_issue_els_flogi()
1304 * 0 - Successfully issued abort iocb on all outstanding flogis (Always 0)
1310 struct lpfc_iocbq *iocb, *next_iocb; lpfc_els_abort_flogi() local
1322 * Check the txcmplq for an iocb that matches the nport the driver is lpfc_els_abort_flogi()
1326 list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, list) { lpfc_els_abort_flogi()
1327 icmd = &iocb->iocb; lpfc_els_abort_flogi()
1329 ndlp = (struct lpfc_nodelist *)(iocb->context1); lpfc_els_abort_flogi()
1332 lpfc_sli_issue_abort_iotag(phba, pring, iocb); lpfc_els_abort_flogi()
1739 * @cmdiocb: pointer to lpfc command iocb data structure.
1740 * @rspiocb: pointer to lpfc response iocb data structure.
1761 irsp = &rspiocb->iocb; lpfc_cmpl_els_rrq()
1806 * @cmdiocb: pointer to lpfc command iocb data structure.
1807 * @rspiocb: pointer to lpfc response iocb data structure.
1837 irsp = &rspiocb->iocb; lpfc_cmpl_els_plogi()
1933 * lpfc_issue_els_plogi - Issue an plogi iocb command for a vport
1979 icmd = &elsiocb->iocb; lpfc_issue_els_plogi()
2019 * @cmdiocb: pointer to lpfc command iocb data structure.
2020 * @rspiocb: pointer to lpfc response iocb data structure.
2043 irsp = &(rspiocb->iocb); lpfc_cmpl_els_prli()
2092 * lpfc_issue_els_prli - Issue a prli iocb command for a vport
2109 * 0 - successfully issued prli iocb command for @vport
2110 * 1 - failed to issue prli iocb command for @vport
2130 icmd = &elsiocb->iocb; lpfc_issue_els_prli()
2299 * @cmdiocb: pointer to lpfc command iocb data structure.
2300 * @rspiocb: pointer to lpfc response iocb data structure.
2325 irsp = &(rspiocb->iocb); lpfc_cmpl_els_adisc()
2389 * lpfc_issue_els_adisc - Issue an address discover iocb to an node on a vport
2426 icmd = &elsiocb->iocb; lpfc_issue_els_adisc()
2463 * @cmdiocb: pointer to lpfc command iocb data structure.
2464 * @rspiocb: pointer to lpfc response iocb data structure.
2489 irsp = &(rspiocb->iocb); lpfc_cmpl_els_logo()
2591 * This routine constructs and issues an ELS Logout (LOGO) iocb command
2630 icmd = &elsiocb->iocb; lpfc_issue_els_logo()
2681 * @cmdiocb: pointer to lpfc command iocb data structure.
2682 * @rspiocb: pointer to lpfc response iocb data structure.
2701 irsp = &rspiocb->iocb; lpfc_cmpl_els_cmd()
2778 icmd = &elsiocb->iocb; lpfc_issue_els_scr()
2874 icmd = &elsiocb->iocb; lpfc_issue_els_farpr()
2923 * lpfc_cancel_retry_delay_tmo - Cancel the timer with delayed iocb-cmd retry
3092 * lpfc_els_retry - Make retry decision on an els command iocb
3094 * @cmdiocb: pointer to lpfc command iocb data structure.
3095 * @rspiocb: pointer to lpfc response iocb data structure.
3118 IOCB_t *irsp = &rspiocb->iocb; lpfc_els_retry()
3470 * lpfc_els_free_data - Free lpfc dma buffer and data structure with an iocb
3522 * lpfc_els_free_iocb - Free a command iocb and its associated resources
3524 * @elsiocb: pointer to lpfc els command iocb data structure.
3617 * @cmdiocb: pointer to lpfc command iocb data structure.
3618 * @rspiocb: pointer to lpfc response iocb data structure.
3639 irsp = &rspiocb->iocb; lpfc_cmpl_els_logo_acc()
3728 * lpfc_cmpl_els_rsp - Completion callback function for els response iocb cmd
3730 * @cmdiocb: pointer to lpfc command iocb data structure.
3731 * @rspiocb: pointer to lpfc response iocb data structure.
3756 irsp = &rspiocb->iocb; lpfc_cmpl_els_rsp()
3800 cmdiocb->iocb.un.elsreq64.remoteID); lpfc_cmpl_els_rsp()
3805 cmdiocb->iocb.ulpIoTag, rspiocb->iocb.ulpStatus, lpfc_cmpl_els_rsp()
3806 rspiocb->iocb.un.ulpWord[4], rspiocb->iocb.ulpTimeout, lpfc_cmpl_els_rsp()
3810 if ((rspiocb->iocb.ulpStatus == 0) lpfc_cmpl_els_rsp()
3899 * lpfc_els_rsp_acc - Prepare and issue an acc response iocb command
3902 * @oldiocb: pointer to the original lpfc command iocb data structure.
3940 oldcmd = &oldiocb->iocb; lpfc_els_rsp_acc()
3954 icmd = &elsiocb->iocb; lpfc_els_rsp_acc()
3972 icmd = &elsiocb->iocb; lpfc_els_rsp_acc()
3995 icmd = &elsiocb->iocb; lpfc_els_rsp_acc()
4018 elsiocb->iotag, elsiocb->iocb.ulpContext, lpfc_els_rsp_acc()
4040 * lpfc_els_rsp_reject - Propare and issue a rjt response iocb command
4043 * @oldiocb: pointer to the original lpfc command iocb data structure.
4082 icmd = &elsiocb->iocb; lpfc_els_rsp_reject()
4083 oldcmd = &oldiocb->iocb; lpfc_els_rsp_reject()
4101 elsiocb->iocb.ulpContext, ndlp->nlp_DID, lpfc_els_rsp_reject()
4119 * lpfc_els_rsp_adisc_acc - Prepare and issue acc response to adisc iocb cmd
4121 * @oldiocb: pointer to the original lpfc command iocb data structure.
4155 icmd = &elsiocb->iocb; lpfc_els_rsp_adisc_acc()
4156 oldcmd = &oldiocb->iocb; lpfc_els_rsp_adisc_acc()
4164 elsiocb->iotag, elsiocb->iocb.ulpContext, lpfc_els_rsp_adisc_acc()
4193 * lpfc_els_rsp_prli_acc - Prepare and issue acc response to prli iocb cmd
4195 * @oldiocb: pointer to the original lpfc command iocb data structure.
4234 icmd = &elsiocb->iocb; lpfc_els_rsp_prli_acc()
4235 oldcmd = &oldiocb->iocb; lpfc_els_rsp_prli_acc()
4243 elsiocb->iotag, elsiocb->iocb.ulpContext, lpfc_els_rsp_prli_acc()
4291 * lpfc_els_rsp_rnid_acc - Issue rnid acc response iocb command
4294 * @oldiocb: pointer to the original lpfc command iocb data structure.
4340 icmd = &elsiocb->iocb; lpfc_els_rsp_rnid_acc()
4341 oldcmd = &oldiocb->iocb; lpfc_els_rsp_rnid_acc()
4348 elsiocb->iotag, elsiocb->iocb.ulpContext); lpfc_els_rsp_rnid_acc()
4395 * @iocb: pointer to the lpfc command iocb data structure.
4402 struct lpfc_iocbq *iocb, struct lpfc_nodelist *ndlp) lpfc_els_clear_rrq()
4412 pcmd = (uint8_t *) (((struct lpfc_dmabuf *) iocb->context2)->virt); lpfc_els_clear_rrq()
4424 iocb->iotag, iocb->iocb.ulpContext); lpfc_els_clear_rrq()
4443 * @oldiocb: pointer to the original lpfc command iocb data structure.
4462 cmdsize = oldiocb->iocb.unsli3.rcvsli3.acc_len; lpfc_els_rsp_echo_acc()
4474 elsiocb->iocb.ulpContext = oldiocb->iocb.ulpContext; /* Xri / rx_id */ lpfc_els_rsp_echo_acc()
4475 elsiocb->iocb.unsli3.rcvsli3.ox_id = oldiocb->iocb.unsli3.rcvsli3.ox_id; lpfc_els_rsp_echo_acc()
4480 elsiocb->iotag, elsiocb->iocb.ulpContext); lpfc_els_rsp_echo_acc()
4766 * @cmdiocb: pointer to lpfc command iocb data structure.
4807 * lpfc_els_rcv_rscn - Process an unsolicited rscn iocb
4809 * @cmdiocb: pointer to lpfc command iocb data structure.
4842 icmd = &cmdiocb->iocb; lpfc_els_rcv_rscn()
5091 * lpfc_els_rcv_flogi - Process an unsolicited flogi iocb
5093 * @cmdiocb: pointer to lpfc command iocb data structure.
5123 IOCB_t *icmd = &cmdiocb->iocb; lpfc_els_rcv_flogi()
5277 * lpfc_els_rcv_rnid - Process an unsolicited rnid iocb
5279 * @cmdiocb: pointer to lpfc command iocb data structure.
5290 * 0 - Successfully processed rnid iocb (currently always return 0)
5303 icmd = &cmdiocb->iocb; lpfc_els_rcv_rnid()
5331 * lpfc_els_rcv_echo - Process an unsolicited echo iocb
5333 * @cmdiocb: pointer to lpfc command iocb data structure.
5337 * 0 - Successfully processed echo iocb (currently always return 0)
5355 * lpfc_els_rcv_lirr - Process an unsolicited lirr iocb
5357 * @cmdiocb: pointer to lpfc command iocb data structure.
5365 * 0 - Successfully processed lirr iocb (currently always return 0)
5383 * lpfc_els_rcv_rrq - Process an unsolicited rrq iocb
5385 * @cmdiocb: pointer to lpfc command iocb data structure.
5465 icmd = &elsiocb->iocb; lpfc_els_rsp_rls_acc()
5485 elsiocb->iotag, elsiocb->iocb.ulpContext, lpfc_els_rsp_rls_acc()
5552 icmd = &elsiocb->iocb; lpfc_els_rsp_rps_acc()
5580 elsiocb->iotag, elsiocb->iocb.ulpContext, lpfc_els_rsp_rps_acc()
5591 * lpfc_els_rcv_rls - Process an unsolicited rls iocb
5593 * @cmdiocb: pointer to lpfc command iocb data structure.
5606 * 0 - Successfully processed rls iocb (currently always return 0)
5628 ((cmdiocb->iocb.unsli3.rcvsli3.ox_id << 16) | lpfc_els_rcv_rls()
5629 cmdiocb->iocb.ulpContext)); /* rx_id */ lpfc_els_rcv_rls()
5654 * lpfc_els_rcv_rtv - Process an unsolicited rtv iocb
5656 * @cmdiocb: pointer to lpfc command iocb data structure.
5672 * 0 - Successfully processed rtv iocb (currently always return 0)
5704 elsiocb->iocb.ulpContext = cmdiocb->iocb.ulpContext; /* Xri / rx_id */ lpfc_els_rcv_rtv()
5705 elsiocb->iocb.unsli3.rcvsli3.ox_id = cmdiocb->iocb.unsli3.rcvsli3.ox_id; lpfc_els_rcv_rtv()
5721 elsiocb->iotag, elsiocb->iocb.ulpContext, lpfc_els_rcv_rtv()
5741 /* lpfc_els_rcv_rps - Process an unsolicited rps iocb
5743 * @cmdiocb: pointer to lpfc command iocb data structure.
5756 * 0 - Successfully processed rps iocb (currently always return 0)
5791 ((cmdiocb->iocb.unsli3.rcvsli3.ox_id << 16) | lpfc_els_rcv_rps()
5792 cmdiocb->iocb.ulpContext)); /* rx_id */ lpfc_els_rcv_rps()
5818 /* lpfc_issue_els_rrq - Process an unsolicited rps iocb
5828 * 0 - Successfully sent rrq els iocb.
5829 * 1 - Failed to send rrq els iocb.
5856 icmd = &elsiocb->iocb; lpfc_issue_els_rrq()
5913 * @oldiocb: pointer to the original lpfc command iocb data structure.
5944 icmd = &elsiocb->iocb; lpfc_els_rsp_rpl_acc()
5945 oldcmd = &oldiocb->iocb; lpfc_els_rsp_rpl_acc()
5968 elsiocb->iotag, elsiocb->iocb.ulpContext, lpfc_els_rsp_rpl_acc()
5982 * lpfc_els_rcv_rpl - Process an unsolicited rpl iocb
5984 * @cmdiocb: pointer to lpfc command iocb data structure.
5995 * 0 - Successfully processed rpl iocb (currently always return 0)
6042 * @cmdiocb: pointer to lpfc command iocb data structure.
6073 icmd = &cmdiocb->iocb; lpfc_els_rcv_farp()
6123 * lpfc_els_rcv_farpr - Process an unsolicited farp response iocb
6125 * @cmdiocb: pointer to lpfc command iocb data structure.
6145 icmd = &cmdiocb->iocb; lpfc_els_rcv_farpr()
6161 * lpfc_els_rcv_fan - Process an unsolicited fan iocb command
6163 * @cmdiocb: pointer to lpfc command iocb data structure.
6177 * 0 - Successfully processed fan iocb (currently always return 0).
6285 cmd = &piocb->iocb; lpfc_els_timeout_handler()
6288 piocb->iocb.ulpCommand == CMD_ABORT_XRI_CN || lpfc_els_timeout_handler()
6289 piocb->iocb.ulpCommand == CMD_CLOSE_XRI_CN) lpfc_els_timeout_handler()
6328 cmd = &piocb->iocb; lpfc_els_timeout_handler()
6396 /* Abort each iocb on the aborted list and remove the dlist links. */ lpfc_els_flush_cmd()
6413 cmd = &piocb->iocb; lpfc_els_flush_cmd()
6473 * @cmdiocbp: Pointer to command iocb which reported error.
6474 * @rspiocbp: Pointer to response iocb which reported error.
6496 if (rspiocbp->iocb.ulpStatus == IOSTAT_LS_RJT) { lpfc_send_els_failure_event()
6506 stat.un.lsRjtError = be32_to_cpu(rspiocbp->iocb.un.ulpWord[4]); lpfc_send_els_failure_event()
6516 if ((rspiocbp->iocb.ulpStatus == IOSTAT_NPORT_BSY) || lpfc_send_els_failure_event()
6517 (rspiocbp->iocb.ulpStatus == IOSTAT_FABRIC_BSY)) { lpfc_send_els_failure_event()
6519 if (rspiocbp->iocb.ulpStatus == IOSTAT_NPORT_BSY) lpfc_send_els_failure_event()
6622 * @elsiocb: pointer to lpfc els command iocb data structure.
6641 IOCB_t *icmd = &elsiocb->iocb; lpfc_els_unsol_buffer()
6739 vport->fc_myDID = elsiocb->iocb.un.rcvels.parmRo; lpfc_els_unsol_buffer()
7024 * @elsiocb: pointer to lpfc els iocb data structure.
7029 * lpfc_els_unsol_buffer() after properly set up the iocb buffer from the
7037 IOCB_t *icmd = &elsiocb->iocb; lpfc_els_unsol_event()
7436 * @cmdiocb: pointer to FDISC command iocb.
7437 * @rspiocb: pointer to FDISC response iocb.
7448 if ((rspiocb->iocb.ulpStatus != IOSTAT_FABRIC_RJT) || lpfc_fabric_login_reqd()
7449 (rspiocb->iocb.un.ulpWord[4] != RJT_LOGIN_REQUIRED)) lpfc_fabric_login_reqd()
7456 * lpfc_cmpl_els_fdisc - Completion function for fdisc iocb command
7458 * @cmdiocb: pointer to lpfc command iocb data structure.
7459 * @rspiocb: pointer to lpfc response iocb data structure.
7484 IOCB_t *irsp = &rspiocb->iocb; lpfc_cmpl_els_fdisc()
7598 * lpfc_issue_els_fdisc - Issue a fdisc iocb command
7614 * 0 - Successfully issued fdisc iocb command
7615 * 1 - Failed to issue fdisc iocb command
7642 icmd = &elsiocb->iocb; lpfc_issue_els_fdisc()
7701 * @cmdiocb: pointer to lpfc command iocb data structure.
7702 * @rspiocb: pointer to lpfc response iocb data structure.
7722 irsp = &rspiocb->iocb; lpfc_cmpl_els_npiv_logo()
7779 icmd = &elsiocb->iocb; lpfc_issue_els_npiv_logo()
7812 * This routine is invoked by the fabric iocb block timer after
7813 * timeout. It posts the fabric iocb block timeout event by setting the
7838 * lpfc_resume_fabric_iocbs - Issue a fabric iocb from driver internal list
7841 * This routine issues one fabric iocb from the driver internal list to
7842 * the HBA. It first checks whether it's ready to issue one fabric iocb to
7843 * the HBA (whether there is no outstanding fabric iocb). If so, it shall
7844 * remove one pending fabric iocb from the driver internal list and invokes
7845 * lpfc_sli_issue_iocb() routine to send the fabric iocb to the HBA.
7850 struct lpfc_iocbq *iocb; lpfc_resume_fabric_iocbs() local
7856 iocb = NULL; lpfc_resume_fabric_iocbs()
7858 /* Post any pending iocb to the SLI layer */ lpfc_resume_fabric_iocbs()
7860 list_remove_head(&phba->fabric_iocb_list, iocb, typeof(*iocb), lpfc_resume_fabric_iocbs()
7862 if (iocb) lpfc_resume_fabric_iocbs()
7863 /* Increment fabric iocb count to hold the position */ lpfc_resume_fabric_iocbs()
7867 if (iocb) { lpfc_resume_fabric_iocbs()
7868 iocb->fabric_iocb_cmpl = iocb->iocb_cmpl; lpfc_resume_fabric_iocbs()
7869 iocb->iocb_cmpl = lpfc_cmpl_fabric_iocb; lpfc_resume_fabric_iocbs()
7870 iocb->iocb_flag |= LPFC_IO_FABRIC; lpfc_resume_fabric_iocbs()
7872 lpfc_debugfs_disc_trc(iocb->vport, LPFC_DISC_TRC_ELS_CMD, lpfc_resume_fabric_iocbs()
7874 iocb->vport->port_state, 0, 0); lpfc_resume_fabric_iocbs()
7876 ret = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, iocb, 0); lpfc_resume_fabric_iocbs()
7879 iocb->iocb_cmpl = iocb->fabric_iocb_cmpl; lpfc_resume_fabric_iocbs()
7880 iocb->fabric_iocb_cmpl = NULL; lpfc_resume_fabric_iocbs()
7881 iocb->iocb_flag &= ~LPFC_IO_FABRIC; lpfc_resume_fabric_iocbs()
7882 cmd = &iocb->iocb; lpfc_resume_fabric_iocbs()
7885 iocb->iocb_cmpl(phba, iocb, iocb); lpfc_resume_fabric_iocbs()
7896 * lpfc_unblock_fabric_iocbs - Unblock issuing fabric iocb command
7899 * This routine unblocks the issuing fabric iocb command. The function
7900 * will clear the fabric iocb block bit and then invoke the routine
7901 * lpfc_resume_fabric_iocbs() to issue one of the pending fabric iocb
7902 * from the driver internal fabric iocb list.
7914 * lpfc_block_fabric_iocbs - Block issuing fabric iocb command
7917 * This routine blocks the issuing fabric iocb for a specified amount of
7918 * time (currently 100 ms). This is done by set the fabric iocb block bit
7920 * fabric iocb will be issued out of the HBA.
7937 * lpfc_cmpl_fabric_iocb - Completion callback function for fabric iocb
7939 * @cmdiocb: pointer to lpfc command iocb data structure.
7940 * @rspiocb: pointer to lpfc response iocb data structure.
7942 * This routine is the callback function that is put to the fabric iocb's
7943 * callback function pointer (iocb->iocb_cmpl). The original iocb's callback
7944 * function pointer has been stored in iocb->fabric_iocb_cmpl. This callback
7945 * function first restores and invokes the original iocb's callback function
7947 * fabric bound iocb from the driver internal fabric iocb list onto the wire.
7958 switch (rspiocb->iocb.ulpStatus) { lpfc_cmpl_fabric_iocb()
7961 if (rspiocb->iocb.un.ulpWord[4] & RJT_UNAVAIL_TEMP) { lpfc_cmpl_fabric_iocb()
7973 be32_to_cpu(rspiocb->iocb.un.ulpWord[4]); lpfc_cmpl_fabric_iocb()
7996 * lpfc_issue_fabric_iocb - Issue a fabric iocb command
7998 * @iocb: pointer to lpfc command iocb data structure.
8000 * This routine is used as the top-level API for issuing a fabric iocb command
8002 * function makes sure that only one fabric bound iocb will be outstanding at
8004 * is already an outstanding fabric iocb on the wire. If so, it will put the
8005 * newly issued iocb onto the driver internal fabric iocb list, waiting to be
8006 * issued later. Otherwise, it will issue the iocb on the wire and update the
8007 * fabric iocb count it indicate that there is one fabric iocb on the wire.
8016 * IOCB_SUCCESS - either fabric iocb put on the list or issued successfully
8017 * IOCB_ERROR - failed to issue fabric iocb
8020 lpfc_issue_fabric_iocb(struct lpfc_hba *phba, struct lpfc_iocbq *iocb) lpfc_issue_fabric_iocb() argument
8034 /* Increment fabric iocb count to hold the position */ lpfc_issue_fabric_iocb()
8038 iocb->fabric_iocb_cmpl = iocb->iocb_cmpl; lpfc_issue_fabric_iocb()
8039 iocb->iocb_cmpl = lpfc_cmpl_fabric_iocb; lpfc_issue_fabric_iocb()
8040 iocb->iocb_flag |= LPFC_IO_FABRIC; lpfc_issue_fabric_iocb()
8042 lpfc_debugfs_disc_trc(iocb->vport, LPFC_DISC_TRC_ELS_CMD, lpfc_issue_fabric_iocb()
8044 iocb->vport->port_state, 0, 0); lpfc_issue_fabric_iocb()
8046 ret = lpfc_sli_issue_iocb(phba, LPFC_ELS_RING, iocb, 0); lpfc_issue_fabric_iocb()
8049 iocb->iocb_cmpl = iocb->fabric_iocb_cmpl; lpfc_issue_fabric_iocb()
8050 iocb->fabric_iocb_cmpl = NULL; lpfc_issue_fabric_iocb()
8051 iocb->iocb_flag &= ~LPFC_IO_FABRIC; lpfc_issue_fabric_iocb()
8056 list_add_tail(&iocb->list, &phba->fabric_iocb_list); lpfc_issue_fabric_iocb()
8064 * lpfc_fabric_abort_vport - Abort a vport's iocbs from driver fabric iocb list
8097 * lpfc_fabric_abort_nport - Abort a ndlp's iocbs from driver fabric iocb list
8130 * lpfc_fabric_abort_hba - Abort all iocbs on driver fabric iocb list
4401 lpfc_els_clear_rrq(struct lpfc_vport *vport, struct lpfc_iocbq *iocb, struct lpfc_nodelist *ndlp) lpfc_els_clear_rrq() argument
H A Dlpfc_bsg.c100 struct fc_bsg_job *set_job; /* job waiting for this iocb to finish */
103 struct lpfc_bsg_iocb iocb; member in union:bsg_job_data::__anon9070
280 * @cmdiocbq: Pointer to command iocb.
281 * @rspiocbq: Pointer to response iocb.
289 * This function copies the contents of the response iocb to the
290 * response iocb memory object provided by the caller of
292 * sleeps for the iocb completion.
304 struct lpfc_bsg_iocb *iocb; lpfc_bsg_send_mgmt_cmd_cmp() local
325 iocb = &dd_data->context_un.iocb; lpfc_bsg_send_mgmt_cmd_cmp()
326 ndlp = iocb->ndlp; lpfc_bsg_send_mgmt_cmd_cmp()
327 rmp = iocb->rmp; lpfc_bsg_send_mgmt_cmd_cmp()
330 rsp = &rspiocbq->iocb; lpfc_bsg_send_mgmt_cmd_cmp()
428 cmd = &cmdiocbq->iocb; lpfc_bsg_send_mgmt_cmd()
494 dd_data->context_un.iocb.cmdiocbq = cmdiocbq; lpfc_bsg_send_mgmt_cmd()
495 dd_data->context_un.iocb.ndlp = ndlp; lpfc_bsg_send_mgmt_cmd()
496 dd_data->context_un.iocb.rmp = rmp; lpfc_bsg_send_mgmt_cmd()
526 /* iocb failed so cleanup */ lpfc_bsg_send_mgmt_cmd()
553 * @cmdiocbq: Pointer to command iocb.
554 * @rspiocbq: Pointer to response iocb.
562 * This function copies the contents of the response iocb to the
563 * response iocb memory object provided by the caller of
565 * sleeps for the iocb completion.
584 ndlp = dd_data->context_un.iocb.ndlp; lpfc_bsg_rport_els_cmp()
601 rsp = &rspiocbq->iocb; lpfc_bsg_rport_els_cmp()
695 /* We will use the allocated dma buffers by prep els iocb for command lpfc_bsg_rport_els()
718 cmdiocbq->iocb.ulpContext = phba->sli4_hba.rpi_ids[rpi]; lpfc_bsg_rport_els()
720 cmdiocbq->iocb.ulpContext = rpi; lpfc_bsg_rport_els()
727 dd_data->context_un.iocb.cmdiocbq = cmdiocbq; lpfc_bsg_rport_els()
728 dd_data->context_un.iocb.ndlp = ndlp; lpfc_bsg_rport_els()
729 dd_data->context_un.iocb.rmp = NULL; lpfc_bsg_rport_els()
759 /* iocb failed so cleanup */ lpfc_bsg_rport_els()
929 if (piocbq->iocb.ulpBdeCount == 0 || lpfc_bsg_ct_unsol_event()
930 piocbq->iocb.un.cont64[0].tus.f.bdeSize == 0) lpfc_bsg_ct_unsol_event()
940 dma_addr = getPaddr(piocbq->iocb.un.cont64[0].addrHigh, lpfc_bsg_ct_unsol_event()
941 piocbq->iocb.un.cont64[0].addrLow); lpfc_bsg_ct_unsol_event()
974 evt_dat->len = iocbq->iocb.unsli3.rcvsli3.acc_len; lpfc_bsg_ct_unsol_event()
977 for (i = 0; i < iocbq->iocb.ulpBdeCount; i++) lpfc_bsg_ct_unsol_event()
979 iocbq->iocb.un.cont64[i].tus.f.bdeSize; lpfc_bsg_ct_unsol_event()
1002 for (i = 0; i < iocbq->iocb.ulpBdeCount; i++) { lpfc_bsg_ct_unsol_event()
1007 &iocbq->iocb.un.ulpWord[0]; lpfc_bsg_ct_unsol_event()
1012 &iocbq->iocb.unsli3. lpfc_bsg_ct_unsol_event()
1020 size = iocbq->iocb.un.cont64[i]. lpfc_bsg_ct_unsol_event()
1022 bde = &iocbq->iocb.un.cont64[i]; lpfc_bsg_ct_unsol_event()
1101 piocbq->iocb.ulpContext; lpfc_bsg_ct_unsol_event()
1103 piocbq->iocb.unsli3.rcvsli3.ox_id; lpfc_bsg_ct_unsol_event()
1105 piocbq->iocb.un.rcvels.remoteID; lpfc_bsg_ct_unsol_event()
1108 evt_dat->immed_dat = piocbq->iocb.ulpContext; lpfc_bsg_ct_unsol_event()
1365 * @cmdiocbq: Pointer to command iocb.
1366 * @rspiocbq: Pointer to response iocb.
1374 * This function copy the contents of the response iocb to the
1375 * response iocb memory object provided by the caller of
1377 * sleeps for the iocb completion.
1408 ndlp = dd_data->context_un.iocb.ndlp; lpfc_issue_ct_rsp_cmp()
1411 rsp = &rspiocbq->iocb; lpfc_issue_ct_rsp_cmp()
1483 /* Allocate buffer for command iocb */ lpfc_issue_ct_rsp()
1490 icmd = &ctiocb->iocb; lpfc_issue_ct_rsp()
1501 /* Fill in rest of iocb */ lpfc_issue_ct_rsp()
1564 dd_data->context_un.iocb.cmdiocbq = ctiocb; lpfc_issue_ct_rsp()
1565 dd_data->context_un.iocb.ndlp = ndlp; lpfc_issue_ct_rsp()
1566 dd_data->context_un.iocb.rmp = NULL; lpfc_issue_ct_rsp()
1592 /* iocb failed so cleanup */ lpfc_issue_ct_rsp()
2590 cmd = &cmdiocbq->iocb; lpfcdiag_loop_get_xri()
2591 rsp = &rspiocbq->iocb; lpfcdiag_loop_get_xri()
2881 cmd = &cmdiocbq->iocb; lpfcdiag_loop_post_rxbufs()
2941 /* The iocb was freed by lpfc_sli_issue_iocb */ lpfcdiag_loop_post_rxbufs()
2949 cmd = &cmdiocbq->iocb; lpfcdiag_loop_post_rxbufs()
2980 * 7. The cmd iocb FsType is set to elx loopback and the CmdRsp to looppback.
3138 cmd = &cmdiocbq->iocb; lpfc_bsg_diag_loopback_run()
3140 rsp = &rspiocbq->iocb; lpfc_bsg_diag_loopback_run()
3169 /* Build the XMIT_SEQUENCE iocb */ lpfc_bsg_diag_loopback_run()
3208 "3126 Failed loopback test issue iocb: " lpfc_bsg_diag_loopback_run()
4935 * @cmdiocbq: Pointer to command iocb.
4936 * @rspiocbq: Pointer to response iocb.
4944 * This function copies the contents of the response iocb to the
4945 * response iocb memory object provided by the caller of
4947 * sleeps for the iocb completion.
4969 rsp = &rspiocbq->iocb; lpfc_bsg_menlo_cmd_cmp()
5143 cmd = &cmdiocbq->iocb; lpfc_menlo_cmd()
5338 cmdiocb = dd_data->context_un.iocb.cmdiocbq; lpfc_bsg_timeout()
H A Dlpfc_scsi.c389 IOCB_t *iocb; lpfc_new_scsi_buf_s3() local
470 iocb = &psb->cur_iocbq.iocb; lpfc_new_scsi_buf_s3()
471 iocb->un.fcpi64.bdl.ulpIoTag32 = 0; lpfc_new_scsi_buf_s3()
475 iocb->un.fcpi64.bdl.bdeFlags = BUFF_TYPE_BDE_IMMED; lpfc_new_scsi_buf_s3()
476 iocb->un.fcpi64.bdl.bdeSize = sizeof(struct fcp_cmnd); lpfc_new_scsi_buf_s3()
477 iocb->un.fcpi64.bdl.addrLow = offsetof(IOCB_t, lpfc_new_scsi_buf_s3()
479 iocb->un.fcpi64.bdl.addrHigh = 0; lpfc_new_scsi_buf_s3()
480 iocb->ulpBdeCount = 0; lpfc_new_scsi_buf_s3()
481 iocb->ulpLe = 0; lpfc_new_scsi_buf_s3()
483 iocb->unsli3.fcp_ext.rbde.tus.f.bdeFlags = lpfc_new_scsi_buf_s3()
485 iocb->unsli3.fcp_ext.rbde.tus.f.bdeSize = lpfc_new_scsi_buf_s3()
487 iocb->unsli3.fcp_ext.rbde.addrLow = lpfc_new_scsi_buf_s3()
489 iocb->unsli3.fcp_ext.rbde.addrHigh = lpfc_new_scsi_buf_s3()
492 iocb->un.fcpi64.bdl.bdeFlags = BUFF_TYPE_BLP_64; lpfc_new_scsi_buf_s3()
493 iocb->un.fcpi64.bdl.bdeSize = lpfc_new_scsi_buf_s3()
495 iocb->un.fcpi64.bdl.addrLow = lpfc_new_scsi_buf_s3()
497 iocb->un.fcpi64.bdl.addrHigh = lpfc_new_scsi_buf_s3()
499 iocb->ulpBdeCount = 1; lpfc_new_scsi_buf_s3()
500 iocb->ulpLe = 1; lpfc_new_scsi_buf_s3()
502 iocb->ulpClass = CLASS3; lpfc_new_scsi_buf_s3()
795 IOCB_t *iocb; lpfc_new_scsi_buf_s4() local
904 iocb = &psb->cur_iocbq.iocb; lpfc_new_scsi_buf_s4()
905 iocb->un.fcpi64.bdl.ulpIoTag32 = 0; lpfc_new_scsi_buf_s4()
906 iocb->un.fcpi64.bdl.bdeFlags = BUFF_TYPE_BDE_64; lpfc_new_scsi_buf_s4()
911 iocb->un.fcpi64.bdl.bdeSize = sizeof(struct fcp_cmnd); lpfc_new_scsi_buf_s4()
912 iocb->un.fcpi64.bdl.addrLow = putPaddrLow(pdma_phys_fcp_cmd); lpfc_new_scsi_buf_s4()
913 iocb->un.fcpi64.bdl.addrHigh = putPaddrHigh(pdma_phys_fcp_cmd); lpfc_new_scsi_buf_s4()
914 iocb->ulpBdeCount = 1; lpfc_new_scsi_buf_s4()
915 iocb->ulpLe = 1; lpfc_new_scsi_buf_s4()
916 iocb->ulpClass = CLASS3; lpfc_new_scsi_buf_s4()
1154 IOCB_t *iocb_cmd = &lpfc_cmd->cur_iocbq.iocb; lpfc_scsi_prep_dma_buf_s3()
1229 * explicitly reinitialized since all iocb memory resources are reused.
2711 IOCB_t *iocb_cmd = &lpfc_cmd->cur_iocbq.iocb; lpfc_bg_scsi_prep_dma_buf_s3()
2804 * reinitialized since all iocb memory resources are used many times lpfc_bg_scsi_prep_dma_buf_s3()
3067 struct sli3_bg_fields *bgf = &pIocbOut->iocb.unsli3.sli3_bg; lpfc_parse_bg_err()
3237 IOCB_t *iocb_cmd = &lpfc_cmd->cur_iocbq.iocb; lpfc_scsi_prep_dma_buf_s4()
3330 * all iocb memory resources are reused.
3342 * OAS, set the oas iocb related flags.
3366 IOCB_t *iocb_cmd = &lpfc_cmd->cur_iocbq.iocb; lpfc_bg_scsi_prep_dma_buf_s4()
3488 * OAS, set the oas iocb related flags. lpfc_bg_scsi_prep_dma_buf_s4()
3557 * @rsp_iocb: Pointer to response iocb object which reported error.
3569 uint32_t fcpi_parm = rsp_iocb->iocb.un.fcpi.fcpi_parm; lpfc_send_scsi_error_event()
3689 uint32_t fcpi_parm = rsp_iocb->iocb.un.fcpi.fcpi_parm; lpfc_handle_fcp_err()
3882 lpfc_cmd->result = (pIocbOut->iocb.un.ulpWord[4] & IOERR_PARAM_MASK); lpfc_scsi_cmd_iocb_cmpl()
3883 lpfc_cmd->status = pIocbOut->iocb.ulpStatus; lpfc_scsi_cmd_iocb_cmpl()
3947 pIocbOut->iocb.ulpContext, lpfc_scsi_cmd_iocb_cmpl()
3948 lpfc_cmd->cur_iocbq.iocb.ulpIoTag); lpfc_scsi_cmd_iocb_cmpl()
4003 pIocbOut->iocb.unsli3.sli3_bg.bgstat) { lpfc_scsi_cmd_iocb_cmpl()
4153 * This routine initializes fcp_cmnd and iocb data structure from scsi command
4163 IOCB_t *iocb_cmd = &lpfc_cmd->cur_iocbq.iocb; lpfc_scsi_prep_cmnd()
4190 piocbq->iocb.un.fcpi.fcpi_XRdy = 0; lpfc_scsi_prep_cmnd()
4206 piocbq->iocb.un.fcpi.fcpi_XRdy = fcpdl; lpfc_scsi_prep_cmnd()
4208 piocbq->iocb.un.fcpi.fcpi_XRdy = lpfc_scsi_prep_cmnd()
4233 piocbq->iocb.ulpContext = pnode->nlp_rpi; lpfc_scsi_prep_cmnd()
4235 piocbq->iocb.ulpContext = lpfc_scsi_prep_cmnd()
4238 piocbq->iocb.ulpFCP2Rcvy = 1; lpfc_scsi_prep_cmnd()
4240 piocbq->iocb.ulpFCP2Rcvy = 0; lpfc_scsi_prep_cmnd()
4242 piocbq->iocb.ulpClass = (pnode->nlp_fcp_info & 0x0f); lpfc_scsi_prep_cmnd()
4245 piocbq->iocb.ulpTimeout = lpfc_cmd->timeout; lpfc_scsi_prep_cmnd()
4282 piocb = &piocbq->iocb; lpfc_scsi_prep_task_mgmt_cmd()
4604 lpfc_cmd->cur_iocbq.iocb.ulpContext, lpfc_queuecommand()
4605 lpfc_cmd->cur_iocbq.iocb.ulpIoTag, lpfc_queuecommand()
4606 lpfc_cmd->cur_iocbq.iocb.ulpTimeout, lpfc_queuecommand()
4654 struct lpfc_iocbq *iocb; lpfc_abort_handler() local
4688 iocb = &lpfc_cmd->cur_iocbq; lpfc_abort_handler()
4690 if (!(iocb->iocb_flag & LPFC_IO_ON_TXCMPLQ)) { lpfc_abort_handler()
4710 BUG_ON(iocb->context1 != lpfc_cmd); lpfc_abort_handler()
4713 if (iocb->iocb_flag & LPFC_DRIVER_ABORTED) { lpfc_abort_handler()
4727 iocb->iocb_flag |= LPFC_DRIVER_ABORTED; lpfc_abort_handler()
4735 cmd = &iocb->iocb; lpfc_abort_handler()
4736 icmd = &abtsiocb->iocb; lpfc_abort_handler()
4740 icmd->un.acxri.abortIoTag = iocb->sli4_xritag; lpfc_abort_handler()
4748 abtsiocb->fcp_wqidx = iocb->fcp_wqidx; lpfc_abort_handler()
4750 if (iocb->iocb_flag & LPFC_IO_FOF) lpfc_abort_handler()
4761 ring_number = MAX_SLI3_CONFIGURED_RINGS + iocb->fcp_wqidx; lpfc_abort_handler()
4803 iocb->sli4_xritag, ret, lpfc_abort_handler()
4970 (iocbqrsp->iocb.ulpStatus != IOSTAT_SUCCESS)) { lpfc_send_taskmgmt()
4975 tgt_id, lun_id, iocbqrsp->iocb.ulpStatus, lpfc_send_taskmgmt()
4976 iocbqrsp->iocb.un.ulpWord[4], lpfc_send_taskmgmt()
4980 if (iocbqrsp->iocb.ulpStatus == IOSTAT_FCP_RSP_ERROR) lpfc_send_taskmgmt()
H A Dlpfc_sli.h59 IOCB_t iocb; /* IOCB cmd */ member in struct:lpfc_iocbq
62 #define LPFC_IO_LIBDFC 1 /* libdfc iocb */
177 uint16_t numCiocb; /* number of command iocb's per ring */
178 uint16_t numRiocb; /* number of rsp iocb's per ring */
179 uint16_t sizeCiocb; /* Size of command iocb's in this ring */
180 uint16_t sizeRiocb; /* Size of response iocb's in this ring */
296 #define LPFC_BLOCK_MGMT_IO 0x800 /* Don't allow mgmt mbx or iocb cmds */
H A Dlpfc_ct.c73 piocbq->iocb.ulpStatus); lpfc_ct_ignore_hbq_buffer()
78 size, piocbq->iocb.ulpStatus); lpfc_ct_ignore_hbq_buffer()
93 IOCB_t *icmd = &piocbq->iocb; lpfc_ct_unsol_event()
126 icmd = &iocbq->iocb; lpfc_ct_unsol_event()
148 icmd = &iocbq->iocb; lpfc_ct_unsol_event()
302 /* Allocate buffer for command iocb */ lpfc_gen_req()
308 icmd = &geniocb->iocb; lpfc_gen_req()
328 /* Fill in rest of iocb */ lpfc_gen_req()
592 irsp = &rspiocb->iocb; lpfc_cmpl_ct_cmd_gid_ft()
736 IOCB_t *irsp = &rspiocb->iocb; lpfc_cmpl_ct_cmd_gff_id()
876 irsp = &rspiocb->iocb; lpfc_cmpl_ct()
890 cmdiocb->iocb.ulpContext, cmdiocb->iocb.ulpIoTag); lpfc_cmpl_ct()
930 IOCB_t *irsp = &rspiocb->iocb; lpfc_cmpl_ct_cmd_rft_id()
951 IOCB_t *irsp = &rspiocb->iocb; lpfc_cmpl_ct_cmd_rnn_id()
972 IOCB_t *irsp = &rspiocb->iocb; lpfc_cmpl_ct_cmd_rspn_id()
993 IOCB_t *irsp = &rspiocb->iocb; lpfc_cmpl_ct_cmd_rsnn_nn()
1026 IOCB_t *irsp = &rspiocb->iocb; lpfc_cmpl_ct_cmd_rff_id()
1335 IOCB_t *irsp = &rspiocb->iocb; lpfc_cmpl_ct_cmd_fdmi()
H A Dlpfc_nportdisc.c172 irsp = &rspiocb->iocb; lpfc_check_elscmpl_iocb()
209 struct lpfc_iocbq *iocb, *next_iocb; lpfc_els_abort() local
228 list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, list) { lpfc_els_abort()
230 if (lpfc_check_sli_ndlp(phba, pring, iocb, ndlp)) lpfc_els_abort()
231 list_add_tail(&iocb->dlist, &abort_list); lpfc_els_abort()
238 list_for_each_entry_safe(iocb, next_iocb, &abort_list, dlist) { lpfc_els_abort()
240 list_del_init(&iocb->dlist); lpfc_els_abort()
241 lpfc_sli_issue_abort_iotag(phba, pring, iocb); lpfc_els_abort()
252 list_for_each_entry_safe(iocb, next_iocb, &pring->txq, list) { lpfc_els_abort()
253 /* Check to see if iocb matches the nport we are looking for */ lpfc_els_abort()
254 if (lpfc_check_sli_ndlp(phba, pring, iocb, ndlp)) { lpfc_els_abort()
255 list_del_init(&iocb->list); lpfc_els_abort()
256 list_add_tail(&iocb->list, &abort_list); lpfc_els_abort()
346 icmd = &cmdiocb->iocb; lpfc_rcv_plogi()
563 icmd = &cmdiocb->iocb; lpfc_rcv_padisc()
1047 irsp = &rspiocb->iocb; lpfc_cmpl_plogi_plogi_issue()
1344 irsp = &rspiocb->iocb; lpfc_cmpl_adisc_adisc_issue()
1704 irsp = &rspiocb->iocb; lpfc_cmpl_prli_prli_issue()
2223 irsp = &rspiocb->iocb; lpfc_cmpl_plogi_npr_node()
2243 irsp = &rspiocb->iocb; lpfc_cmpl_prli_npr_node()
2277 irsp = &rspiocb->iocb; lpfc_cmpl_adisc_npr_node()
H A Dlpfc_hbadisc.c4383 * Return true if iocb matches the specified nport
4388 struct lpfc_iocbq *iocb, lpfc_check_sli_ndlp()
4392 IOCB_t *icmd = &iocb->iocb; lpfc_check_sli_ndlp()
4395 if (iocb->vport != vport) lpfc_check_sli_ndlp()
4401 if (iocb->context_un.ndlp == ndlp) lpfc_check_sli_ndlp()
4407 if (iocb->context1 == (uint8_t *) ndlp) lpfc_check_sli_ndlp()
4437 struct lpfc_iocbq *iocb, *next_iocb; lpfc_no_rpi() local
4453 list_for_each_entry_safe(iocb, next_iocb, &pring->txq, lpfc_no_rpi()
4456 * Check to see if iocb matches the nport we are lpfc_no_rpi()
4459 if ((lpfc_check_sli_ndlp(phba, pring, iocb, lpfc_no_rpi()
4463 list_move_tail(&iocb->list, lpfc_no_rpi()
5169 struct lpfc_iocbq *iocb, *next_iocb; lpfc_free_tx() local
5175 /* Error matching iocb on txq or txcmplq lpfc_free_tx()
5179 list_for_each_entry_safe(iocb, next_iocb, &pring->txq, list) { lpfc_free_tx()
5180 if (iocb->context1 != ndlp) { lpfc_free_tx()
5183 icmd = &iocb->iocb; lpfc_free_tx()
5187 list_move_tail(&iocb->list, &completions); lpfc_free_tx()
5192 list_for_each_entry_safe(iocb, next_iocb, &pring->txcmplq, list) { lpfc_free_tx()
5193 if (iocb->context1 != ndlp) { lpfc_free_tx()
5196 icmd = &iocb->iocb; lpfc_free_tx()
5199 lpfc_sli_issue_abort_iotag(phba, pring, iocb); lpfc_free_tx()
4386 lpfc_check_sli_ndlp(struct lpfc_hba *phba, struct lpfc_sli_ring *pring, struct lpfc_iocbq *iocb, struct lpfc_nodelist *ndlp) lpfc_check_sli_ndlp() argument
H A Dlpfc_bsg.h130 uint32_t xri; /* return the xri of the iocb exchange */
H A Dlpfc_hw.h1558 iocb */
3023 uint32_t ring:2; /* Ring for ASYNC_EVENT iocb Bits 0-1*/
3025 uint32_t ring:2; /* Ring for ASYNC_EVENT iocb Bits 0-1*/
3466 /* IOCB Command template for Async Status iocb commands */
3656 ASYNCSTAT_FIELDS asyncstat; /* async_status iocb */
3717 /* words 8-31 used for que_xri_cx iocb */
H A Dlpfc_mem.c336 /* Free the iocb lookup array */ lpfc_mem_free_all()
H A Dlpfc_init.c847 /* Get the response iocb from the head of work queue */ lpfc_sli4_free_sp_events()
1381 * dropped by the firmware. Error iocb (I/O) on txcmplq and let the lpfc_handle_deferred_eratt()
1500 * Error iocb (I/O) on txcmplq and let the SCSI layer lpfc_handle_eratt_s3()
2282 struct lpfc_iocbq *iocb; lpfc_post_buffer() local
2289 /* Allocate buffer for command iocb */ lpfc_post_buffer()
2290 iocb = lpfc_sli_get_iocbq(phba); lpfc_post_buffer()
2291 if (iocb == NULL) { lpfc_post_buffer()
2295 icmd = &iocb->iocb; lpfc_post_buffer()
2304 lpfc_sli_release_iocbq(phba, iocb); lpfc_post_buffer()
2320 lpfc_sli_release_iocbq(phba, iocb); lpfc_post_buffer()
2346 if (lpfc_sli_issue_iocb(phba, pring->ringno, iocb, 0) == lpfc_post_buffer()
2356 lpfc_sli_release_iocbq(phba, iocb); lpfc_post_buffer()
5642 /* Initialize the fabric iocb list */ lpfc_setup_driver_resource_phase1()
5701 * lpfc_free_iocb_list - Free iocb list.
5724 * lpfc_init_iocb_list - Allocate and initialize iocb list.
5741 /* Initialize and populate the iocb list per host. */ lpfc_init_iocb_list()
9553 /* Initialize and populate the iocb list per host */ lpfc_pci_probe_one_s3()
9557 "1405 Failed to initialize iocb list.\n"); lpfc_pci_probe_one_s3()
10323 /* Initialize and populate the iocb list per host */ lpfc_pci_probe_one_s4()
10326 "2821 initialize iocb list %d.\n", lpfc_pci_probe_one_s4()
10332 "1413 Failed to initialize iocb list.\n"); lpfc_pci_probe_one_s4()
H A Dlpfc.h94 #define LPFC_DRVR_TIMEOUT 16 /* driver iocb timeout value in sec */
880 /* Data structure used by fabric iocb scheduler */
H A Dlpfc_crtn.h407 /* Interface exported by fabric iocb scheduler */
/linux-4.1.27/fs/9p/
H A Dvfs_file.c381 v9fs_file_read_iter(struct kiocb *iocb, struct iov_iter *to) v9fs_file_read_iter() argument
383 struct p9_fid *fid = iocb->ki_filp->private_data; v9fs_file_read_iter()
387 iov_iter_count(to), iocb->ki_pos); v9fs_file_read_iter()
389 ret = p9_client_read(fid, iocb->ki_pos, to, &err); v9fs_file_read_iter()
393 iocb->ki_pos += ret; v9fs_file_read_iter()
406 v9fs_file_write_iter(struct kiocb *iocb, struct iov_iter *from) v9fs_file_write_iter() argument
408 struct file *file = iocb->ki_filp; v9fs_file_write_iter()
413 retval = generic_write_checks(iocb, from); v9fs_file_write_iter()
417 origin = iocb->ki_pos; v9fs_file_write_iter()
418 retval = p9_client_write(file->private_data, iocb->ki_pos, from, &err); v9fs_file_write_iter()
428 iocb->ki_pos += retval; v9fs_file_write_iter()
430 if (iocb->ki_pos > i_size) { v9fs_file_write_iter()
431 inode_add_bytes(inode, iocb->ki_pos - i_size); v9fs_file_write_iter()
432 i_size_write(inode, iocb->ki_pos); v9fs_file_write_iter()
574 v9fs_mmap_file_read_iter(struct kiocb *iocb, struct iov_iter *to) v9fs_mmap_file_read_iter() argument
577 return v9fs_file_read_iter(iocb, to); v9fs_mmap_file_read_iter()
589 v9fs_mmap_file_write_iter(struct kiocb *iocb, struct iov_iter *from) v9fs_mmap_file_write_iter() argument
595 return v9fs_file_write_iter(iocb, from); v9fs_mmap_file_write_iter()
H A Dvfs_addr.c233 * @iocb: target I/O control block
248 v9fs_direct_IO(struct kiocb *iocb, struct iov_iter *iter, loff_t pos) v9fs_direct_IO() argument
250 struct file *file = iocb->ki_filp; v9fs_direct_IO()
/linux-4.1.27/fs/udf/
H A Dfile.c102 static ssize_t udf_adinicb_direct_IO(struct kiocb *iocb, struct iov_iter *iter, udf_adinicb_direct_IO() argument
117 static ssize_t udf_file_write_iter(struct kiocb *iocb, struct iov_iter *from) udf_file_write_iter() argument
120 struct file *file = iocb->ki_filp; udf_file_write_iter()
127 retval = generic_write_checks(iocb, from); udf_file_write_iter()
133 loff_t end = iocb->ki_pos + iov_iter_count(from); udf_file_write_iter()
150 retval = __generic_file_write_iter(iocb, from); udf_file_write_iter()
158 err = generic_write_sync(file, iocb->ki_pos - retval, retval); udf_file_write_iter()
H A Dinode.c217 static ssize_t udf_direct_IO(struct kiocb *iocb, struct iov_iter *iter, udf_direct_IO() argument
220 struct file *file = iocb->ki_filp; udf_direct_IO()
226 ret = blockdev_direct_IO(iocb, inode, iter, offset, udf_get_block); udf_direct_IO()
/linux-4.1.27/fs/xfs/
H A Dxfs_file.c267 struct kiocb *iocb, xfs_file_read_iter()
270 struct file *file = iocb->ki_filp; xfs_file_read_iter()
278 loff_t pos = iocb->ki_pos; xfs_file_read_iter()
282 if (unlikely(iocb->ki_flags & IOCB_DIRECT)) xfs_file_read_iter()
349 ret = generic_file_read_iter(iocb, to); xfs_file_read_iter()
547 struct kiocb *iocb, xfs_file_aio_write_checks()
551 struct file *file = iocb->ki_filp; xfs_file_aio_write_checks()
558 error = generic_write_checks(iocb, from); xfs_file_aio_write_checks()
582 if (iocb->ki_pos > i_size_read(inode)) { xfs_file_aio_write_checks()
603 error = xfs_zero_eof(ip, iocb->ki_pos, i_size_read(inode), &zero); xfs_file_aio_write_checks()
656 struct kiocb *iocb, xfs_file_dio_aio_write()
659 struct file *file = iocb->ki_filp; xfs_file_dio_aio_write()
668 loff_t pos = iocb->ki_pos; xfs_file_dio_aio_write()
706 ret = xfs_file_aio_write_checks(iocb, from, &iolock); xfs_file_dio_aio_write()
710 pos = iocb->ki_pos; xfs_file_dio_aio_write()
741 trace_xfs_file_direct_write(ip, count, iocb->ki_pos, 0); xfs_file_dio_aio_write()
744 ret = mapping->a_ops->direct_IO(iocb, &data, pos); xfs_file_dio_aio_write()
756 iocb->ki_pos = pos; xfs_file_dio_aio_write()
768 struct kiocb *iocb, xfs_file_buffered_aio_write()
771 struct file *file = iocb->ki_filp; xfs_file_buffered_aio_write()
781 ret = xfs_file_aio_write_checks(iocb, from, &iolock); xfs_file_buffered_aio_write()
790 iocb->ki_pos, 0); xfs_file_buffered_aio_write()
791 ret = generic_perform_write(file, from, iocb->ki_pos); xfs_file_buffered_aio_write()
793 iocb->ki_pos += ret; xfs_file_buffered_aio_write()
827 struct kiocb *iocb, xfs_file_write_iter()
830 struct file *file = iocb->ki_filp; xfs_file_write_iter()
845 if (unlikely(iocb->ki_flags & IOCB_DIRECT)) xfs_file_write_iter()
846 ret = xfs_file_dio_aio_write(iocb, from); xfs_file_write_iter()
848 ret = xfs_file_buffered_aio_write(iocb, from); xfs_file_write_iter()
856 err = generic_write_sync(file, iocb->ki_pos - ret, ret); xfs_file_write_iter()
266 xfs_file_read_iter( struct kiocb *iocb, struct iov_iter *to) xfs_file_read_iter() argument
546 xfs_file_aio_write_checks( struct kiocb *iocb, struct iov_iter *from, int *iolock) xfs_file_aio_write_checks() argument
655 xfs_file_dio_aio_write( struct kiocb *iocb, struct iov_iter *from) xfs_file_dio_aio_write() argument
767 xfs_file_buffered_aio_write( struct kiocb *iocb, struct iov_iter *from) xfs_file_buffered_aio_write() argument
826 xfs_file_write_iter( struct kiocb *iocb, struct iov_iter *from) xfs_file_write_iter() argument
H A Dxfs_aops.c1535 struct kiocb *iocb, xfs_end_io_direct_write()
1540 struct inode *inode = file_inode(iocb->ki_filp); xfs_end_io_direct_write()
1612 struct kiocb *iocb, xfs_vm_direct_IO()
1616 struct inode *inode = iocb->ki_filp->f_mapping->host; xfs_vm_direct_IO()
1620 return __blockdev_direct_IO(iocb, inode, bdev, iter, offset, xfs_vm_direct_IO()
1625 return __blockdev_direct_IO(iocb, inode, bdev, iter, offset, xfs_vm_direct_IO()
1534 xfs_end_io_direct_write( struct kiocb *iocb, loff_t offset, ssize_t size, void *private) xfs_end_io_direct_write() argument
1611 xfs_vm_direct_IO( struct kiocb *iocb, struct iov_iter *iter, loff_t offset) xfs_vm_direct_IO() argument
/linux-4.1.27/fs/ext4/
H A Dfile.c91 ext4_file_write_iter(struct kiocb *iocb, struct iov_iter *from) ext4_file_write_iter() argument
93 struct file *file = iocb->ki_filp; ext4_file_write_iter()
94 struct inode *inode = file_inode(iocb->ki_filp); ext4_file_write_iter()
97 int o_direct = iocb->ki_flags & IOCB_DIRECT; ext4_file_write_iter()
107 !is_sync_kiocb(iocb) && ext4_file_write_iter()
108 (iocb->ki_flags & IOCB_APPEND || ext4_file_write_iter()
109 ext4_unaligned_aio(inode, from, iocb->ki_pos))) { ext4_file_write_iter()
116 ret = generic_write_checks(iocb, from); ext4_file_write_iter()
127 if (iocb->ki_pos >= sbi->s_bitmap_maxbytes) { ext4_file_write_iter()
131 iov_iter_truncate(from, sbi->s_bitmap_maxbytes - iocb->ki_pos); ext4_file_write_iter()
134 iocb->private = &overwrite; ext4_file_write_iter()
137 loff_t pos = iocb->ki_pos; ext4_file_write_iter()
170 ret = __generic_file_write_iter(iocb, from); ext4_file_write_iter()
176 err = generic_write_sync(file, iocb->ki_pos - ret, ret); ext4_file_write_iter()
H A Dinode.c3063 static void ext4_end_io_dio(struct kiocb *iocb, loff_t offset, ext4_end_io_dio() argument
3066 ext4_io_end_t *io_end = iocb->private; ext4_end_io_dio()
3073 "for inode %lu, iocb 0x%p, offset %llu, size %zd\n", ext4_end_io_dio()
3074 iocb->private, io_end->inode->i_ino, iocb, offset, ext4_end_io_dio()
3077 iocb->private = NULL; ext4_end_io_dio()
3102 static ssize_t ext4_ext_direct_IO(struct kiocb *iocb, struct iov_iter *iter, ext4_ext_direct_IO() argument
3105 struct file *file = iocb->ki_filp; ext4_ext_direct_IO()
3117 return ext4_ind_direct_IO(iocb, iter, offset); ext4_ext_direct_IO()
3119 BUG_ON(iocb->private == NULL); ext4_ext_direct_IO()
3130 overwrite = *((int *)iocb->private); ext4_ext_direct_IO()
3154 * case, we allocate an io_end structure to hook to the iocb. ext4_ext_direct_IO()
3156 iocb->private = NULL; ext4_ext_direct_IO()
3161 if (!is_sync_kiocb(iocb)) { ext4_ext_direct_IO()
3171 iocb->private = ext4_get_io_end(io_end); ext4_ext_direct_IO()
3187 ret = dax_do_io(iocb, inode, iter, offset, get_block_func, ext4_ext_direct_IO()
3190 ret = __blockdev_direct_IO(iocb, inode, ext4_ext_direct_IO()
3199 * Note that in that case iocb->private can be already set to NULL ext4_ext_direct_IO()
3207 * called so we have to put iocb's reference. ext4_ext_direct_IO()
3209 if (ret <= 0 && ret != -EIOCBQUEUED && iocb->private) { ext4_ext_direct_IO()
3210 WARN_ON(iocb->private != io_end); ext4_ext_direct_IO()
3213 iocb->private = NULL; ext4_ext_direct_IO()
3242 static ssize_t ext4_direct_IO(struct kiocb *iocb, struct iov_iter *iter, ext4_direct_IO() argument
3245 struct file *file = iocb->ki_filp; ext4_direct_IO()
3267 ret = ext4_ext_direct_IO(iocb, iter, offset); ext4_direct_IO()
3269 ret = ext4_ind_direct_IO(iocb, iter, offset); ext4_direct_IO()
H A Dindirect.c645 ssize_t ext4_ind_direct_IO(struct kiocb *iocb, struct iov_iter *iter, ext4_ind_direct_IO() argument
648 struct file *file = iocb->ki_filp; ext4_ind_direct_IO()
693 ret = dax_do_io(iocb, inode, iter, offset, ext4_ind_direct_IO()
696 ret = __blockdev_direct_IO(iocb, inode, ext4_ind_direct_IO()
704 ret = dax_do_io(iocb, inode, iter, offset, ext4_ind_direct_IO()
707 ret = blockdev_direct_IO(iocb, inode, iter, offset, ext4_ind_direct_IO()
H A Dext4.h2330 extern ssize_t ext4_ind_direct_IO(struct kiocb *iocb, struct iov_iter *iter,
/linux-4.1.27/drivers/s390/char/
H A Dfs3270.c330 struct raw3270_iocb iocb; fs3270_ioctl() local
356 iocb.model = fp->view.model; fs3270_ioctl()
357 iocb.line_cnt = fp->view.rows; fs3270_ioctl()
358 iocb.col_cnt = fp->view.cols; fs3270_ioctl()
359 iocb.pf_cnt = 24; fs3270_ioctl()
360 iocb.re_cnt = 20; fs3270_ioctl()
361 iocb.map = 0; fs3270_ioctl()
362 if (copy_to_user(argp, &iocb, sizeof(struct raw3270_iocb))) fs3270_ioctl()
/linux-4.1.27/drivers/usb/gadget/legacy/
H A Dinode.c431 struct kiocb *iocb; member in struct:kiocb_priv
440 static int ep_aio_cancel(struct kiocb *iocb) ep_aio_cancel() argument
442 struct kiocb_priv *priv = iocb->private; ep_aio_cancel()
463 struct kiocb *iocb = priv->iocb; ep_user_copy_worker() local
472 /* completing the iocb can drop the ctx and mm, don't touch mm after */ ep_user_copy_worker()
473 iocb->ki_complete(iocb, ret, ret); ep_user_copy_worker()
482 struct kiocb *iocb = req->context; ep_aio_complete() local
483 struct kiocb_priv *priv = iocb->private; ep_aio_complete()
499 iocb->private = NULL; ep_aio_complete()
502 iocb->ki_complete(iocb, req->actual ? req->actual : req->status, ep_aio_complete()
521 static ssize_t ep_aio(struct kiocb *iocb, ep_aio() argument
530 iocb->private = priv; ep_aio()
531 priv->iocb = iocb; ep_aio()
533 kiocb_set_cancel_fn(iocb, ep_aio_cancel); ep_aio()
556 req->context = iocb; ep_aio()
574 ep_read_iter(struct kiocb *iocb, struct iov_iter *to) ep_read_iter() argument
576 struct file *file = iocb->ki_filp; ep_read_iter()
588 !is_sync_kiocb(iocb)) { ep_read_iter()
606 if (is_sync_kiocb(iocb)) { ep_read_iter()
620 value = ep_aio(iocb, priv, epdata, buf, len); ep_read_iter()
633 ep_write_iter(struct kiocb *iocb, struct iov_iter *from) ep_write_iter() argument
635 struct file *file = iocb->ki_filp; ep_write_iter()
650 !is_sync_kiocb(iocb)) { ep_write_iter()
676 } else if (is_sync_kiocb(iocb)) { ep_write_iter()
682 value = ep_aio(iocb, priv, epdata, buf, len); ep_write_iter()
/linux-4.1.27/fs/cifs/
H A Dcifsfs.h94 extern ssize_t cifs_user_readv(struct kiocb *iocb, struct iov_iter *to);
95 extern ssize_t cifs_strict_readv(struct kiocb *iocb, struct iov_iter *to);
96 extern ssize_t cifs_user_writev(struct kiocb *iocb, struct iov_iter *from);
97 extern ssize_t cifs_strict_writev(struct kiocb *iocb, struct iov_iter *from);
H A Dfile.c2562 ssize_t cifs_user_writev(struct kiocb *iocb, struct iov_iter *from) cifs_user_writev() argument
2564 struct file *file = iocb->ki_filp; cifs_user_writev()
2580 rc = generic_write_checks(iocb, from); cifs_user_writev()
2594 rc = cifs_write_from_iter(iocb->ki_pos, iov_iter_count(from), from, cifs_user_writev()
2634 wdata->offset - iocb->ki_pos); cifs_user_writev()
2654 iocb->ki_pos += total_written; cifs_user_writev()
2661 cifs_writev(struct kiocb *iocb, struct iov_iter *from) cifs_writev() argument
2663 struct file *file = iocb->ki_filp; cifs_writev()
2677 rc = generic_write_checks(iocb, from); cifs_writev()
2681 if (!cifs_find_lock_conflict(cfile, iocb->ki_pos, iov_iter_count(from), cifs_writev()
2684 rc = __generic_file_write_iter(iocb, from); cifs_writev()
2691 ssize_t err = generic_write_sync(file, iocb->ki_pos - rc, rc); cifs_writev()
2700 cifs_strict_writev(struct kiocb *iocb, struct iov_iter *from) cifs_strict_writev() argument
2702 struct inode *inode = file_inode(iocb->ki_filp); cifs_strict_writev()
2706 iocb->ki_filp->private_data; cifs_strict_writev()
2718 written = generic_file_write_iter(iocb, from); cifs_strict_writev()
2721 written = cifs_writev(iocb, from); cifs_strict_writev()
2730 written = cifs_user_writev(iocb, from); cifs_strict_writev()
2971 ssize_t cifs_user_readv(struct kiocb *iocb, struct iov_iter *to) cifs_user_readv() argument
2973 struct file *file = iocb->ki_filp; cifs_user_readv()
2977 loff_t offset = iocb->ki_pos; cifs_user_readv()
3069 iocb->ki_pos += total_read; cifs_user_readv()
3076 cifs_strict_readv(struct kiocb *iocb, struct iov_iter *to) cifs_strict_readv() argument
3078 struct inode *inode = file_inode(iocb->ki_filp); cifs_strict_readv()
3082 iocb->ki_filp->private_data; cifs_strict_readv()
3095 return cifs_user_readv(iocb, to); cifs_strict_readv()
3100 return generic_file_read_iter(iocb, to); cifs_strict_readv()
3107 if (!cifs_find_lock_conflict(cfile, iocb->ki_pos, iov_iter_count(to), cifs_strict_readv()
3110 rc = generic_file_read_iter(iocb, to); cifs_strict_readv()
3857 cifs_direct_io(struct kiocb *iocb, struct iov_iter *iter, loff_t pos) cifs_direct_io() argument
H A Dcifsfs.c743 cifs_loose_read_iter(struct kiocb *iocb, struct iov_iter *iter) cifs_loose_read_iter() argument
746 struct inode *inode = file_inode(iocb->ki_filp); cifs_loose_read_iter()
752 return generic_file_read_iter(iocb, iter); cifs_loose_read_iter()
755 static ssize_t cifs_file_write_iter(struct kiocb *iocb, struct iov_iter *from) cifs_file_write_iter() argument
757 struct inode *inode = file_inode(iocb->ki_filp); cifs_file_write_iter()
766 written = generic_file_write_iter(iocb, from); cifs_file_write_iter()
/linux-4.1.27/drivers/scsi/qla2xxx/
H A Dqla_target.c106 int fn, void *iocb, int flags);
496 static int qlt_reset(struct scsi_qla_host *vha, void *iocb, int mcmd) qlt_reset() argument
503 struct imm_ntfy_from_isp *n = (struct imm_ntfy_from_isp *)iocb; qlt_reset()
504 struct atio_from_isp *a = (struct atio_from_isp *)iocb; qlt_reset()
556 iocb, QLA24XX_MGMT_SEND_NACK); qlt_reset()
2740 "iocb(s) %p Returned STATUS.\n", sts); qlt_handle_dif_error()
3815 int fn, void *iocb, int flags) qlt_issue_task_mgmt()
3820 struct atio_from_isp *a = (struct atio_from_isp *)iocb; qlt_issue_task_mgmt()
3835 if (iocb) { qlt_issue_task_mgmt()
3836 memcpy(&mcmd->orig_iocb.imm_ntfy, iocb, qlt_issue_task_mgmt()
3924 static int qlt_handle_task_mgmt(struct scsi_qla_host *vha, void *iocb) qlt_handle_task_mgmt() argument
3926 struct atio_from_isp *a = (struct atio_from_isp *)iocb; qlt_handle_task_mgmt()
3946 return qlt_sched_sess_work(tgt, QLA_TGT_SESS_WORK_TM, iocb, qlt_handle_task_mgmt()
3953 return qlt_issue_task_mgmt(sess, unpacked_lun, fn, iocb, 0); qlt_handle_task_mgmt()
3958 struct imm_ntfy_from_isp *iocb, struct qla_tgt_sess *sess) __qlt_abort_task()
3960 struct atio_from_isp *a = (struct atio_from_isp *)iocb; __qlt_abort_task()
3976 memcpy(&mcmd->orig_iocb.imm_ntfy, iocb, __qlt_abort_task()
3984 le16_to_cpu(iocb->u.isp2x.seq_id)); __qlt_abort_task()
3998 struct imm_ntfy_from_isp *iocb) qlt_abort_task()
4004 loop_id = GET_TARGET_ID(ha, (struct atio_from_isp *)iocb); qlt_abort_task()
4012 QLA_TGT_SESS_WORK_ABORT, iocb, sizeof(*iocb)); qlt_abort_task()
4015 return __qlt_abort_task(vha, iocb, sess); qlt_abort_task()
4148 struct imm_ntfy_from_isp *iocb) qlt_24xx_handle_els()
4159 wwn = wwn_to_u64(iocb->u.isp24.port_name); qlt_24xx_handle_els()
4161 port_id.b.domain = iocb->u.isp24.port_id[2]; qlt_24xx_handle_els()
4162 port_id.b.area = iocb->u.isp24.port_id[1]; qlt_24xx_handle_els()
4163 port_id.b.al_pa = iocb->u.isp24.port_id[0]; qlt_24xx_handle_els()
4166 loop_id = le16_to_cpu(iocb->u.isp24.nport_handle); qlt_24xx_handle_els()
4170 vha->vp_idx, iocb->u.isp24.port_id, iocb->u.isp24.status_subcode); qlt_24xx_handle_els()
4175 switch (iocb->u.isp24.status_subcode) { qlt_24xx_handle_els()
4200 qlt_swap_imm_ntfy_iocb(iocb, &sess->tm_iocb); qlt_24xx_handle_els()
4202 qlt_send_term_imm_notif(vha, iocb, 1); qlt_24xx_handle_els()
4214 memcpy(&sess->tm_iocb, iocb, sizeof(sess->tm_iocb)); qlt_24xx_handle_els()
4241 wd3_lo = le16_to_cpu(iocb->u.isp24.u.prli.wd3_lo); qlt_24xx_handle_els()
4257 qlt_send_term_imm_notif(vha, iocb, 1); qlt_24xx_handle_els()
4268 sess->loop_id, sess, iocb->u.isp24.nport_handle); qlt_24xx_handle_els()
4294 res = qlt_reset(vha, iocb, QLA_TGT_NEXUS_LOSS_SESS); qlt_24xx_handle_els()
4313 "received\n", vha->vp_idx, iocb->u.isp24.status_subcode); qlt_24xx_handle_els()
4314 res = qlt_reset(vha, iocb, QLA_TGT_NEXUS_LOSS_SESS); qlt_24xx_handle_els()
4678 struct imm_ntfy_from_isp *iocb) qlt_prepare_srr_imm()
4691 memcpy(&imm->imm_ntfy, iocb, sizeof(imm->imm_ntfy)); qlt_prepare_srr_imm()
4700 imm, imm->srr_id, iocb->u.isp24.srr_ui); qlt_prepare_srr_imm()
4758 qlt_send_notify_ack(vha, iocb, 0, 0, 0, qlt_prepare_srr_imm()
4768 struct imm_ntfy_from_isp *iocb) qlt_handle_imm_notify()
4775 status = le16_to_cpu(iocb->u.isp2x.status); qlt_handle_imm_notify()
4781 vha->vp_idx, le16_to_cpu(iocb->u.isp24.nport_handle), qlt_handle_imm_notify()
4782 iocb->u.isp24.status_subcode); qlt_handle_imm_notify()
4784 if (qlt_reset(vha, iocb, QLA_TGT_ABORT_ALL) == 0) qlt_handle_imm_notify()
4795 le16_to_cpu(iocb->u.isp24.nport_handle), qlt_handle_imm_notify()
4796 iocb->u.isp24.status_subcode); qlt_handle_imm_notify()
4801 memcpy(&tgt->link_reinit_iocb, iocb, sizeof(*iocb)); qlt_handle_imm_notify()
4815 le16_to_cpu(iocb->u.isp24.nport_handle), qlt_handle_imm_notify()
4816 iocb->u.isp24.status_subcode); qlt_handle_imm_notify()
4818 if (qlt_reset(vha, iocb, QLA_TGT_NEXUS_LOSS_SESS) == 0) qlt_handle_imm_notify()
4826 if (qlt_reset(vha, iocb, QLA_TGT_NEXUS_LOSS) == 0) qlt_handle_imm_notify()
4835 if (qlt_reset(vha, iocb, QLA_TGT_ABORT_ALL) == 0) qlt_handle_imm_notify()
4845 if (qlt_reset(vha, iocb, QLA_TGT_NEXUS_LOSS) == 0) qlt_handle_imm_notify()
4860 le16_to_cpu(iocb->u.isp2x.seq_id), qlt_handle_imm_notify()
4861 GET_TARGET_ID(ha, (struct atio_from_isp *)iocb), qlt_handle_imm_notify()
4862 le16_to_cpu(iocb->u.isp2x.lun)); qlt_handle_imm_notify()
4863 if (qlt_abort_task(vha, iocb) == 0) qlt_handle_imm_notify()
4876 vha->vp_idx, iocb->u.isp2x.task_flags); qlt_handle_imm_notify()
4877 if (qlt_handle_task_mgmt(vha, iocb) == 0) qlt_handle_imm_notify()
4882 if (qlt_24xx_handle_els(vha, iocb) == 0) qlt_handle_imm_notify()
4887 qlt_prepare_srr_imm(vha, iocb); qlt_handle_imm_notify()
4899 qlt_send_notify_ack(vha, iocb, add_flags, 0, 0, 0, 0, 0); qlt_handle_imm_notify()
5665 void *iocb; qlt_tmr_work() local
5694 iocb = a; qlt_tmr_work()
5700 rc = qlt_issue_task_mgmt(sess, unpacked_lun, fn, iocb, 0); qlt_tmr_work()
3814 qlt_issue_task_mgmt(struct qla_tgt_sess *sess, uint32_t lun, int fn, void *iocb, int flags) qlt_issue_task_mgmt() argument
3957 __qlt_abort_task(struct scsi_qla_host *vha, struct imm_ntfy_from_isp *iocb, struct qla_tgt_sess *sess) __qlt_abort_task() argument
3997 qlt_abort_task(struct scsi_qla_host *vha, struct imm_ntfy_from_isp *iocb) qlt_abort_task() argument
4147 qlt_24xx_handle_els(struct scsi_qla_host *vha, struct imm_ntfy_from_isp *iocb) qlt_24xx_handle_els() argument
4677 qlt_prepare_srr_imm(struct scsi_qla_host *vha, struct imm_ntfy_from_isp *iocb) qlt_prepare_srr_imm() argument
4767 qlt_handle_imm_notify(struct scsi_qla_host *vha, struct imm_ntfy_from_isp *iocb) qlt_handle_imm_notify() argument
H A Dqla_bsg.h41 * To support bidirectional iocb
H A Dqla_isr.c1188 struct req_que *req, void *iocb) qla2x00_get_sp_from_handle()
1191 sts_entry_t *pkt = iocb; qla2x00_get_sp_from_handle()
1551 struct srb_iocb *iocb; qla24xx_tm_iocb_entry() local
1558 iocb = &sp->u.iocb_cmd; qla24xx_tm_iocb_entry()
1561 iocb->u.tmf.data = QLA_SUCCESS; qla24xx_tm_iocb_entry()
1567 iocb->u.tmf.data = QLA_FUNCTION_FAILED; qla24xx_tm_iocb_entry()
1572 iocb->u.tmf.data = QLA_FUNCTION_FAILED; qla24xx_tm_iocb_entry()
1583 iocb->u.tmf.data = QLA_FUNCTION_FAILED; qla24xx_tm_iocb_entry()
1587 if (iocb->u.tmf.data != QLA_SUCCESS) qla24xx_tm_iocb_entry()
1749 "iocb(s) %p Returned STATUS.\n", sts24); qla2x00_handle_dif_error()
1187 qla2x00_get_sp_from_handle(scsi_qla_host_t *vha, const char *func, struct req_que *req, void *iocb) qla2x00_get_sp_from_handle() argument
H A Dqla_iocb.c1004 /* add new list to cmd iocb or last list */ qla24xx_walk_and_build_sglist_no_difb()
1106 /* add new list to cmd iocb or last list */ for_each_sg()
1198 /* add new list to cmd iocb or last list */ for_each_sg()
1340 cmd_pkt->fcp_rsp_dseg_len = 0; /* Let response come in status iocb */ qla24xx_build_scsi_crc_2_iocbs()
2012 struct srb_iocb *iocb = &sp->u.iocb_cmd; qla24xx_tm_iocb() local
2015 flags = iocb->u.tmf.flags; qla24xx_tm_iocb()
2016 lun = iocb->u.tmf.lun; qla24xx_tm_iocb()
2709 * are bundled in continuation iocb qla25xx_build_bidir_iocb()
H A Dqla_target.h117 #define GET_TARGET_ID(ha, iocb) ((HAS_EXTENDED_IDS(ha)) \
118 ? le16_to_cpu((iocb)->u.isp2x.target.extended) \
119 : (uint16_t)(iocb)->u.isp2x.target.id.standard)
H A Dqla_init.c49 struct srb_iocb *iocb; qla2x00_sp_timeout() local
58 iocb = &sp->u.iocb_cmd; qla2x00_sp_timeout()
59 iocb->timeout(sp); qla2x00_sp_timeout()
68 struct srb_iocb *iocb = &sp->u.iocb_cmd; qla2x00_sp_free() local
71 del_timer(&iocb->timer); qla2x00_sp_free()
2338 "Sending verify iocb.\n"); qla2x00_fw_ready()
/linux-4.1.27/arch/s390/hypfs/
H A Dinode.c147 static ssize_t hypfs_read_iter(struct kiocb *iocb, struct iov_iter *to) hypfs_read_iter() argument
149 struct file *file = iocb->ki_filp; hypfs_read_iter()
152 loff_t pos = iocb->ki_pos; hypfs_read_iter()
162 iocb->ki_pos = pos + count; hypfs_read_iter()
167 static ssize_t hypfs_write_iter(struct kiocb *iocb, struct iov_iter *from) hypfs_write_iter() argument
170 struct super_block *sb = file_inode(iocb->ki_filp)->i_sb; hypfs_write_iter()
/linux-4.1.27/fs/fuse/
H A Dfile.c565 bool is_sync = is_sync_kiocb(io->iocb); fuse_aio_complete()
583 struct inode *inode = file_inode(io->iocb->ki_filp); fuse_aio_complete()
592 io->iocb->ki_complete(io->iocb, res, 0); fuse_aio_complete()
904 static ssize_t fuse_file_read_iter(struct kiocb *iocb, struct iov_iter *to) fuse_file_read_iter() argument
906 struct inode *inode = iocb->ki_filp->f_mapping->host; fuse_file_read_iter()
915 (iocb->ki_pos + iov_iter_count(to) > i_size_read(inode))) { fuse_file_read_iter()
917 err = fuse_update_attributes(inode, NULL, iocb->ki_filp, NULL); fuse_file_read_iter()
922 return generic_file_read_iter(iocb, to); fuse_file_read_iter()
1151 static ssize_t fuse_file_write_iter(struct kiocb *iocb, struct iov_iter *from) fuse_file_write_iter() argument
1153 struct file *file = iocb->ki_filp; fuse_file_write_iter()
1167 return generic_file_write_iter(iocb, from); fuse_file_write_iter()
1175 err = generic_write_checks(iocb, from); fuse_file_write_iter()
1187 if (iocb->ki_flags & IOCB_DIRECT) { fuse_file_write_iter()
1188 loff_t pos = iocb->ki_pos; fuse_file_write_iter()
1189 written = generic_file_direct_write(iocb, from, pos); fuse_file_write_iter()
1212 iocb->ki_pos = pos + written_buffered; fuse_file_write_iter()
1214 written = fuse_perform_write(file, mapping, from, iocb->ki_pos); fuse_file_write_iter()
1216 iocb->ki_pos += written; fuse_file_write_iter()
1406 static ssize_t fuse_direct_read_iter(struct kiocb *iocb, struct iov_iter *to) fuse_direct_read_iter() argument
1408 struct fuse_io_priv io = FUSE_IO_PRIV_SYNC(iocb->ki_filp); fuse_direct_read_iter()
1409 return __fuse_direct_read(&io, to, &iocb->ki_pos); fuse_direct_read_iter()
1412 static ssize_t fuse_direct_write_iter(struct kiocb *iocb, struct iov_iter *from) fuse_direct_write_iter() argument
1414 struct file *file = iocb->ki_filp; fuse_direct_write_iter()
1424 res = generic_write_checks(iocb, from); fuse_direct_write_iter()
1426 res = fuse_direct_io(&io, from, &iocb->ki_pos, FUSE_DIO_WRITE); fuse_direct_write_iter()
1429 fuse_write_update_size(inode, iocb->ki_pos); fuse_direct_write_iter()
2784 fuse_direct_IO(struct kiocb *iocb, struct iov_iter *iter, loff_t offset) fuse_direct_IO() argument
2788 struct file *file = iocb->ki_filp; fuse_direct_IO()
2796 bool is_sync = is_sync_kiocb(iocb); fuse_direct_IO()
2830 io->iocb = iocb; fuse_direct_IO()
H A Ddev.c1358 static ssize_t fuse_dev_read(struct kiocb *iocb, struct iov_iter *to) fuse_dev_read() argument
1361 struct file *file = iocb->ki_filp; fuse_dev_read()
1967 static ssize_t fuse_dev_write(struct kiocb *iocb, struct iov_iter *from) fuse_dev_write() argument
1970 struct fuse_conn *fc = fuse_get_conn(iocb->ki_filp); fuse_dev_write()
H A Dfuse_i.h266 struct kiocb *iocb; member in struct:fuse_io_priv
/linux-4.1.27/mm/
H A Dfilemap.c1682 * @iocb: kernel I/O control block
1689 generic_file_read_iter(struct kiocb *iocb, struct iov_iter *iter) generic_file_read_iter() argument
1691 struct file *file = iocb->ki_filp; generic_file_read_iter()
1693 loff_t *ppos = &iocb->ki_pos; generic_file_read_iter()
1696 if (iocb->ki_flags & IOCB_DIRECT) { generic_file_read_iter()
1709 retval = mapping->a_ops->direct_IO(iocb, &data, pos); generic_file_read_iter()
2262 inline ssize_t generic_write_checks(struct kiocb *iocb, struct iov_iter *from) generic_write_checks() argument
2264 struct file *file = iocb->ki_filp; generic_write_checks()
2273 if (iocb->ki_flags & IOCB_APPEND) generic_write_checks()
2274 iocb->ki_pos = i_size_read(inode); generic_write_checks()
2276 pos = iocb->ki_pos; generic_write_checks()
2279 if (iocb->ki_pos >= limit) { generic_write_checks()
2333 generic_file_direct_write(struct kiocb *iocb, struct iov_iter *from, loff_t pos) generic_file_direct_write() argument
2335 struct file *file = iocb->ki_filp; generic_file_direct_write()
2371 written = mapping->a_ops->direct_IO(iocb, &data, pos); generic_file_direct_write()
2393 iocb->ki_pos = pos; generic_file_direct_write()
2514 * @iocb: IO state structure (file, offset, etc.)
2529 ssize_t __generic_file_write_iter(struct kiocb *iocb, struct iov_iter *from) __generic_file_write_iter() argument
2531 struct file *file = iocb->ki_filp; __generic_file_write_iter()
2548 if (iocb->ki_flags & IOCB_DIRECT) { __generic_file_write_iter()
2551 written = generic_file_direct_write(iocb, from, iocb->ki_pos); __generic_file_write_iter()
2562 status = generic_perform_write(file, from, pos = iocb->ki_pos); __generic_file_write_iter()
2582 iocb->ki_pos = endbyte + 1; __generic_file_write_iter()
2594 written = generic_perform_write(file, from, iocb->ki_pos); __generic_file_write_iter()
2596 iocb->ki_pos += written; __generic_file_write_iter()
2606 * @iocb: IO state structure
2613 ssize_t generic_file_write_iter(struct kiocb *iocb, struct iov_iter *from) generic_file_write_iter() argument
2615 struct file *file = iocb->ki_filp; generic_file_write_iter()
2620 ret = generic_write_checks(iocb, from); generic_file_write_iter()
2622 ret = __generic_file_write_iter(iocb, from); generic_file_write_iter()
2628 err = generic_write_sync(file, iocb->ki_pos - ret, ret); generic_file_write_iter()
H A Dshmem.c1519 static ssize_t shmem_file_read_iter(struct kiocb *iocb, struct iov_iter *to) shmem_file_read_iter() argument
1521 struct file *file = iocb->ki_filp; shmem_file_read_iter()
1529 loff_t *ppos = &iocb->ki_pos; shmem_file_read_iter()
/linux-4.1.27/crypto/
H A Dalgif_skcipher.c64 struct kiocb *iocb; member in struct:skcipher_async_req
109 struct kiocb *iocb = sreq->iocb; skcipher_async_cb() local
114 iocb->ki_complete(iocb, err, err); skcipher_async_cb()
530 sreq->iocb = msg->msg_iocb; skcipher_recvmsg_async()
/linux-4.1.27/arch/um/os-Linux/
H A Daio.c41 static long io_submit(aio_context_t ctx, long nr, struct iocb **iocbpp) io_submit()
69 struct iocb *iocbp = & ((struct iocb) { do_aio()
/linux-4.1.27/fs/jfs/
H A Dinode.c333 static ssize_t jfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter, jfs_direct_IO() argument
336 struct file *file = iocb->ki_filp; jfs_direct_IO()
342 ret = blockdev_direct_IO(iocb, inode, iter, offset, jfs_get_block); jfs_direct_IO()
/linux-4.1.27/fs/ecryptfs/
H A Dfile.c46 static ssize_t ecryptfs_read_update_atime(struct kiocb *iocb, ecryptfs_read_update_atime() argument
51 struct file *file = iocb->ki_filp; ecryptfs_read_update_atime()
53 rc = generic_file_read_iter(iocb, to); ecryptfs_read_update_atime()
/linux-4.1.27/drivers/bluetooth/
H A Dhci_vhci.c302 static ssize_t vhci_write(struct kiocb *iocb, struct iov_iter *from) vhci_write() argument
304 struct file *file = iocb->ki_filp; vhci_write()
/linux-4.1.27/fs/hfsplus/
H A Dinode.c125 static ssize_t hfsplus_direct_IO(struct kiocb *iocb, struct iov_iter *iter, hfsplus_direct_IO() argument
128 struct file *file = iocb->ki_filp; hfsplus_direct_IO()
134 ret = blockdev_direct_IO(iocb, inode, iter, offset, hfsplus_get_block); hfsplus_direct_IO()
/linux-4.1.27/drivers/staging/lustre/lustre/include/lustre/
H A Dlustre_errno.h199 #define LUSTRE_EIOCBQUEUED 529 /* iocb queued, will get completion
201 #define LUSTRE_EIOCBRETRY 530 /* iocb queued, will trigger a retry */
/linux-4.1.27/arch/mips/fw/cfe/
H A Dcfe_api.c24 * call the standard "iocb" interface entry point to CFE).
25 * There should be one routine here per iocb function call.
/linux-4.1.27/fs/gfs2/
H A Dfile.c688 * @iocb: The io context
700 static ssize_t gfs2_file_write_iter(struct kiocb *iocb, struct iov_iter *from) gfs2_file_write_iter() argument
702 struct file *file = iocb->ki_filp; gfs2_file_write_iter()
710 gfs2_size_hint(file, iocb->ki_pos, iov_iter_count(from)); gfs2_file_write_iter()
712 if (iocb->ki_flags & IOCB_APPEND) { gfs2_file_write_iter()
721 return generic_file_write_iter(iocb, from); gfs2_file_write_iter()
H A Daops.c1041 static ssize_t gfs2_direct_IO(struct kiocb *iocb, struct iov_iter *iter, gfs2_direct_IO() argument
1044 struct file *file = iocb->ki_filp; gfs2_direct_IO()
1097 rv = __blockdev_direct_IO(iocb, inode, inode->i_sb->s_bdev, iter, gfs2_direct_IO()
/linux-4.1.27/drivers/net/
H A Dmacvtap.c789 static ssize_t macvtap_write_iter(struct kiocb *iocb, struct iov_iter *from) macvtap_write_iter() argument
791 struct file *file = iocb->ki_filp; macvtap_write_iter()
894 static ssize_t macvtap_read_iter(struct kiocb *iocb, struct iov_iter *to) macvtap_read_iter() argument
896 struct file *file = iocb->ki_filp; macvtap_read_iter()
903 iocb->ki_pos = ret; macvtap_read_iter()
H A Dtun.c1218 static ssize_t tun_chr_write_iter(struct kiocb *iocb, struct iov_iter *from) tun_chr_write_iter() argument
1220 struct file *file = iocb->ki_filp; tun_chr_write_iter()
1378 static ssize_t tun_chr_read_iter(struct kiocb *iocb, struct iov_iter *to) tun_chr_read_iter() argument
1380 struct file *file = iocb->ki_filp; tun_chr_read_iter()
1390 iocb->ki_pos = ret; tun_chr_read_iter()
/linux-4.1.27/fs/hugetlbfs/
H A Dinode.c219 static ssize_t hugetlbfs_read_iter(struct kiocb *iocb, struct iov_iter *to) hugetlbfs_read_iter() argument
221 struct file *file = iocb->ki_filp; hugetlbfs_read_iter()
225 unsigned long index = iocb->ki_pos >> huge_page_shift(h); hugetlbfs_read_iter()
226 unsigned long offset = iocb->ki_pos & ~huge_page_mask(h); hugetlbfs_read_iter()
277 iocb->ki_pos = ((loff_t)index << huge_page_shift(h)) + offset; hugetlbfs_read_iter()
/linux-4.1.27/drivers/char/
H A Dmem.c610 static ssize_t read_iter_null(struct kiocb *iocb, struct iov_iter *to) read_iter_null() argument
615 static ssize_t write_iter_null(struct kiocb *iocb, struct iov_iter *from) write_iter_null() argument
634 static ssize_t read_iter_zero(struct kiocb *iocb, struct iov_iter *iter) read_iter_zero() argument
/linux-4.1.27/fs/ntfs/
H A Dfile.c331 static ssize_t ntfs_prepare_file_for_write(struct kiocb *iocb, ntfs_prepare_file_for_write() argument
338 struct file *file = iocb->ki_filp; ntfs_prepare_file_for_write()
346 (unsigned long long)iocb->ki_pos, ntfs_prepare_file_for_write()
348 err = generic_write_checks(iocb, from); ntfs_prepare_file_for_write()
393 pos = iocb->ki_pos; ntfs_prepare_file_for_write()
1932 * @iocb: IO state structure
1939 static ssize_t ntfs_file_write_iter(struct kiocb *iocb, struct iov_iter *from) ntfs_file_write_iter() argument
1941 struct file *file = iocb->ki_filp; ntfs_file_write_iter()
1949 err = ntfs_prepare_file_for_write(iocb, from); ntfs_file_write_iter()
1951 written = ntfs_perform_write(file, from, iocb->ki_pos); ntfs_file_write_iter()
1955 err = generic_write_sync(file, iocb->ki_pos, written); ntfs_file_write_iter()
1959 iocb->ki_pos += written; ntfs_file_write_iter()
/linux-4.1.27/fs/hfs/
H A Dinode.c127 static ssize_t hfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter, hfs_direct_IO() argument
130 struct file *file = iocb->ki_filp; hfs_direct_IO()
136 ret = blockdev_direct_IO(iocb, inode, iter, offset, hfs_get_block); hfs_direct_IO()
/linux-4.1.27/fs/afs/
H A Dwrite.c627 ssize_t afs_file_write(struct kiocb *iocb, struct iov_iter *from) afs_file_write() argument
629 struct afs_vnode *vnode = AFS_FS_I(file_inode(iocb->ki_filp)); afs_file_write()
645 result = generic_file_write_iter(iocb, from); afs_file_write()
/linux-4.1.27/drivers/staging/lustre/lustre/llite/
H A Drw26.c362 static ssize_t ll_direct_IO_26(struct kiocb *iocb, struct iov_iter *iter, ll_direct_IO_26() argument
367 struct file *file = iocb->ki_filp; ll_direct_IO_26()
H A Dfile.c1193 static ssize_t ll_file_read_iter(struct kiocb *iocb, struct iov_iter *to) ll_file_read_iter() argument
1206 args->u.normal.via_iocb = iocb; ll_file_read_iter()
1208 result = ll_file_io_generic(env, args, iocb->ki_filp, CIT_READ, ll_file_read_iter()
1209 &iocb->ki_pos, iov_iter_count(to)); ll_file_read_iter()
1217 static ssize_t ll_file_write_iter(struct kiocb *iocb, struct iov_iter *from) ll_file_write_iter() argument
1230 args->u.normal.via_iocb = iocb; ll_file_write_iter()
1232 result = ll_file_io_generic(env, args, iocb->ki_filp, CIT_WRITE, ll_file_write_iter()
1233 &iocb->ki_pos, iov_iter_count(from)); ll_file_write_iter()
/linux-4.1.27/arch/s390/kernel/
H A Dcompat_wrapper.c172 COMPAT_SYSCALL_WRAP3(io_cancel, aio_context_t, ctx_id, struct iocb __user *, iocb, struct io_event __user *, result);
/linux-4.1.27/fs/btrfs/
H A Dfile.c1678 static ssize_t __btrfs_direct_write(struct kiocb *iocb, __btrfs_direct_write() argument
1682 struct file *file = iocb->ki_filp; __btrfs_direct_write()
1689 written = generic_file_direct_write(iocb, from, pos); __btrfs_direct_write()
1712 iocb->ki_pos = pos + written_buffered; __btrfs_direct_write()
1737 static ssize_t btrfs_file_write_iter(struct kiocb *iocb, btrfs_file_write_iter() argument
1740 struct file *file = iocb->ki_filp; btrfs_file_write_iter()
1752 err = generic_write_checks(iocb, from); btrfs_file_write_iter()
1785 pos = iocb->ki_pos; btrfs_file_write_iter()
1801 if (iocb->ki_flags & IOCB_DIRECT) { btrfs_file_write_iter()
1802 num_written = __btrfs_direct_write(iocb, from, pos); btrfs_file_write_iter()
1806 iocb->ki_pos = pos + num_written; btrfs_file_write_iter()
H A Dinode.c8283 static ssize_t check_direct_IO(struct btrfs_root *root, struct kiocb *iocb, check_direct_IO() argument
8316 static ssize_t btrfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter, btrfs_direct_IO() argument
8319 struct file *file = iocb->ki_filp; btrfs_direct_IO()
8328 if (check_direct_IO(BTRFS_I(inode)->root, iocb, iter, offset)) btrfs_direct_IO()
8376 ret = __blockdev_direct_IO(iocb, inode, btrfs_direct_IO()
/linux-4.1.27/tools/usb/ffs-aio-example/simple/device_app/
H A Daio_simple.c218 struct iocb *iocb_in, *iocb_out; main()
/linux-4.1.27/net/
H A Dsocket.c116 static ssize_t sock_read_iter(struct kiocb *iocb, struct iov_iter *to);
117 static ssize_t sock_write_iter(struct kiocb *iocb, struct iov_iter *from);
783 static ssize_t sock_read_iter(struct kiocb *iocb, struct iov_iter *to) sock_read_iter() argument
785 struct file *file = iocb->ki_filp; sock_read_iter()
788 .msg_iocb = iocb}; sock_read_iter()
794 if (iocb->ki_pos != 0) sock_read_iter()
805 static ssize_t sock_write_iter(struct kiocb *iocb, struct iov_iter *from) sock_write_iter() argument
807 struct file *file = iocb->ki_filp; sock_write_iter()
810 .msg_iocb = iocb}; sock_write_iter()
813 if (iocb->ki_pos != 0) sock_write_iter()
/linux-4.1.27/fs/ext2/
H A Dinode.c854 ext2_direct_IO(struct kiocb *iocb, struct iov_iter *iter, loff_t offset) ext2_direct_IO() argument
856 struct file *file = iocb->ki_filp; ext2_direct_IO()
863 ret = dax_do_io(iocb, inode, iter, offset, ext2_get_block, NULL, ext2_direct_IO()
866 ret = blockdev_direct_IO(iocb, inode, iter, offset, ext2_direct_IO()
/linux-4.1.27/fs/nilfs2/
H A Dinode.c308 nilfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter, loff_t offset) nilfs_direct_IO() argument
310 struct file *file = iocb->ki_filp; nilfs_direct_IO()
320 size = blockdev_direct_IO(iocb, inode, iter, offset, nilfs_get_block); nilfs_direct_IO()
/linux-4.1.27/fs/affs/
H A Dfile.c392 affs_direct_IO(struct kiocb *iocb, struct iov_iter *iter, loff_t offset) affs_direct_IO() argument
394 struct file *file = iocb->ki_filp; affs_direct_IO()
407 ret = blockdev_direct_IO(iocb, inode, iter, offset, affs_get_block); affs_direct_IO()
/linux-4.1.27/fs/f2fs/
H A Ddata.c1720 static ssize_t f2fs_direct_IO(struct kiocb *iocb, struct iov_iter *iter, f2fs_direct_IO() argument
1723 struct file *file = iocb->ki_filp; f2fs_direct_IO()
1744 err = blockdev_direct_IO(iocb, inode, iter, offset, get_data_block); f2fs_direct_IO()
/linux-4.1.27/fs/fat/
H A Dinode.c240 static ssize_t fat_direct_IO(struct kiocb *iocb, struct iov_iter *iter, fat_direct_IO() argument
243 struct file *file = iocb->ki_filp; fat_direct_IO()
268 ret = blockdev_direct_IO(iocb, inode, iter, offset, fat_get_block); fat_direct_IO()
/linux-4.1.27/drivers/scsi/qla4xxx/
H A Dql4_iocb.c77 * qla4xxx_send_marker_iocb - issues marker iocb to HBA
H A Dql4_def.h818 /* mbox iocb */
H A Dql4_isr.c1440 ql4_printk(KERN_INFO, ha, "%s: It is a spurious iocb interrupt!\n", qla4_8xxx_msix_rsp_q()
1452 ql4_printk(KERN_INFO, ha, "%s: spurious iocb interrupt...\n", qla4_8xxx_msix_rsp_q()
H A Dql4_os.c9361 "marker iocb failed.\n"); qla4xxx_eh_target_reset()
/linux-4.1.27/drivers/net/ethernet/qlogic/qlge/
H A Dqlge_main.c1357 * iocb->seg[0] = skb->data ql_map_send()
1358 * iocb->seg[1] = frag[0] ql_map_send()
1359 * iocb->seg[2] = frag[1] ql_map_send()
1360 * iocb->seg[3] = frag[2] ql_map_send()
1361 * iocb->seg[4] = frag[3] ql_map_send()
1362 * iocb->seg[5] = frag[4] ql_map_send()
1363 * iocb->seg[6] = frag[5] ql_map_send()
1364 * iocb->seg[7] = ptr to OAL (external sglist) ql_map_send()
/linux-4.1.27/fs/ubifs/
H A Dfile.c1401 static ssize_t ubifs_write_iter(struct kiocb *iocb, struct iov_iter *from) ubifs_write_iter() argument
1403 int err = update_mctime(file_inode(iocb->ki_filp)); ubifs_write_iter()
1407 return generic_file_write_iter(iocb, from); ubifs_write_iter()
/linux-4.1.27/sound/core/
H A Dpcm_native.c3083 static ssize_t snd_pcm_readv(struct kiocb *iocb, struct iov_iter *to) snd_pcm_readv() argument
3093 pcm_file = iocb->ki_filp->private_data; snd_pcm_readv()
3119 static ssize_t snd_pcm_writev(struct kiocb *iocb, struct iov_iter *from) snd_pcm_writev() argument
3129 pcm_file = iocb->ki_filp->private_data; snd_pcm_writev()
/linux-4.1.27/drivers/infiniband/hw/qib/
H A Dqib_file_ops.c2262 static ssize_t qib_write_iter(struct kiocb *iocb, struct iov_iter *from) qib_write_iter() argument
2264 struct qib_filedata *fp = iocb->ki_filp->private_data; qib_write_iter()
2265 struct qib_ctxtdata *rcd = ctxt_fp(iocb->ki_filp); qib_write_iter()
/linux-4.1.27/drivers/infiniband/hw/ipath/
H A Dipath_file_ops.c2421 static ssize_t ipath_write_iter(struct kiocb *iocb, struct iov_iter *from) ipath_write_iter() argument
2423 struct file *filp = iocb->ki_filp; ipath_write_iter()
/linux-4.1.27/fs/exofs/
H A Dinode.c966 static ssize_t exofs_direct_IO(struct kiocb *iocb, struct iov_iter *iter, exofs_direct_IO() argument
/linux-4.1.27/fs/reiserfs/
H A Dinode.c3281 static ssize_t reiserfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter, reiserfs_direct_IO() argument
3284 struct file *file = iocb->ki_filp; reiserfs_direct_IO()
3289 ret = blockdev_direct_IO(iocb, inode, iter, offset, reiserfs_direct_IO()
/linux-4.1.27/fs/ext3/
H A Dinode.c1823 static ssize_t ext3_direct_IO(struct kiocb *iocb, struct iov_iter *iter, ext3_direct_IO() argument
1826 struct file *file = iocb->ki_filp; ext3_direct_IO()
1859 ret = blockdev_direct_IO(iocb, inode, iter, offset, ext3_get_block); ext3_direct_IO()
/linux-4.1.27/kernel/printk/
H A Dprintk.c519 static ssize_t devkmsg_write(struct kiocb *iocb, struct iov_iter *from) devkmsg_write() argument
/linux-4.1.27/drivers/scsi/be2iscsi/
H A Dbe_main.c258 /* invalidate iocb */ beiscsi_eh_abort()

Completed in 3106 milliseconds