Home
last modified time | relevance | path

Searched refs:iocb (Results 1 – 25 of 120) sorted by relevance

12345

/Linux-v5.10/fs/ext4/
Dfile.c52 static ssize_t ext4_dio_read_iter(struct kiocb *iocb, struct iov_iter *to) in ext4_dio_read_iter() argument
55 struct inode *inode = file_inode(iocb->ki_filp); in ext4_dio_read_iter()
57 if (iocb->ki_flags & IOCB_NOWAIT) { in ext4_dio_read_iter()
73 iocb->ki_flags &= ~IOCB_DIRECT; in ext4_dio_read_iter()
74 return generic_file_read_iter(iocb, to); in ext4_dio_read_iter()
77 ret = iomap_dio_rw(iocb, to, &ext4_iomap_ops, NULL, in ext4_dio_read_iter()
78 is_sync_kiocb(iocb)); in ext4_dio_read_iter()
81 file_accessed(iocb->ki_filp); in ext4_dio_read_iter()
86 static ssize_t ext4_dax_read_iter(struct kiocb *iocb, struct iov_iter *to) in ext4_dax_read_iter() argument
88 struct inode *inode = file_inode(iocb->ki_filp); in ext4_dax_read_iter()
[all …]
/Linux-v5.10/fs/ext2/
Dfile.c33 static ssize_t ext2_dax_read_iter(struct kiocb *iocb, struct iov_iter *to) in ext2_dax_read_iter() argument
35 struct inode *inode = iocb->ki_filp->f_mapping->host; in ext2_dax_read_iter()
42 ret = dax_iomap_rw(iocb, to, &ext2_iomap_ops); in ext2_dax_read_iter()
45 file_accessed(iocb->ki_filp); in ext2_dax_read_iter()
49 static ssize_t ext2_dax_write_iter(struct kiocb *iocb, struct iov_iter *from) in ext2_dax_write_iter() argument
51 struct file *file = iocb->ki_filp; in ext2_dax_write_iter()
56 ret = generic_write_checks(iocb, from); in ext2_dax_write_iter()
66 ret = dax_iomap_rw(iocb, from, &ext2_iomap_ops); in ext2_dax_write_iter()
67 if (ret > 0 && iocb->ki_pos > i_size_read(inode)) { in ext2_dax_write_iter()
68 i_size_write(inode, iocb->ki_pos); in ext2_dax_write_iter()
[all …]
/Linux-v5.10/fs/
Daio.c561 void kiocb_set_cancel_fn(struct kiocb *iocb, kiocb_cancel_fn *cancel) in kiocb_set_cancel_fn() argument
563 struct aio_kiocb *req = container_of(iocb, struct aio_kiocb, rw); in kiocb_set_cancel_fn()
1075 static inline void iocb_destroy(struct aio_kiocb *iocb) in iocb_destroy() argument
1077 if (iocb->ki_eventfd) in iocb_destroy()
1078 eventfd_ctx_put(iocb->ki_eventfd); in iocb_destroy()
1079 if (iocb->ki_filp) in iocb_destroy()
1080 fput(iocb->ki_filp); in iocb_destroy()
1081 percpu_ref_put(&iocb->ki_ctx->reqs); in iocb_destroy()
1082 kmem_cache_free(kiocb_cachep, iocb); in iocb_destroy()
1088 static void aio_complete(struct aio_kiocb *iocb) in aio_complete() argument
[all …]
Dblock_dev.c199 static unsigned int dio_bio_write_op(struct kiocb *iocb) in dio_bio_write_op() argument
204 if (iocb->ki_flags & IOCB_DSYNC) in dio_bio_write_op()
220 __blkdev_direct_IO_simple(struct kiocb *iocb, struct iov_iter *iter, in __blkdev_direct_IO_simple() argument
223 struct file *file = iocb->ki_filp; in __blkdev_direct_IO_simple()
226 loff_t pos = iocb->ki_pos; in __blkdev_direct_IO_simple()
248 bio.bi_write_hint = iocb->ki_hint; in __blkdev_direct_IO_simple()
251 bio.bi_ioprio = iocb->ki_ioprio; in __blkdev_direct_IO_simple()
263 bio.bi_opf = dio_bio_write_op(iocb); in __blkdev_direct_IO_simple()
266 if (iocb->ki_flags & IOCB_HIPRI) in __blkdev_direct_IO_simple()
267 bio_set_polled(&bio, iocb); in __blkdev_direct_IO_simple()
[all …]
Ddirect-io.c142 struct kiocb *iocb; /* kiocb */ member
238 loff_t offset = dio->iocb->ki_pos; in dio_complete()
272 err = dio->end_io(dio->iocb, offset, ret, dio->private); in dio_complete()
296 dio_warn_stale_pagecache(dio->iocb->ki_filp); in dio_complete()
307 dio->iocb->ki_pos += transferred; in dio_complete()
310 ret = generic_write_sync(dio->iocb, ret); in dio_complete()
311 dio->iocb->ki_complete(dio->iocb, ret, 0); in dio_complete()
410 bio->bi_write_hint = dio->iocb->ki_hint; in dio_bio_alloc()
482 if (!(dio->iocb->ki_flags & IOCB_HIPRI) || in dio_await_one()
1126 do_blockdev_direct_IO(struct kiocb *iocb, struct inode *inode, in do_blockdev_direct_IO() argument
[all …]
/Linux-v5.10/fs/xfs/
Dxfs_file.c202 struct kiocb *iocb, in xfs_file_dio_aio_read() argument
205 struct xfs_inode *ip = XFS_I(file_inode(iocb->ki_filp)); in xfs_file_dio_aio_read()
209 trace_xfs_file_direct_read(ip, count, iocb->ki_pos); in xfs_file_dio_aio_read()
214 file_accessed(iocb->ki_filp); in xfs_file_dio_aio_read()
216 if (iocb->ki_flags & IOCB_NOWAIT) { in xfs_file_dio_aio_read()
222 ret = iomap_dio_rw(iocb, to, &xfs_read_iomap_ops, NULL, in xfs_file_dio_aio_read()
223 is_sync_kiocb(iocb)); in xfs_file_dio_aio_read()
231 struct kiocb *iocb, in xfs_file_dax_read() argument
234 struct xfs_inode *ip = XFS_I(iocb->ki_filp->f_mapping->host); in xfs_file_dax_read()
238 trace_xfs_file_dax_read(ip, count, iocb->ki_pos); in xfs_file_dax_read()
[all …]
/Linux-v5.10/fs/iomap/
Ddirect-io.c27 struct kiocb *iocb; member
67 if (dio->iocb->ki_flags & IOCB_HIPRI) in iomap_dio_submit_bio()
68 bio_set_polled(bio, dio->iocb); in iomap_dio_submit_bio()
73 file_inode(dio->iocb->ki_filp), in iomap_dio_submit_bio()
82 struct kiocb *iocb = dio->iocb; in iomap_dio_complete() local
83 struct inode *inode = file_inode(iocb->ki_filp); in iomap_dio_complete()
84 loff_t offset = iocb->ki_pos; in iomap_dio_complete()
88 ret = dops->end_io(iocb, dio->size, ret, dio->flags); in iomap_dio_complete()
96 iocb->ki_pos += ret; in iomap_dio_complete()
118 dio_warn_stale_pagecache(iocb->ki_filp); in iomap_dio_complete()
[all …]
/Linux-v5.10/fs/ocfs2/
Daops.h53 #define ocfs2_iocb_is_rw_locked(iocb) \ argument
54 test_bit(0, (unsigned long *)&iocb->private)
55 static inline void ocfs2_iocb_set_rw_locked(struct kiocb *iocb, int level) in ocfs2_iocb_set_rw_locked() argument
57 set_bit(0, (unsigned long *)&iocb->private); in ocfs2_iocb_set_rw_locked()
59 set_bit(1, (unsigned long *)&iocb->private); in ocfs2_iocb_set_rw_locked()
61 clear_bit(1, (unsigned long *)&iocb->private); in ocfs2_iocb_set_rw_locked()
75 #define ocfs2_iocb_clear_rw_locked(iocb) \ argument
76 clear_bit(OCFS2_IOCB_RW_LOCK, (unsigned long *)&iocb->private)
77 #define ocfs2_iocb_rw_locked_level(iocb) \ argument
78 test_bit(OCFS2_IOCB_RW_LOCK_LEVEL, (unsigned long *)&iocb->private)
/Linux-v5.10/fs/overlayfs/
Dfile.c19 struct kiocb iocb; member
262 struct kiocb *iocb = &aio_req->iocb; in ovl_aio_cleanup_handler() local
265 if (iocb->ki_flags & IOCB_WRITE) { in ovl_aio_cleanup_handler()
269 __sb_writers_acquired(file_inode(iocb->ki_filp)->i_sb, in ovl_aio_cleanup_handler()
271 file_end_write(iocb->ki_filp); in ovl_aio_cleanup_handler()
275 orig_iocb->ki_pos = iocb->ki_pos; in ovl_aio_cleanup_handler()
280 static void ovl_aio_rw_complete(struct kiocb *iocb, long res, long res2) in ovl_aio_rw_complete() argument
282 struct ovl_aio_req *aio_req = container_of(iocb, in ovl_aio_rw_complete()
283 struct ovl_aio_req, iocb); in ovl_aio_rw_complete()
290 static ssize_t ovl_read_iter(struct kiocb *iocb, struct iov_iter *iter) in ovl_read_iter() argument
[all …]
/Linux-v5.10/fs/zonefs/
Dsuper.c628 static int zonefs_file_write_dio_end_io(struct kiocb *iocb, ssize_t size, in zonefs_file_write_dio_end_io() argument
631 struct inode *inode = file_inode(iocb->ki_filp); in zonefs_file_write_dio_end_io()
648 if (i_size_read(inode) < iocb->ki_pos + size) { in zonefs_file_write_dio_end_io()
649 zonefs_update_stats(inode, iocb->ki_pos + size); in zonefs_file_write_dio_end_io()
650 zonefs_i_size_write(inode, iocb->ki_pos + size); in zonefs_file_write_dio_end_io()
662 static ssize_t zonefs_file_dio_append(struct kiocb *iocb, struct iov_iter *from) in zonefs_file_dio_append() argument
664 struct inode *inode = file_inode(iocb->ki_filp); in zonefs_file_dio_append()
687 bio->bi_write_hint = iocb->ki_hint; in zonefs_file_dio_append()
688 bio->bi_ioprio = iocb->ki_ioprio; in zonefs_file_dio_append()
690 if (iocb->ki_flags & IOCB_DSYNC) in zonefs_file_dio_append()
[all …]
/Linux-v5.10/fs/nfs/
Ddirect.c73 struct kiocb * iocb; /* controlling i/o request */ member
164 ssize_t nfs_direct_IO(struct kiocb *iocb, struct iov_iter *iter) in nfs_direct_IO() argument
166 struct inode *inode = iocb->ki_filp->f_mapping->host; in nfs_direct_IO()
175 return nfs_file_direct_read(iocb, iter); in nfs_direct_IO()
176 return nfs_file_direct_write(iocb, iter); in nfs_direct_IO()
246 if (dreq->iocb) in nfs_direct_wait()
272 if (dreq->iocb) { in nfs_direct_complete()
278 dreq->iocb->ki_complete(dreq->iocb, res, 0); in nfs_direct_complete()
442 ssize_t nfs_file_direct_read(struct kiocb *iocb, struct iov_iter *iter) in nfs_file_direct_read() argument
444 struct file *file = iocb->ki_filp; in nfs_file_direct_read()
[all …]
Dfile.c158 nfs_file_read(struct kiocb *iocb, struct iov_iter *to) in nfs_file_read() argument
160 struct inode *inode = file_inode(iocb->ki_filp); in nfs_file_read()
163 if (iocb->ki_flags & IOCB_DIRECT) in nfs_file_read()
164 return nfs_file_direct_read(iocb, to); in nfs_file_read()
167 iocb->ki_filp, in nfs_file_read()
168 iov_iter_count(to), (unsigned long) iocb->ki_pos); in nfs_file_read()
171 result = nfs_revalidate_mapping(inode, iocb->ki_filp->f_mapping); in nfs_file_read()
173 result = generic_file_read_iter(iocb, to); in nfs_file_read()
605 ssize_t nfs_file_write(struct kiocb *iocb, struct iov_iter *from) in nfs_file_write() argument
607 struct file *file = iocb->ki_filp; in nfs_file_write()
[all …]
/Linux-v5.10/drivers/gpu/drm/
Ddrm_dp_aux_dev.c146 static ssize_t auxdev_read_iter(struct kiocb *iocb, struct iov_iter *to) in auxdev_read_iter() argument
148 struct drm_dp_aux_dev *aux_dev = iocb->ki_filp->private_data; in auxdev_read_iter()
149 loff_t pos = iocb->ki_pos; in auxdev_read_iter()
179 if (pos != iocb->ki_pos) in auxdev_read_iter()
180 res = pos - iocb->ki_pos; in auxdev_read_iter()
181 iocb->ki_pos = pos; in auxdev_read_iter()
189 static ssize_t auxdev_write_iter(struct kiocb *iocb, struct iov_iter *from) in auxdev_write_iter() argument
191 struct drm_dp_aux_dev *aux_dev = iocb->ki_filp->private_data; in auxdev_write_iter()
192 loff_t pos = iocb->ki_pos; in auxdev_write_iter()
222 if (pos != iocb->ki_pos) in auxdev_write_iter()
[all …]
/Linux-v5.10/tools/usb/ffs-aio-example/multibuff/device_app/
Daio_multibuff.c144 struct iocb **iocb; member
212 iobuf->iocb = malloc(n*sizeof(*iobuf->iocb)); in init_bufs()
218 iobuf->iocb[i] = malloc(sizeof(**iobuf->iocb)); in init_bufs()
228 free(iobuf->iocb[i]); in delete_bufs()
231 free(iobuf->iocb); in delete_bufs()
332 io_prep_pwrite(iobuf[i].iocb[j], ep1, in main()
336 iobuf[i].iocb[j]->u.c.flags |= IOCB_FLAG_RESFD; in main()
337 iobuf[i].iocb[j]->u.c.resfd = evfd; in main()
340 ret = io_submit(ctx, iobuf[i].cnt, iobuf[i].iocb); in main()
/Linux-v5.10/fs/9p/
Dvfs_file.c383 v9fs_file_read_iter(struct kiocb *iocb, struct iov_iter *to) in v9fs_file_read_iter() argument
385 struct p9_fid *fid = iocb->ki_filp->private_data; in v9fs_file_read_iter()
389 iov_iter_count(to), iocb->ki_pos); in v9fs_file_read_iter()
391 if (iocb->ki_filp->f_flags & O_NONBLOCK) in v9fs_file_read_iter()
392 ret = p9_client_read_once(fid, iocb->ki_pos, to, &err); in v9fs_file_read_iter()
394 ret = p9_client_read(fid, iocb->ki_pos, to, &err); in v9fs_file_read_iter()
398 iocb->ki_pos += ret; in v9fs_file_read_iter()
411 v9fs_file_write_iter(struct kiocb *iocb, struct iov_iter *from) in v9fs_file_write_iter() argument
413 struct file *file = iocb->ki_filp; in v9fs_file_write_iter()
418 retval = generic_write_checks(iocb, from); in v9fs_file_write_iter()
[all …]
/Linux-v5.10/fs/gfs2/
Dfile.c784 static ssize_t gfs2_file_direct_read(struct kiocb *iocb, struct iov_iter *to, in gfs2_file_direct_read() argument
787 struct file *file = iocb->ki_filp; in gfs2_file_direct_read()
800 ret = iomap_dio_rw(iocb, to, &gfs2_iomap_ops, NULL, in gfs2_file_direct_read()
801 is_sync_kiocb(iocb)); in gfs2_file_direct_read()
809 static ssize_t gfs2_file_direct_write(struct kiocb *iocb, struct iov_iter *from, in gfs2_file_direct_write() argument
812 struct file *file = iocb->ki_filp; in gfs2_file_direct_write()
816 loff_t offset = iocb->ki_pos; in gfs2_file_direct_write()
836 ret = iomap_dio_rw(iocb, from, &gfs2_iomap_ops, NULL, in gfs2_file_direct_write()
837 is_sync_kiocb(iocb)); in gfs2_file_direct_write()
847 static ssize_t gfs2_file_read_iter(struct kiocb *iocb, struct iov_iter *to) in gfs2_file_read_iter() argument
[all …]
/Linux-v5.10/fs/ceph/
Dfile.c829 static ssize_t ceph_sync_read(struct kiocb *iocb, struct iov_iter *to, in ceph_sync_read() argument
832 struct file *file = iocb->ki_filp; in ceph_sync_read()
838 u64 off = iocb->ki_pos; in ceph_sync_read()
945 if (off > iocb->ki_pos) { in ceph_sync_read()
949 ret = off - iocb->ki_pos; in ceph_sync_read()
950 iocb->ki_pos = off; in ceph_sync_read()
958 struct kiocb *iocb; member
986 if (aio_req->iocb->ki_flags & IOCB_DIRECT) in ceph_aio_complete()
998 loff_t endoff = aio_req->iocb->ki_pos + aio_req->total_len; in ceph_aio_complete()
1017 aio_req->iocb->ki_complete(aio_req->iocb, ret, 0); in ceph_aio_complete()
[all …]
/Linux-v5.10/drivers/nvme/target/
Dio-cmd-file.c102 struct kiocb *iocb = &req->f.iocb; in nvmet_file_submit_bvec() local
103 ssize_t (*call_iter)(struct kiocb *iocb, struct iov_iter *iter); in nvmet_file_submit_bvec()
119 iocb->ki_pos = pos; in nvmet_file_submit_bvec()
120 iocb->ki_filp = req->ns->file; in nvmet_file_submit_bvec()
121 iocb->ki_flags = ki_flags | iocb_flags(req->ns->file); in nvmet_file_submit_bvec()
123 return call_iter(iocb, &iter); in nvmet_file_submit_bvec()
126 static void nvmet_file_io_done(struct kiocb *iocb, long ret, long ret2) in nvmet_file_io_done() argument
128 struct nvmet_req *req = container_of(iocb, struct nvmet_req, f.iocb); in nvmet_file_io_done()
163 memset(&req->f.iocb, 0, sizeof(struct kiocb)); in nvmet_file_execute_io()
200 req->f.iocb.ki_complete = nvmet_file_io_done; in nvmet_file_execute_io()
[all …]
/Linux-v5.10/fs/cifs/
Dcifsfs.h105 extern ssize_t cifs_user_readv(struct kiocb *iocb, struct iov_iter *to);
106 extern ssize_t cifs_direct_readv(struct kiocb *iocb, struct iov_iter *to);
107 extern ssize_t cifs_strict_readv(struct kiocb *iocb, struct iov_iter *to);
108 extern ssize_t cifs_user_writev(struct kiocb *iocb, struct iov_iter *from);
109 extern ssize_t cifs_direct_writev(struct kiocb *iocb, struct iov_iter *from);
110 extern ssize_t cifs_strict_writev(struct kiocb *iocb, struct iov_iter *from);
/Linux-v5.10/mm/
Dfilemap.c2185 ssize_t generic_file_buffered_read(struct kiocb *iocb, in generic_file_buffered_read() argument
2188 struct file *filp = iocb->ki_filp; in generic_file_buffered_read()
2192 loff_t *ppos = &iocb->ki_pos; in generic_file_buffered_read()
2215 if (written && (iocb->ki_flags & IOCB_WAITQ)) in generic_file_buffered_read()
2216 iocb->ki_flags |= IOCB_NOWAIT; in generic_file_buffered_read()
2233 if (iocb->ki_flags & IOCB_NOIO) in generic_file_buffered_read()
2243 if (iocb->ki_flags & IOCB_NOIO) { in generic_file_buffered_read()
2257 if (iocb->ki_flags & IOCB_WAITQ) { in generic_file_buffered_read()
2263 iocb->ki_waitq); in generic_file_buffered_read()
2265 if (iocb->ki_flags & IOCB_NOWAIT) { in generic_file_buffered_read()
[all …]
/Linux-v5.10/fs/fuse/
Dfile.c664 struct inode *inode = file_inode(io->iocb->ki_filp); in fuse_aio_complete()
673 io->iocb->ki_complete(io->iocb, res, 0); in fuse_aio_complete()
756 struct file *file = ia->io->iocb->ki_filp; in fuse_send_read()
985 static ssize_t fuse_cache_read_iter(struct kiocb *iocb, struct iov_iter *to) in fuse_cache_read_iter() argument
987 struct inode *inode = iocb->ki_filp->f_mapping->host; in fuse_cache_read_iter()
996 (iocb->ki_pos + iov_iter_count(to) > i_size_read(inode))) { in fuse_cache_read_iter()
998 err = fuse_update_attributes(inode, iocb->ki_filp); in fuse_cache_read_iter()
1003 return generic_file_read_iter(iocb, to); in fuse_cache_read_iter()
1028 static unsigned int fuse_write_flags(struct kiocb *iocb) in fuse_write_flags() argument
1030 unsigned int flags = iocb->ki_filp->f_flags; in fuse_write_flags()
[all …]
Ddax.c701 ssize_t fuse_dax_read_iter(struct kiocb *iocb, struct iov_iter *to) in fuse_dax_read_iter() argument
703 struct inode *inode = file_inode(iocb->ki_filp); in fuse_dax_read_iter()
706 if (iocb->ki_flags & IOCB_NOWAIT) { in fuse_dax_read_iter()
713 ret = dax_iomap_rw(iocb, to, &fuse_iomap_ops); in fuse_dax_read_iter()
720 static bool file_extending_write(struct kiocb *iocb, struct iov_iter *from) in file_extending_write() argument
722 struct inode *inode = file_inode(iocb->ki_filp); in file_extending_write()
725 ((iocb->ki_pos) >= i_size_read(inode) || in file_extending_write()
726 (iocb->ki_pos + iov_iter_count(from) > i_size_read(inode)))); in file_extending_write()
729 static ssize_t fuse_dax_direct_write(struct kiocb *iocb, struct iov_iter *from) in fuse_dax_direct_write() argument
731 struct inode *inode = file_inode(iocb->ki_filp); in fuse_dax_direct_write()
[all …]
/Linux-v5.10/fs/udf/
Dfile.c107 static ssize_t udf_adinicb_direct_IO(struct kiocb *iocb, struct iov_iter *iter) in udf_adinicb_direct_IO() argument
135 static ssize_t udf_file_write_iter(struct kiocb *iocb, struct iov_iter *from) in udf_file_write_iter() argument
138 struct file *file = iocb->ki_filp; in udf_file_write_iter()
145 retval = generic_write_checks(iocb, from); in udf_file_write_iter()
151 loff_t end = iocb->ki_pos + iov_iter_count(from); in udf_file_write_iter()
168 retval = __generic_file_write_iter(iocb, from); in udf_file_write_iter()
174 retval = generic_write_sync(iocb, retval); in udf_file_write_iter()
/Linux-v5.10/fs/coda/
Dfile.c38 coda_file_read_iter(struct kiocb *iocb, struct iov_iter *to) in coda_file_read_iter() argument
40 struct file *coda_file = iocb->ki_filp; in coda_file_read_iter()
43 loff_t ki_pos = iocb->ki_pos; in coda_file_read_iter()
53 ret = vfs_iter_read(cfi->cfi_container, to, &iocb->ki_pos, 0); in coda_file_read_iter()
63 coda_file_write_iter(struct kiocb *iocb, struct iov_iter *to) in coda_file_write_iter() argument
65 struct file *coda_file = iocb->ki_filp; in coda_file_write_iter()
69 loff_t ki_pos = iocb->ki_pos; in coda_file_write_iter()
81 ret = vfs_iter_write(cfi->cfi_container, to, &iocb->ki_pos, 0); in coda_file_write_iter()
/Linux-v5.10/drivers/scsi/qla2xxx/
Dqla_target.c113 int fn, void *iocb, int flags);
556 memcpy(e->u.nack.iocb, ntfy, sizeof(struct imm_ntfy_from_isp)); in qla24xx_post_nack_work()
690 (struct imm_ntfy_from_isp *)e->u.nack.iocb, e->u.nack.type); in qla24xx_do_nack_work()
784 struct imm_ntfy_from_isp *iocb) in qlt_plogi_ack_find_add() argument
795 pla->iocb.u.isp24.port_name); in qlt_plogi_ack_find_add()
796 qlt_send_term_imm_notif(vha, &pla->iocb, 1); in qlt_plogi_ack_find_add()
797 memcpy(&pla->iocb, iocb, sizeof(pla->iocb)); in qlt_plogi_ack_find_add()
810 memcpy(&pla->iocb, iocb, sizeof(pla->iocb)); in qlt_plogi_ack_find_add()
820 struct imm_ntfy_from_isp *iocb = &pla->iocb; in qlt_plogi_ack_unref() local
833 " exch %#x ox_id %#x\n", iocb->u.isp24.port_name, in qlt_plogi_ack_unref()
[all …]

12345