Lines Matching refs:arg

57 	struct bch_ioctl_assemble arg;
64 if (copy_from_user(&arg, user_arg, sizeof(arg)))
67 if (arg.flags || arg.pad)
70 user_devs = kmalloc_array(arg.nr_devs, sizeof(u64), GFP_KERNEL);
74 devs = kcalloc(arg.nr_devs, sizeof(char *), GFP_KERNEL);
77 sizeof(u64) * arg.nr_devs))
80 for (i = 0; i < arg.nr_devs; i++) {
89 c = bch2_fs_open(devs, arg.nr_devs, bch2_opts_empty());
95 for (i = 0; i < arg.nr_devs; i++)
103 struct bch_ioctl_incremental arg;
107 if (copy_from_user(&arg, user_arg, sizeof(arg)))
110 if (arg.flags || arg.pad)
113 path = strndup_user((const char __user *)(unsigned long) arg.dev, PATH_MAX);
130 static long bch2_global_ioctl(unsigned cmd, void __user *arg) in bch2_global_ioctl() argument
137 return bch2_ioctl_assemble(arg); in bch2_global_ioctl()
139 return bch2_ioctl_incremental(arg); in bch2_global_ioctl()
142 ret = bch2_ioctl_fsck_offline(arg); in bch2_global_ioctl()
163 static long bch2_ioctl_start(struct bch_fs *c, struct bch_ioctl_start arg)
168 if (arg.flags || arg.pad)
184 static long bch2_ioctl_disk_add(struct bch_fs *c, struct bch_ioctl_disk arg) in bch2_ioctl_disk_add() argument
192 if (arg.flags || arg.pad) in bch2_ioctl_disk_add()
195 path = strndup_user((const char __user *)(unsigned long) arg.dev, PATH_MAX); in bch2_ioctl_disk_add()
207 static long bch2_ioctl_disk_remove(struct bch_fs *c, struct bch_ioctl_disk arg) in bch2_ioctl_disk_remove() argument
214 if ((arg.flags & ~(BCH_FORCE_IF_DATA_LOST| in bch2_ioctl_disk_remove()
218 arg.pad) in bch2_ioctl_disk_remove()
221 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_disk_remove()
225 return bch2_dev_remove(c, ca, arg.flags); in bch2_ioctl_disk_remove()
228 static long bch2_ioctl_disk_online(struct bch_fs *c, struct bch_ioctl_disk arg) in bch2_ioctl_disk_online() argument
236 if (arg.flags || arg.pad) in bch2_ioctl_disk_online()
239 path = strndup_user((const char __user *)(unsigned long) arg.dev, PATH_MAX); in bch2_ioctl_disk_online()
249 static long bch2_ioctl_disk_offline(struct bch_fs *c, struct bch_ioctl_disk arg) in bch2_ioctl_disk_offline() argument
257 if ((arg.flags & ~(BCH_FORCE_IF_DATA_LOST| in bch2_ioctl_disk_offline()
261 arg.pad) in bch2_ioctl_disk_offline()
264 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_disk_offline()
268 ret = bch2_dev_offline(c, ca, arg.flags); in bch2_ioctl_disk_offline()
274 struct bch_ioctl_disk_set_state arg) in bch2_ioctl_disk_set_state() argument
282 if ((arg.flags & ~(BCH_FORCE_IF_DATA_LOST| in bch2_ioctl_disk_set_state()
286 arg.pad[0] || arg.pad[1] || arg.pad[2] || in bch2_ioctl_disk_set_state()
287 arg.new_state >= BCH_MEMBER_STATE_NR) in bch2_ioctl_disk_set_state()
290 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_disk_set_state()
294 ret = bch2_dev_set_state(c, ca, arg.new_state, arg.flags); in bch2_ioctl_disk_set_state()
306 struct bch_ioctl_data arg; member
310 static int bch2_data_thread(void *arg) in bch2_data_thread() argument
312 struct bch_data_ctx *ctx = container_of(arg, struct bch_data_ctx, thr); in bch2_data_thread()
314 ctx->thr.ret = bch2_data_job(ctx->c, &ctx->stats, ctx->arg); in bch2_data_thread()
354 struct bch_ioctl_data arg) in bch2_ioctl_data() argument
362 if (arg.op >= BCH_DATA_OP_NR || arg.flags) in bch2_ioctl_data()
370 ctx->arg = arg; in bch2_ioctl_data()
383 struct bch_ioctl_fs_usage arg = {}; in bch2_ioctl_fs_usage() local
401 arg.capacity = c->capacity; in bch2_ioctl_fs_usage()
402 arg.used = u.used; in bch2_ioctl_fs_usage()
403 arg.online_reserved = percpu_u64_get(c->online_reserved); in bch2_ioctl_fs_usage()
404 arg.replica_entries_bytes = replicas.nr; in bch2_ioctl_fs_usage()
414 &arg.persistent_reserved[i], 1); in bch2_ioctl_fs_usage()
417 ret = copy_to_user_errcode(user_arg, &arg, sizeof(arg)); in bch2_ioctl_fs_usage()
426 struct bch_ioctl_query_accounting arg; in bch2_ioctl_query_accounting() local
433 ret = copy_from_user_errcode(&arg, user_arg, sizeof(arg)) ?: in bch2_ioctl_query_accounting()
434 bch2_fs_accounting_read(c, &accounting, arg.accounting_types_mask) ?: in bch2_ioctl_query_accounting()
435 (arg.accounting_u64s * sizeof(u64) < accounting.nr ? -ERANGE : 0) ?: in bch2_ioctl_query_accounting()
440 arg.capacity = c->capacity; in bch2_ioctl_query_accounting()
441 arg.used = bch2_fs_usage_read_short(c).used; in bch2_ioctl_query_accounting()
442 arg.online_reserved = percpu_u64_get(c->online_reserved); in bch2_ioctl_query_accounting()
443 arg.accounting_u64s = accounting.nr / sizeof(u64); in bch2_ioctl_query_accounting()
445 ret = copy_to_user_errcode(user_arg, &arg, sizeof(arg)); in bch2_ioctl_query_accounting()
455 struct bch_ioctl_dev_usage arg; in bch2_ioctl_dev_usage() local
463 if (copy_from_user(&arg, user_arg, sizeof(arg))) in bch2_ioctl_dev_usage()
466 if ((arg.flags & ~BCH_BY_INDEX) || in bch2_ioctl_dev_usage()
467 arg.pad[0] || in bch2_ioctl_dev_usage()
468 arg.pad[1] || in bch2_ioctl_dev_usage()
469 arg.pad[2]) in bch2_ioctl_dev_usage()
472 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_dev_usage()
478 arg.state = ca->mi.state; in bch2_ioctl_dev_usage()
479 arg.bucket_size = ca->mi.bucket_size; in bch2_ioctl_dev_usage()
480 arg.nr_buckets = ca->mi.nbuckets - ca->mi.first_bucket; in bch2_ioctl_dev_usage()
482 for (i = 0; i < ARRAY_SIZE(arg.d); i++) { in bch2_ioctl_dev_usage()
483 arg.d[i].buckets = src.d[i].buckets; in bch2_ioctl_dev_usage()
484 arg.d[i].sectors = src.d[i].sectors; in bch2_ioctl_dev_usage()
485 arg.d[i].fragmented = src.d[i].fragmented; in bch2_ioctl_dev_usage()
490 return copy_to_user_errcode(user_arg, &arg, sizeof(arg)); in bch2_ioctl_dev_usage()
496 struct bch_ioctl_dev_usage_v2 arg; in bch2_ioctl_dev_usage_v2() local
504 if (copy_from_user(&arg, user_arg, sizeof(arg))) in bch2_ioctl_dev_usage_v2()
507 if ((arg.flags & ~BCH_BY_INDEX) || in bch2_ioctl_dev_usage_v2()
508 arg.pad[0] || in bch2_ioctl_dev_usage_v2()
509 arg.pad[1] || in bch2_ioctl_dev_usage_v2()
510 arg.pad[2]) in bch2_ioctl_dev_usage_v2()
513 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_dev_usage_v2()
519 arg.state = ca->mi.state; in bch2_ioctl_dev_usage_v2()
520 arg.bucket_size = ca->mi.bucket_size; in bch2_ioctl_dev_usage_v2()
521 arg.nr_data_types = min(arg.nr_data_types, BCH_DATA_NR); in bch2_ioctl_dev_usage_v2()
522 arg.nr_buckets = ca->mi.nbuckets - ca->mi.first_bucket; in bch2_ioctl_dev_usage_v2()
524 ret = copy_to_user_errcode(user_arg, &arg, sizeof(arg)); in bch2_ioctl_dev_usage_v2()
528 for (unsigned i = 0; i < arg.nr_data_types; i++) { in bch2_ioctl_dev_usage_v2()
545 struct bch_ioctl_read_super arg) in bch2_ioctl_read_super() argument
554 if ((arg.flags & ~(BCH_BY_INDEX|BCH_READ_DEV)) || in bch2_ioctl_read_super()
555 arg.pad) in bch2_ioctl_read_super()
560 if (arg.flags & BCH_READ_DEV) { in bch2_ioctl_read_super()
561 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_read_super()
571 if (vstruct_bytes(sb) > arg.size) { in bch2_ioctl_read_super()
576 ret = copy_to_user_errcode((void __user *)(unsigned long)arg.sb, sb, in bch2_ioctl_read_super()
586 struct bch_ioctl_disk_get_idx arg) in bch2_ioctl_disk_get_idx() argument
588 dev_t dev = huge_decode_dev(arg.dev); in bch2_ioctl_disk_get_idx()
606 struct bch_ioctl_disk_resize arg) in bch2_ioctl_disk_resize() argument
614 if ((arg.flags & ~BCH_BY_INDEX) || in bch2_ioctl_disk_resize()
615 arg.pad) in bch2_ioctl_disk_resize()
618 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_disk_resize()
622 ret = bch2_dev_resize(c, ca, arg.nbuckets); in bch2_ioctl_disk_resize()
629 struct bch_ioctl_disk_resize_journal arg) in bch2_ioctl_disk_resize_journal() argument
637 if ((arg.flags & ~BCH_BY_INDEX) || in bch2_ioctl_disk_resize_journal()
638 arg.pad) in bch2_ioctl_disk_resize_journal()
641 if (arg.nbuckets > U32_MAX) in bch2_ioctl_disk_resize_journal()
644 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_disk_resize_journal()
648 ret = bch2_set_nr_journal_buckets(c, ca, arg.nbuckets); in bch2_ioctl_disk_resize_journal()
658 if (copy_from_user(&i, arg, sizeof(i))) \
664 long bch2_fs_ioctl(struct bch_fs *c, unsigned cmd, void __user *arg) in bch2_fs_ioctl() argument
670 return bch2_ioctl_query_uuid(c, arg); in bch2_fs_ioctl()
672 return bch2_ioctl_fs_usage(c, arg); in bch2_fs_ioctl()
674 return bch2_ioctl_dev_usage(c, arg); in bch2_fs_ioctl()
676 return bch2_ioctl_dev_usage_v2(c, arg); in bch2_fs_ioctl()
712 return bch2_ioctl_query_accounting(c, arg); in bch2_fs_ioctl()
728 void __user *arg = (void __user *) v; in bch2_chardev_ioctl() local
731 ? bch2_fs_ioctl(c, cmd, arg) in bch2_chardev_ioctl()
732 : bch2_global_ioctl(cmd, arg); in bch2_chardev_ioctl()