Lines Matching full:arg

58 	struct bch_ioctl_assemble arg;
65 if (copy_from_user(&arg, user_arg, sizeof(arg)))
68 if (arg.flags || arg.pad)
71 user_devs = kmalloc_array(arg.nr_devs, sizeof(u64), GFP_KERNEL);
75 devs = kcalloc(arg.nr_devs, sizeof(char *), GFP_KERNEL);
78 sizeof(u64) * arg.nr_devs))
81 for (i = 0; i < arg.nr_devs; i++) {
90 c = bch2_fs_open(devs, arg.nr_devs, bch2_opts_empty());
96 for (i = 0; i < arg.nr_devs; i++)
104 struct bch_ioctl_incremental arg;
108 if (copy_from_user(&arg, user_arg, sizeof(arg)))
111 if (arg.flags || arg.pad)
114 path = strndup_user((const char __user *)(unsigned long) arg.dev, PATH_MAX);
131 static long bch2_global_ioctl(unsigned cmd, void __user *arg) in bch2_global_ioctl() argument
138 return bch2_ioctl_assemble(arg); in bch2_global_ioctl()
140 return bch2_ioctl_incremental(arg); in bch2_global_ioctl()
143 ret = bch2_ioctl_fsck_offline(arg); in bch2_global_ioctl()
164 static long bch2_ioctl_start(struct bch_fs *c, struct bch_ioctl_start arg)
169 if (arg.flags || arg.pad)
185 static long bch2_ioctl_disk_add(struct bch_fs *c, struct bch_ioctl_disk arg) in bch2_ioctl_disk_add() argument
193 if (arg.flags || arg.pad) in bch2_ioctl_disk_add()
196 path = strndup_user((const char __user *)(unsigned long) arg.dev, PATH_MAX); in bch2_ioctl_disk_add()
208 static long bch2_ioctl_disk_remove(struct bch_fs *c, struct bch_ioctl_disk arg) in bch2_ioctl_disk_remove() argument
215 if ((arg.flags & ~(BCH_FORCE_IF_DATA_LOST| in bch2_ioctl_disk_remove()
219 arg.pad) in bch2_ioctl_disk_remove()
222 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_disk_remove()
226 return bch2_dev_remove(c, ca, arg.flags); in bch2_ioctl_disk_remove()
229 static long bch2_ioctl_disk_online(struct bch_fs *c, struct bch_ioctl_disk arg) in bch2_ioctl_disk_online() argument
237 if (arg.flags || arg.pad) in bch2_ioctl_disk_online()
240 path = strndup_user((const char __user *)(unsigned long) arg.dev, PATH_MAX); in bch2_ioctl_disk_online()
250 static long bch2_ioctl_disk_offline(struct bch_fs *c, struct bch_ioctl_disk arg) in bch2_ioctl_disk_offline() argument
258 if ((arg.flags & ~(BCH_FORCE_IF_DATA_LOST| in bch2_ioctl_disk_offline()
262 arg.pad) in bch2_ioctl_disk_offline()
265 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_disk_offline()
269 ret = bch2_dev_offline(c, ca, arg.flags); in bch2_ioctl_disk_offline()
275 struct bch_ioctl_disk_set_state arg) in bch2_ioctl_disk_set_state() argument
283 if ((arg.flags & ~(BCH_FORCE_IF_DATA_LOST| in bch2_ioctl_disk_set_state()
287 arg.pad[0] || arg.pad[1] || arg.pad[2] || in bch2_ioctl_disk_set_state()
288 arg.new_state >= BCH_MEMBER_STATE_NR) in bch2_ioctl_disk_set_state()
291 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_disk_set_state()
295 ret = bch2_dev_set_state(c, ca, arg.new_state, arg.flags); in bch2_ioctl_disk_set_state()
307 struct bch_ioctl_data arg; member
311 static int bch2_data_thread(void *arg) in bch2_data_thread() argument
313 struct bch_data_ctx *ctx = container_of(arg, struct bch_data_ctx, thr); in bch2_data_thread()
315 ctx->thr.ret = bch2_data_job(ctx->c, &ctx->stats, ctx->arg); in bch2_data_thread()
350 if (ctx->arg.op == BCH_DATA_OP_scrub) { in bch2_data_job_read()
351 struct bch_dev *ca = bch2_dev_tryget(c, ctx->arg.scrub.dev); in bch2_data_job_read()
356 if (ctx->arg.scrub.data_types & BIT(i)) in bch2_data_job_read()
376 struct bch_ioctl_data arg) in bch2_ioctl_data() argument
384 if (arg.op >= BCH_DATA_OP_NR || arg.flags) in bch2_ioctl_data()
392 ctx->arg = arg; in bch2_ioctl_data()
405 struct bch_ioctl_fs_usage arg = {}; in bch2_ioctl_fs_usage() local
423 arg.capacity = c->capacity; in bch2_ioctl_fs_usage()
424 arg.used = u.used; in bch2_ioctl_fs_usage()
425 arg.online_reserved = percpu_u64_get(c->online_reserved); in bch2_ioctl_fs_usage()
426 arg.replica_entries_bytes = replicas.nr; in bch2_ioctl_fs_usage()
434 &arg.persistent_reserved[i], 1); in bch2_ioctl_fs_usage()
437 ret = copy_to_user_errcode(user_arg, &arg, sizeof(arg)); in bch2_ioctl_fs_usage()
446 struct bch_ioctl_query_accounting arg; in bch2_ioctl_query_accounting() local
453 ret = copy_from_user_errcode(&arg, user_arg, sizeof(arg)) ?: in bch2_ioctl_query_accounting()
454 bch2_fs_accounting_read(c, &accounting, arg.accounting_types_mask) ?: in bch2_ioctl_query_accounting()
455 (arg.accounting_u64s * sizeof(u64) < accounting.nr ? -ERANGE : 0) ?: in bch2_ioctl_query_accounting()
460 arg.capacity = c->capacity; in bch2_ioctl_query_accounting()
461 arg.used = bch2_fs_usage_read_short(c).used; in bch2_ioctl_query_accounting()
462 arg.online_reserved = percpu_u64_get(c->online_reserved); in bch2_ioctl_query_accounting()
463 arg.accounting_u64s = accounting.nr / sizeof(u64); in bch2_ioctl_query_accounting()
465 ret = copy_to_user_errcode(user_arg, &arg, sizeof(arg)); in bch2_ioctl_query_accounting()
475 struct bch_ioctl_dev_usage arg; in bch2_ioctl_dev_usage() local
483 if (copy_from_user(&arg, user_arg, sizeof(arg))) in bch2_ioctl_dev_usage()
486 if ((arg.flags & ~BCH_BY_INDEX) || in bch2_ioctl_dev_usage()
487 arg.pad[0] || in bch2_ioctl_dev_usage()
488 arg.pad[1] || in bch2_ioctl_dev_usage()
489 arg.pad[2]) in bch2_ioctl_dev_usage()
492 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_dev_usage()
498 arg.state = ca->mi.state; in bch2_ioctl_dev_usage()
499 arg.bucket_size = ca->mi.bucket_size; in bch2_ioctl_dev_usage()
500 arg.nr_buckets = ca->mi.nbuckets - ca->mi.first_bucket; in bch2_ioctl_dev_usage()
502 for (i = 0; i < ARRAY_SIZE(arg.d); i++) { in bch2_ioctl_dev_usage()
503 arg.d[i].buckets = src.d[i].buckets; in bch2_ioctl_dev_usage()
504 arg.d[i].sectors = src.d[i].sectors; in bch2_ioctl_dev_usage()
505 arg.d[i].fragmented = src.d[i].fragmented; in bch2_ioctl_dev_usage()
510 return copy_to_user_errcode(user_arg, &arg, sizeof(arg)); in bch2_ioctl_dev_usage()
516 struct bch_ioctl_dev_usage_v2 arg; in bch2_ioctl_dev_usage_v2() local
524 if (copy_from_user(&arg, user_arg, sizeof(arg))) in bch2_ioctl_dev_usage_v2()
527 if ((arg.flags & ~BCH_BY_INDEX) || in bch2_ioctl_dev_usage_v2()
528 arg.pad[0] || in bch2_ioctl_dev_usage_v2()
529 arg.pad[1] || in bch2_ioctl_dev_usage_v2()
530 arg.pad[2]) in bch2_ioctl_dev_usage_v2()
533 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_dev_usage_v2()
539 arg.state = ca->mi.state; in bch2_ioctl_dev_usage_v2()
540 arg.bucket_size = ca->mi.bucket_size; in bch2_ioctl_dev_usage_v2()
541 arg.nr_data_types = min(arg.nr_data_types, BCH_DATA_NR); in bch2_ioctl_dev_usage_v2()
542 arg.nr_buckets = ca->mi.nbuckets - ca->mi.first_bucket; in bch2_ioctl_dev_usage_v2()
544 ret = copy_to_user_errcode(user_arg, &arg, sizeof(arg)); in bch2_ioctl_dev_usage_v2()
548 for (unsigned i = 0; i < arg.nr_data_types; i++) { in bch2_ioctl_dev_usage_v2()
565 struct bch_ioctl_read_super arg) in bch2_ioctl_read_super() argument
574 if ((arg.flags & ~(BCH_BY_INDEX|BCH_READ_DEV)) || in bch2_ioctl_read_super()
575 arg.pad) in bch2_ioctl_read_super()
580 if (arg.flags & BCH_READ_DEV) { in bch2_ioctl_read_super()
581 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_read_super()
591 if (vstruct_bytes(sb) > arg.size) { in bch2_ioctl_read_super()
596 ret = copy_to_user_errcode((void __user *)(unsigned long)arg.sb, sb, in bch2_ioctl_read_super()
606 struct bch_ioctl_disk_get_idx arg) in bch2_ioctl_disk_get_idx() argument
608 dev_t dev = huge_decode_dev(arg.dev); in bch2_ioctl_disk_get_idx()
626 struct bch_ioctl_disk_resize arg) in bch2_ioctl_disk_resize() argument
634 if ((arg.flags & ~BCH_BY_INDEX) || in bch2_ioctl_disk_resize()
635 arg.pad) in bch2_ioctl_disk_resize()
638 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_disk_resize()
642 ret = bch2_dev_resize(c, ca, arg.nbuckets); in bch2_ioctl_disk_resize()
649 struct bch_ioctl_disk_resize_journal arg) in bch2_ioctl_disk_resize_journal() argument
657 if ((arg.flags & ~BCH_BY_INDEX) || in bch2_ioctl_disk_resize_journal()
658 arg.pad) in bch2_ioctl_disk_resize_journal()
661 if (arg.nbuckets > U32_MAX) in bch2_ioctl_disk_resize_journal()
664 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_disk_resize_journal()
668 ret = bch2_set_nr_journal_buckets(c, ca, arg.nbuckets); in bch2_ioctl_disk_resize_journal()
678 if (copy_from_user(&i, arg, sizeof(i))) \
684 long bch2_fs_ioctl(struct bch_fs *c, unsigned cmd, void __user *arg) in bch2_fs_ioctl() argument
690 return bch2_ioctl_query_uuid(c, arg); in bch2_fs_ioctl()
692 return bch2_ioctl_fs_usage(c, arg); in bch2_fs_ioctl()
694 return bch2_ioctl_dev_usage(c, arg); in bch2_fs_ioctl()
696 return bch2_ioctl_dev_usage_v2(c, arg); in bch2_fs_ioctl()
732 return bch2_ioctl_query_accounting(c, arg); in bch2_fs_ioctl()
734 return bch2_ioctl_query_counters(c, arg); in bch2_fs_ioctl()
750 void __user *arg = (void __user *) v; in bch2_chardev_ioctl() local
753 ? bch2_fs_ioctl(c, cmd, arg) in bch2_chardev_ioctl()
754 : bch2_global_ioctl(cmd, arg); in bch2_chardev_ioctl()