Lines Matching full:arg

67 	struct bch_ioctl_assemble arg;
74 if (copy_from_user(&arg, user_arg, sizeof(arg)))
77 if (arg.flags || arg.pad)
80 user_devs = kmalloc_array(arg.nr_devs, sizeof(u64), GFP_KERNEL);
84 devs = kcalloc(arg.nr_devs, sizeof(char *), GFP_KERNEL);
87 sizeof(u64) * arg.nr_devs))
90 for (i = 0; i < arg.nr_devs; i++) {
99 c = bch2_fs_open(devs, arg.nr_devs, bch2_opts_empty());
105 for (i = 0; i < arg.nr_devs; i++)
113 struct bch_ioctl_incremental arg;
117 if (copy_from_user(&arg, user_arg, sizeof(arg)))
120 if (arg.flags || arg.pad)
123 path = strndup_user((const char __user *)(unsigned long) arg.dev, PATH_MAX);
158 static int bch2_fsck_offline_thread_fn(void *arg) in bch2_fsck_offline_thread_fn() argument
160 struct fsck_thread *thr = container_of(arg, struct fsck_thread, thr); in bch2_fsck_offline_thread_fn()
173 struct bch_ioctl_fsck_offline arg; in bch2_ioctl_fsck_offline() local
178 if (copy_from_user(&arg, user_arg, sizeof(arg))) in bch2_ioctl_fsck_offline()
181 if (arg.flags) in bch2_ioctl_fsck_offline()
187 if (!(devs = kcalloc(arg.nr_devs, sizeof(*devs), GFP_KERNEL)) || in bch2_ioctl_fsck_offline()
189 !(thr->devs = kcalloc(arg.nr_devs, sizeof(*thr->devs), GFP_KERNEL))) { in bch2_ioctl_fsck_offline()
195 thr->nr_devs = arg.nr_devs; in bch2_ioctl_fsck_offline()
198 array_size(sizeof(user_arg->devs[0]), arg.nr_devs))) { in bch2_ioctl_fsck_offline()
203 for (size_t i = 0; i < arg.nr_devs; i++) { in bch2_ioctl_fsck_offline()
210 if (arg.opts) { in bch2_ioctl_fsck_offline()
211 char *optstr = strndup_user((char __user *)(unsigned long) arg.opts, 1 << 16); in bch2_ioctl_fsck_offline()
236 static long bch2_global_ioctl(unsigned cmd, void __user *arg) in bch2_global_ioctl() argument
243 return bch2_ioctl_assemble(arg); in bch2_global_ioctl()
245 return bch2_ioctl_incremental(arg); in bch2_global_ioctl()
248 ret = bch2_ioctl_fsck_offline(arg); in bch2_global_ioctl()
269 static long bch2_ioctl_start(struct bch_fs *c, struct bch_ioctl_start arg)
274 if (arg.flags || arg.pad)
290 static long bch2_ioctl_disk_add(struct bch_fs *c, struct bch_ioctl_disk arg) in bch2_ioctl_disk_add() argument
298 if (arg.flags || arg.pad) in bch2_ioctl_disk_add()
301 path = strndup_user((const char __user *)(unsigned long) arg.dev, PATH_MAX); in bch2_ioctl_disk_add()
312 static long bch2_ioctl_disk_remove(struct bch_fs *c, struct bch_ioctl_disk arg) in bch2_ioctl_disk_remove() argument
319 if ((arg.flags & ~(BCH_FORCE_IF_DATA_LOST| in bch2_ioctl_disk_remove()
323 arg.pad) in bch2_ioctl_disk_remove()
326 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_disk_remove()
330 return bch2_dev_remove(c, ca, arg.flags); in bch2_ioctl_disk_remove()
333 static long bch2_ioctl_disk_online(struct bch_fs *c, struct bch_ioctl_disk arg) in bch2_ioctl_disk_online() argument
341 if (arg.flags || arg.pad) in bch2_ioctl_disk_online()
344 path = strndup_user((const char __user *)(unsigned long) arg.dev, PATH_MAX); in bch2_ioctl_disk_online()
354 static long bch2_ioctl_disk_offline(struct bch_fs *c, struct bch_ioctl_disk arg) in bch2_ioctl_disk_offline() argument
362 if ((arg.flags & ~(BCH_FORCE_IF_DATA_LOST| in bch2_ioctl_disk_offline()
366 arg.pad) in bch2_ioctl_disk_offline()
369 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_disk_offline()
373 ret = bch2_dev_offline(c, ca, arg.flags); in bch2_ioctl_disk_offline()
379 struct bch_ioctl_disk_set_state arg) in bch2_ioctl_disk_set_state() argument
387 if ((arg.flags & ~(BCH_FORCE_IF_DATA_LOST| in bch2_ioctl_disk_set_state()
391 arg.pad[0] || arg.pad[1] || arg.pad[2] || in bch2_ioctl_disk_set_state()
392 arg.new_state >= BCH_MEMBER_STATE_NR) in bch2_ioctl_disk_set_state()
395 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_disk_set_state()
399 ret = bch2_dev_set_state(c, ca, arg.new_state, arg.flags); in bch2_ioctl_disk_set_state()
411 struct bch_ioctl_data arg; member
415 static int bch2_data_thread(void *arg) in bch2_data_thread() argument
417 struct bch_data_ctx *ctx = container_of(arg, struct bch_data_ctx, thr); in bch2_data_thread()
419 ctx->thr.ret = bch2_data_job(ctx->c, &ctx->stats, ctx->arg); in bch2_data_thread()
460 struct bch_ioctl_data arg) in bch2_ioctl_data() argument
468 if (arg.op >= BCH_DATA_OP_NR || arg.flags) in bch2_ioctl_data()
476 ctx->arg = arg; in bch2_ioctl_data()
489 struct bch_ioctl_fs_usage *arg = NULL; in bch2_ioctl_fs_usage() local
502 arg = kzalloc(size_add(sizeof(*arg), replica_entries_bytes), GFP_KERNEL); in bch2_ioctl_fs_usage()
503 if (!arg) in bch2_ioctl_fs_usage()
512 arg->capacity = c->capacity; in bch2_ioctl_fs_usage()
513 arg->used = bch2_fs_sectors_used(c, src); in bch2_ioctl_fs_usage()
514 arg->online_reserved = src->online_reserved; in bch2_ioctl_fs_usage()
517 arg->persistent_reserved[i] = src->u.persistent_reserved[i]; in bch2_ioctl_fs_usage()
519 dst_e = arg->replicas; in bch2_ioctl_fs_usage()
520 dst_end = (void *) arg->replicas + replica_entries_bytes; in bch2_ioctl_fs_usage()
546 arg->replica_entries_bytes = (void *) dst_e - (void *) arg->replicas; in bch2_ioctl_fs_usage()
554 ret = copy_to_user_errcode(user_arg, arg, in bch2_ioctl_fs_usage()
555 sizeof(*arg) + arg->replica_entries_bytes); in bch2_ioctl_fs_usage()
557 kfree(arg); in bch2_ioctl_fs_usage()
565 struct bch_ioctl_dev_usage arg; in bch2_ioctl_dev_usage() local
573 if (copy_from_user(&arg, user_arg, sizeof(arg))) in bch2_ioctl_dev_usage()
576 if ((arg.flags & ~BCH_BY_INDEX) || in bch2_ioctl_dev_usage()
577 arg.pad[0] || in bch2_ioctl_dev_usage()
578 arg.pad[1] || in bch2_ioctl_dev_usage()
579 arg.pad[2]) in bch2_ioctl_dev_usage()
582 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_dev_usage()
588 arg.state = ca->mi.state; in bch2_ioctl_dev_usage()
589 arg.bucket_size = ca->mi.bucket_size; in bch2_ioctl_dev_usage()
590 arg.nr_buckets = ca->mi.nbuckets - ca->mi.first_bucket; in bch2_ioctl_dev_usage()
593 arg.d[i].buckets = src.d[i].buckets; in bch2_ioctl_dev_usage()
594 arg.d[i].sectors = src.d[i].sectors; in bch2_ioctl_dev_usage()
595 arg.d[i].fragmented = src.d[i].fragmented; in bch2_ioctl_dev_usage()
600 return copy_to_user_errcode(user_arg, &arg, sizeof(arg)); in bch2_ioctl_dev_usage()
606 struct bch_ioctl_dev_usage_v2 arg; in bch2_ioctl_dev_usage_v2() local
614 if (copy_from_user(&arg, user_arg, sizeof(arg))) in bch2_ioctl_dev_usage_v2()
617 if ((arg.flags & ~BCH_BY_INDEX) || in bch2_ioctl_dev_usage_v2()
618 arg.pad[0] || in bch2_ioctl_dev_usage_v2()
619 arg.pad[1] || in bch2_ioctl_dev_usage_v2()
620 arg.pad[2]) in bch2_ioctl_dev_usage_v2()
623 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_dev_usage_v2()
629 arg.state = ca->mi.state; in bch2_ioctl_dev_usage_v2()
630 arg.bucket_size = ca->mi.bucket_size; in bch2_ioctl_dev_usage_v2()
631 arg.nr_data_types = min(arg.nr_data_types, BCH_DATA_NR); in bch2_ioctl_dev_usage_v2()
632 arg.nr_buckets = ca->mi.nbuckets - ca->mi.first_bucket; in bch2_ioctl_dev_usage_v2()
634 ret = copy_to_user_errcode(user_arg, &arg, sizeof(arg)); in bch2_ioctl_dev_usage_v2()
638 for (unsigned i = 0; i < arg.nr_data_types; i++) { in bch2_ioctl_dev_usage_v2()
655 struct bch_ioctl_read_super arg) in bch2_ioctl_read_super() argument
664 if ((arg.flags & ~(BCH_BY_INDEX|BCH_READ_DEV)) || in bch2_ioctl_read_super()
665 arg.pad) in bch2_ioctl_read_super()
670 if (arg.flags & BCH_READ_DEV) { in bch2_ioctl_read_super()
671 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_read_super()
683 if (vstruct_bytes(sb) > arg.size) { in bch2_ioctl_read_super()
688 ret = copy_to_user_errcode((void __user *)(unsigned long)arg.sb, sb, in bch2_ioctl_read_super()
698 struct bch_ioctl_disk_get_idx arg) in bch2_ioctl_disk_get_idx() argument
700 dev_t dev = huge_decode_dev(arg.dev); in bch2_ioctl_disk_get_idx()
718 struct bch_ioctl_disk_resize arg) in bch2_ioctl_disk_resize() argument
726 if ((arg.flags & ~BCH_BY_INDEX) || in bch2_ioctl_disk_resize()
727 arg.pad) in bch2_ioctl_disk_resize()
730 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_disk_resize()
734 ret = bch2_dev_resize(c, ca, arg.nbuckets); in bch2_ioctl_disk_resize()
741 struct bch_ioctl_disk_resize_journal arg) in bch2_ioctl_disk_resize_journal() argument
749 if ((arg.flags & ~BCH_BY_INDEX) || in bch2_ioctl_disk_resize_journal()
750 arg.pad) in bch2_ioctl_disk_resize_journal()
753 if (arg.nbuckets > U32_MAX) in bch2_ioctl_disk_resize_journal()
756 ca = bch2_device_lookup(c, arg.dev, arg.flags); in bch2_ioctl_disk_resize_journal()
760 ret = bch2_set_nr_journal_buckets(c, ca, arg.nbuckets); in bch2_ioctl_disk_resize_journal()
766 static int bch2_fsck_online_thread_fn(void *arg) in bch2_fsck_online_thread_fn() argument
768 struct fsck_thread *thr = container_of(arg, struct fsck_thread, thr); in bch2_fsck_online_thread_fn()
804 struct bch_ioctl_fsck_online arg) in bch2_ioctl_fsck_online() argument
809 if (arg.flags) in bch2_ioctl_fsck_online()
832 if (arg.opts) { in bch2_ioctl_fsck_online()
833 char *optstr = strndup_user((char __user *)(unsigned long) arg.opts, 1 << 16); in bch2_ioctl_fsck_online()
861 if (copy_from_user(&i, arg, sizeof(i))) \
867 long bch2_fs_ioctl(struct bch_fs *c, unsigned cmd, void __user *arg) in bch2_fs_ioctl() argument
873 return bch2_ioctl_query_uuid(c, arg); in bch2_fs_ioctl()
875 return bch2_ioctl_fs_usage(c, arg); in bch2_fs_ioctl()
877 return bch2_ioctl_dev_usage(c, arg); in bch2_fs_ioctl()
879 return bch2_ioctl_dev_usage_v2(c, arg); in bch2_fs_ioctl()
929 void __user *arg = (void __user *) v; in bch2_chardev_ioctl() local
932 ? bch2_fs_ioctl(c, cmd, arg) in bch2_chardev_ioctl()
933 : bch2_global_ioctl(cmd, arg); in bch2_chardev_ioctl()