Home
last modified time | relevance | path

Searched refs:cur (Results 1 – 25 of 99) sorted by relevance

1234

/fs/xfs/libxfs/
Dxfs_btree.c58 struct xfs_btree_cur *cur, in __xfs_btree_check_lblock() argument
63 struct xfs_mount *mp = cur->bc_mp; in __xfs_btree_check_lblock()
64 xfs_btnum_t btnum = cur->bc_btnum; in __xfs_btree_check_lblock()
82 cur->bc_ops->get_maxrecs(cur, level)) in __xfs_btree_check_lblock()
85 !xfs_btree_check_lptr(cur, be64_to_cpu(block->bb_u.l.bb_leftsib), in __xfs_btree_check_lblock()
89 !xfs_btree_check_lptr(cur, be64_to_cpu(block->bb_u.l.bb_rightsib), in __xfs_btree_check_lblock()
99 struct xfs_btree_cur *cur, in xfs_btree_check_lblock() argument
104 struct xfs_mount *mp = cur->bc_mp; in xfs_btree_check_lblock()
107 fa = __xfs_btree_check_lblock(cur, block, level, bp); in xfs_btree_check_lblock()
124 struct xfs_btree_cur *cur, in __xfs_btree_check_sblock() argument
[all …]
Dxfs_refcount.c45 struct xfs_btree_cur *cur, in xfs_refcount_lookup_le() argument
49 trace_xfs_refcount_lookup(cur->bc_mp, cur->bc_private.a.agno, bno, in xfs_refcount_lookup_le()
51 cur->bc_rec.rc.rc_startblock = bno; in xfs_refcount_lookup_le()
52 cur->bc_rec.rc.rc_blockcount = 0; in xfs_refcount_lookup_le()
53 return xfs_btree_lookup(cur, XFS_LOOKUP_LE, stat); in xfs_refcount_lookup_le()
62 struct xfs_btree_cur *cur, in xfs_refcount_lookup_ge() argument
66 trace_xfs_refcount_lookup(cur->bc_mp, cur->bc_private.a.agno, bno, in xfs_refcount_lookup_ge()
68 cur->bc_rec.rc.rc_startblock = bno; in xfs_refcount_lookup_ge()
69 cur->bc_rec.rc.rc_blockcount = 0; in xfs_refcount_lookup_ge()
70 return xfs_btree_lookup(cur, XFS_LOOKUP_GE, stat); in xfs_refcount_lookup_ge()
[all …]
Dxfs_iext_tree.c140 static inline struct xfs_iext_rec *cur_rec(struct xfs_iext_cursor *cur) in cur_rec() argument
142 return &cur->leaf->recs[cur->pos]; in cur_rec()
146 struct xfs_iext_cursor *cur) in xfs_iext_valid() argument
148 if (!cur->leaf) in xfs_iext_valid()
150 if (cur->pos < 0 || cur->pos >= xfs_iext_max_recs(ifp)) in xfs_iext_valid()
152 if (xfs_iext_rec_is_empty(cur_rec(cur))) in xfs_iext_valid()
199 struct xfs_iext_cursor *cur) in xfs_iext_first() argument
201 cur->pos = 0; in xfs_iext_first()
202 cur->leaf = xfs_iext_find_first_leaf(ifp); in xfs_iext_first()
208 struct xfs_iext_cursor *cur) in xfs_iext_last() argument
[all …]
Dxfs_ialloc_btree.c26 struct xfs_btree_cur *cur, in xfs_inobt_get_minrecs() argument
29 return M_IGEO(cur->bc_mp)->inobt_mnr[level != 0]; in xfs_inobt_get_minrecs()
34 struct xfs_btree_cur *cur) in xfs_inobt_dup_cursor() argument
36 return xfs_inobt_init_cursor(cur->bc_mp, cur->bc_tp, in xfs_inobt_dup_cursor()
37 cur->bc_private.a.agbp, cur->bc_private.a.agno, in xfs_inobt_dup_cursor()
38 cur->bc_btnum); in xfs_inobt_dup_cursor()
43 struct xfs_btree_cur *cur, in xfs_inobt_set_root() argument
47 struct xfs_buf *agbp = cur->bc_private.a.agbp; in xfs_inobt_set_root()
52 xfs_ialloc_log_agi(cur->bc_tp, agbp, XFS_AGI_ROOT | XFS_AGI_LEVEL); in xfs_inobt_set_root()
57 struct xfs_btree_cur *cur, in xfs_finobt_set_root() argument
[all …]
Dxfs_rmap.c31 struct xfs_btree_cur *cur, in xfs_rmap_lookup_le() argument
39 cur->bc_rec.r.rm_startblock = bno; in xfs_rmap_lookup_le()
40 cur->bc_rec.r.rm_blockcount = len; in xfs_rmap_lookup_le()
41 cur->bc_rec.r.rm_owner = owner; in xfs_rmap_lookup_le()
42 cur->bc_rec.r.rm_offset = offset; in xfs_rmap_lookup_le()
43 cur->bc_rec.r.rm_flags = flags; in xfs_rmap_lookup_le()
44 return xfs_btree_lookup(cur, XFS_LOOKUP_LE, stat); in xfs_rmap_lookup_le()
53 struct xfs_btree_cur *cur, in xfs_rmap_lookup_eq() argument
61 cur->bc_rec.r.rm_startblock = bno; in xfs_rmap_lookup_eq()
62 cur->bc_rec.r.rm_blockcount = len; in xfs_rmap_lookup_eq()
[all …]
Dxfs_alloc_btree.c25 struct xfs_btree_cur *cur) in xfs_allocbt_dup_cursor() argument
27 return xfs_allocbt_init_cursor(cur->bc_mp, cur->bc_tp, in xfs_allocbt_dup_cursor()
28 cur->bc_private.a.agbp, cur->bc_private.a.agno, in xfs_allocbt_dup_cursor()
29 cur->bc_btnum); in xfs_allocbt_dup_cursor()
34 struct xfs_btree_cur *cur, in xfs_allocbt_set_root() argument
38 struct xfs_buf *agbp = cur->bc_private.a.agbp; in xfs_allocbt_set_root()
41 int btnum = cur->bc_btnum; in xfs_allocbt_set_root()
42 struct xfs_perag *pag = xfs_perag_get(cur->bc_mp, seqno); in xfs_allocbt_set_root()
51 xfs_alloc_log_agf(cur->bc_tp, agbp, XFS_AGF_ROOTS | XFS_AGF_LEVELS); in xfs_allocbt_set_root()
56 struct xfs_btree_cur *cur, in xfs_allocbt_alloc_block() argument
[all …]
Dxfs_refcount_btree.c25 struct xfs_btree_cur *cur) in xfs_refcountbt_dup_cursor() argument
27 return xfs_refcountbt_init_cursor(cur->bc_mp, cur->bc_tp, in xfs_refcountbt_dup_cursor()
28 cur->bc_private.a.agbp, cur->bc_private.a.agno); in xfs_refcountbt_dup_cursor()
33 struct xfs_btree_cur *cur, in xfs_refcountbt_set_root() argument
37 struct xfs_buf *agbp = cur->bc_private.a.agbp; in xfs_refcountbt_set_root()
40 struct xfs_perag *pag = xfs_perag_get(cur->bc_mp, seqno); in xfs_refcountbt_set_root()
49 xfs_alloc_log_agf(cur->bc_tp, agbp, in xfs_refcountbt_set_root()
55 struct xfs_btree_cur *cur, in xfs_refcountbt_alloc_block() argument
60 struct xfs_buf *agbp = cur->bc_private.a.agbp; in xfs_refcountbt_alloc_block()
66 args.tp = cur->bc_tp; in xfs_refcountbt_alloc_block()
[all …]
Dxfs_bmap_btree.c164 struct xfs_btree_cur *cur) in xfs_bmbt_dup_cursor() argument
168 new = xfs_bmbt_init_cursor(cur->bc_mp, cur->bc_tp, in xfs_bmbt_dup_cursor()
169 cur->bc_private.b.ip, cur->bc_private.b.whichfork); in xfs_bmbt_dup_cursor()
175 new->bc_private.b.flags = cur->bc_private.b.flags; in xfs_bmbt_dup_cursor()
196 struct xfs_btree_cur *cur, in xfs_bmbt_alloc_block() argument
205 args.tp = cur->bc_tp; in xfs_bmbt_alloc_block()
206 args.mp = cur->bc_mp; in xfs_bmbt_alloc_block()
207 args.fsbno = cur->bc_tp->t_firstblock; in xfs_bmbt_alloc_block()
208 xfs_rmap_ino_bmbt_owner(&args.oinfo, cur->bc_private.b.ip->i_ino, in xfs_bmbt_alloc_block()
209 cur->bc_private.b.whichfork); in xfs_bmbt_alloc_block()
[all …]
Dxfs_rmap_btree.c51 struct xfs_btree_cur *cur) in xfs_rmapbt_dup_cursor() argument
53 return xfs_rmapbt_init_cursor(cur->bc_mp, cur->bc_tp, in xfs_rmapbt_dup_cursor()
54 cur->bc_private.a.agbp, cur->bc_private.a.agno); in xfs_rmapbt_dup_cursor()
59 struct xfs_btree_cur *cur, in xfs_rmapbt_set_root() argument
63 struct xfs_buf *agbp = cur->bc_private.a.agbp; in xfs_rmapbt_set_root()
66 int btnum = cur->bc_btnum; in xfs_rmapbt_set_root()
67 struct xfs_perag *pag = xfs_perag_get(cur->bc_mp, seqno); in xfs_rmapbt_set_root()
76 xfs_alloc_log_agf(cur->bc_tp, agbp, XFS_AGF_ROOTS | XFS_AGF_LEVELS); in xfs_rmapbt_set_root()
81 struct xfs_btree_cur *cur, in xfs_rmapbt_alloc_block() argument
86 struct xfs_buf *agbp = cur->bc_private.a.agbp; in xfs_rmapbt_alloc_block()
[all …]
Dxfs_btree.h88 #define XFS_BTREE_STATS_INC(cur, stat) \ argument
89 XFS_STATS_INC_OFF((cur)->bc_mp, (cur)->bc_statoff + __XBTS_ ## stat)
90 #define XFS_BTREE_STATS_ADD(cur, stat, val) \ argument
91 XFS_STATS_ADD_OFF((cur)->bc_mp, (cur)->bc_statoff + __XBTS_ ## stat, val)
106 void (*set_root)(struct xfs_btree_cur *cur,
110 int (*alloc_block)(struct xfs_btree_cur *cur,
114 int (*free_block)(struct xfs_btree_cur *cur, struct xfs_buf *bp);
117 void (*update_lastrec)(struct xfs_btree_cur *cur,
123 int (*get_minrecs)(struct xfs_btree_cur *cur, int level);
124 int (*get_maxrecs)(struct xfs_btree_cur *cur, int level);
[all …]
Dxfs_ialloc.c36 struct xfs_btree_cur *cur, /* btree cursor */ in xfs_inobt_lookup() argument
41 cur->bc_rec.i.ir_startino = ino; in xfs_inobt_lookup()
42 cur->bc_rec.i.ir_holemask = 0; in xfs_inobt_lookup()
43 cur->bc_rec.i.ir_count = 0; in xfs_inobt_lookup()
44 cur->bc_rec.i.ir_freecount = 0; in xfs_inobt_lookup()
45 cur->bc_rec.i.ir_free = 0; in xfs_inobt_lookup()
46 return xfs_btree_lookup(cur, dir, stat); in xfs_inobt_lookup()
55 struct xfs_btree_cur *cur, /* btree cursor */ in xfs_inobt_update() argument
61 if (xfs_sb_version_hassparseinodes(&cur->bc_mp->m_sb)) { in xfs_inobt_update()
70 return xfs_btree_update(cur, &rec); in xfs_inobt_update()
[all …]
Dxfs_bmap.c98 struct xfs_btree_cur *cur, in xfs_bmbt_lookup_eq() argument
102 cur->bc_rec.b = *irec; in xfs_bmbt_lookup_eq()
103 return xfs_btree_lookup(cur, XFS_LOOKUP_EQ, stat); in xfs_bmbt_lookup_eq()
108 struct xfs_btree_cur *cur, in xfs_bmbt_lookup_first() argument
111 cur->bc_rec.b.br_startoff = 0; in xfs_bmbt_lookup_first()
112 cur->bc_rec.b.br_startblock = 0; in xfs_bmbt_lookup_first()
113 cur->bc_rec.b.br_blockcount = 0; in xfs_bmbt_lookup_first()
114 return xfs_btree_lookup(cur, XFS_LOOKUP_GE, stat); in xfs_bmbt_lookup_first()
145 struct xfs_btree_cur *cur, in xfs_bmbt_update() argument
151 return xfs_btree_update(cur, &rec); in xfs_bmbt_update()
[all …]
Dxfs_inode_fork.h104 void xfs_iext_insert(struct xfs_inode *, struct xfs_iext_cursor *cur,
112 struct xfs_iext_cursor *cur,
116 struct xfs_iext_cursor *cur,
119 struct xfs_iext_cursor *cur,
122 struct xfs_iext_cursor *cur,
131 struct xfs_iext_cursor *cur, struct xfs_bmbt_irec *gotp) in xfs_iext_next_extent() argument
133 xfs_iext_next(ifp, cur); in xfs_iext_next_extent()
134 return xfs_iext_get_extent(ifp, cur, gotp); in xfs_iext_next_extent()
138 struct xfs_iext_cursor *cur, struct xfs_bmbt_irec *gotp) in xfs_iext_prev_extent() argument
140 xfs_iext_prev(ifp, cur); in xfs_iext_prev_extent()
[all …]
Dxfs_rmap.h122 int xfs_rmap_lookup_le(struct xfs_btree_cur *cur, xfs_agblock_t bno,
125 int xfs_rmap_lookup_eq(struct xfs_btree_cur *cur, xfs_agblock_t bno,
131 int xfs_rmap_get_rec(struct xfs_btree_cur *cur, struct xfs_rmap_irec *irec,
135 struct xfs_btree_cur *cur,
139 int xfs_rmap_query_range(struct xfs_btree_cur *cur,
142 int xfs_rmap_query_all(struct xfs_btree_cur *cur, xfs_rmap_query_range_fn fn,
184 int xfs_rmap_find_left_neighbor(struct xfs_btree_cur *cur, xfs_agblock_t bno,
187 int xfs_rmap_lookup_le_range(struct xfs_btree_cur *cur, xfs_agblock_t bno,
195 int xfs_rmap_has_record(struct xfs_btree_cur *cur, xfs_agblock_t bno,
197 int xfs_rmap_record_exists(struct xfs_btree_cur *cur, xfs_agblock_t bno,
[all …]
Dxfs_refcount.h9 extern int xfs_refcount_lookup_le(struct xfs_btree_cur *cur,
11 extern int xfs_refcount_lookup_ge(struct xfs_btree_cur *cur,
13 extern int xfs_refcount_lookup_eq(struct xfs_btree_cur *cur,
15 extern int xfs_refcount_get_rec(struct xfs_btree_cur *cur,
44 extern int xfs_refcount_find_shared(struct xfs_btree_cur *cur,
71 extern int xfs_refcount_has_record(struct xfs_btree_cur *cur,
76 extern int xfs_refcount_insert(struct xfs_btree_cur *cur,
/fs/xfs/scrub/
Dbtree.c27 struct xfs_btree_cur *cur, in __xchk_btree_process_error() argument
48 if (cur->bc_flags & XFS_BTREE_ROOT_IN_INODE) in __xchk_btree_process_error()
49 trace_xchk_ifork_btree_op_error(sc, cur, level, in __xchk_btree_process_error()
52 trace_xchk_btree_op_error(sc, cur, level, in __xchk_btree_process_error()
62 struct xfs_btree_cur *cur, in xchk_btree_process_error() argument
66 return __xchk_btree_process_error(sc, cur, level, error, in xchk_btree_process_error()
73 struct xfs_btree_cur *cur, in xchk_btree_xref_process_error() argument
77 return __xchk_btree_process_error(sc, cur, level, error, in xchk_btree_xref_process_error()
85 struct xfs_btree_cur *cur, in __xchk_btree_set_corrupt() argument
92 if (cur->bc_flags & XFS_BTREE_ROOT_IN_INODE) in __xchk_btree_set_corrupt()
[all …]
Dtrace.c20 struct xfs_btree_cur *cur, in xchk_btree_cur_fsbno() argument
23 if (level < cur->bc_nlevels && cur->bc_bufs[level]) in xchk_btree_cur_fsbno()
24 return XFS_DADDR_TO_FSB(cur->bc_mp, cur->bc_bufs[level]->b_bn); in xchk_btree_cur_fsbno()
25 else if (level == cur->bc_nlevels - 1 && in xchk_btree_cur_fsbno()
26 cur->bc_flags & XFS_BTREE_LONG_PTRS) in xchk_btree_cur_fsbno()
27 return XFS_INO_TO_FSB(cur->bc_mp, cur->bc_private.b.ip->i_ino); in xchk_btree_cur_fsbno()
28 else if (!(cur->bc_flags & XFS_BTREE_LONG_PTRS)) in xchk_btree_cur_fsbno()
29 return XFS_AGB_TO_FSB(cur->bc_mp, cur->bc_private.a.agno, 0); in xchk_btree_cur_fsbno()
Dialloc.c106 struct xfs_mount *mp = bs->cur->bc_mp; in xchk_iallocbt_chunk()
107 xfs_agnumber_t agno = bs->cur->bc_private.a.agno; in xchk_iallocbt_chunk()
114 xchk_btree_set_corrupt(bs->sc, bs->cur, 0); in xchk_iallocbt_chunk()
151 struct xfs_mount *mp = bs->cur->bc_mp; in xchk_iallocbt_check_cluster_ifree()
167 fsino = XFS_AGINO_TO_INO(mp, bs->cur->bc_private.a.agno, agino); in xchk_iallocbt_check_cluster_ifree()
172 xchk_btree_set_corrupt(bs->sc, bs->cur, 0); in xchk_iallocbt_check_cluster_ifree()
176 error = xfs_icache_inode_is_allocated(mp, bs->cur->bc_tp, fsino, in xchk_iallocbt_check_cluster_ifree()
195 xchk_btree_set_corrupt(bs->sc, bs->cur, 0); in xchk_iallocbt_check_cluster_ifree()
214 struct xfs_mount *mp = bs->cur->bc_mp; in xchk_iallocbt_check_cluster()
218 xfs_agnumber_t agno = bs->cur->bc_private.a.agno; in xchk_iallocbt_check_cluster()
[all …]
Dagheader_repair.c71 struct xfs_btree_cur *cur, in xrep_agf_walk_allocbt() argument
240 struct xfs_btree_cur *cur = NULL; in xrep_agf_calc_from_btrees() local
248 cur = xfs_allocbt_init_cursor(mp, sc->tp, agf_bp, sc->sa.agno, in xrep_agf_calc_from_btrees()
250 error = xfs_alloc_query_all(cur, xrep_agf_walk_allocbt, &raa); in xrep_agf_calc_from_btrees()
253 error = xfs_btree_count_blocks(cur, &blocks); in xrep_agf_calc_from_btrees()
256 xfs_btree_del_cursor(cur, error); in xrep_agf_calc_from_btrees()
262 cur = xfs_allocbt_init_cursor(mp, sc->tp, agf_bp, sc->sa.agno, in xrep_agf_calc_from_btrees()
264 error = xfs_btree_count_blocks(cur, &blocks); in xrep_agf_calc_from_btrees()
267 xfs_btree_del_cursor(cur, error); in xrep_agf_calc_from_btrees()
271 cur = xfs_rmapbt_init_cursor(mp, sc->tp, agf_bp, sc->sa.agno); in xrep_agf_calc_from_btrees()
[all …]
Drmap.c93 struct xfs_mount *mp = bs->cur->bc_mp; in xchk_rmapbt_rec()
95 xfs_agnumber_t agno = bs->cur->bc_private.a.agno; in xchk_rmapbt_rec()
103 if (!xchk_btree_process_error(bs->sc, bs->cur, 0, &error)) in xchk_rmapbt_rec()
108 xchk_btree_set_corrupt(bs->sc, bs->cur, 0); in xchk_rmapbt_rec()
118 xchk_btree_set_corrupt(bs->sc, bs->cur, 0); in xchk_rmapbt_rec()
127 xchk_btree_set_corrupt(bs->sc, bs->cur, 0); in xchk_rmapbt_rec()
137 xchk_btree_set_corrupt(bs->sc, bs->cur, 0); in xchk_rmapbt_rec()
140 xchk_btree_set_corrupt(bs->sc, bs->cur, 0); in xchk_rmapbt_rec()
143 xchk_btree_set_corrupt(bs->sc, bs->cur, 0); in xchk_rmapbt_rec()
146 xchk_btree_set_corrupt(bs->sc, bs->cur, 0); in xchk_rmapbt_rec()
[all …]
Dtrace.h322 TP_PROTO(struct xfs_scrub *sc, struct xfs_btree_cur *cur,
324 TP_ARGS(sc, cur, level, error, ret_ip),
337 xfs_fsblock_t fsbno = xchk_btree_cur_fsbno(cur, level);
341 __entry->btnum = cur->bc_btnum;
343 __entry->agno = XFS_FSB_TO_AGNO(cur->bc_mp, fsbno);
344 __entry->bno = XFS_FSB_TO_AGBNO(cur->bc_mp, fsbno);
345 __entry->ptr = cur->bc_ptrs[level];
362 TP_PROTO(struct xfs_scrub *sc, struct xfs_btree_cur *cur,
364 TP_ARGS(sc, cur, level, error, ret_ip),
379 xfs_fsblock_t fsbno = xchk_btree_cur_fsbno(cur, level);
[all …]
Dbitmap.c252 struct xfs_btree_cur *cur) in xfs_bitmap_set_btcur_path() argument
259 for (i = 0; i < cur->bc_nlevels && cur->bc_ptrs[i] == 1; i++) { in xfs_bitmap_set_btcur_path()
260 xfs_btree_get_block(cur, i, &bp); in xfs_bitmap_set_btcur_path()
263 fsb = XFS_DADDR_TO_FSB(cur->bc_mp, bp->b_bn); in xfs_bitmap_set_btcur_path()
275 struct xfs_btree_cur *cur, in xfs_bitmap_collect_btblock() argument
283 xfs_btree_get_block(cur, level, &bp); in xfs_bitmap_collect_btblock()
287 fsbno = XFS_DADDR_TO_FSB(cur->bc_mp, bp->b_bn); in xfs_bitmap_collect_btblock()
295 struct xfs_btree_cur *cur) in xfs_bitmap_set_btblocks() argument
297 return xfs_btree_visit_blocks(cur, xfs_bitmap_collect_btblock, bitmap); in xfs_bitmap_set_btblocks()
Dbtree.h13 struct xfs_btree_cur *cur, int level, int *error);
17 struct xfs_btree_cur *cur, int level, int *error);
21 struct xfs_btree_cur *cur, int level);
25 struct xfs_btree_cur *cur, int level);
35 struct xfs_btree_cur *cur; member
47 int xchk_btree(struct xfs_scrub *sc, struct xfs_btree_cur *cur,
/fs/xfs/
Dxfs_trans_ail.c156 struct xfs_ail_cursor *cur) in xfs_trans_ail_cursor_init() argument
158 cur->item = NULL; in xfs_trans_ail_cursor_init()
159 list_add_tail(&cur->list, &ailp->ail_cursors); in xfs_trans_ail_cursor_init()
169 struct xfs_ail_cursor *cur) in xfs_trans_ail_cursor_next() argument
171 struct xfs_log_item *lip = cur->item; in xfs_trans_ail_cursor_next()
176 cur->item = xfs_ail_next(ailp, lip); in xfs_trans_ail_cursor_next()
186 struct xfs_ail_cursor *cur) in xfs_trans_ail_cursor_done() argument
188 cur->item = NULL; in xfs_trans_ail_cursor_done()
189 list_del_init(&cur->list); in xfs_trans_ail_cursor_done()
205 struct xfs_ail_cursor *cur; in xfs_trans_ail_cursor_clear() local
[all …]
/fs/cifs/
Dsmb2file.c122 struct smb2_lock_element *buf, *cur; in smb2_unlock_range() local
146 cur = buf; in smb2_unlock_range()
166 cur->Length = cpu_to_le64(li->length); in smb2_unlock_range()
167 cur->Offset = cpu_to_le64(li->offset); in smb2_unlock_range()
168 cur->Flags = cpu_to_le32(SMB2_LOCKFLAG_UNLOCK); in smb2_unlock_range()
194 cur = buf; in smb2_unlock_range()
197 cur++; in smb2_unlock_range()
223 struct smb2_lock_element *cur = buf; in smb2_push_mand_fdlocks() local
227 cur->Length = cpu_to_le64(li->length); in smb2_push_mand_fdlocks()
228 cur->Offset = cpu_to_le64(li->offset); in smb2_push_mand_fdlocks()
[all …]

1234