From 4af430de697249d07bcb7fe3401a6caa4415fe31 Mon Sep 17 00:00:00 2001 From: Oleg Drokin Date: Fri, 1 Jul 2016 17:18:16 +0000 Subject: [PATCH] Revert "LU-7334 lov: Cleanup lov_stripe proc files" Causes problems with default striping described in LU-8338 This reverts commit d34b9dfbebc8d313be9c12a96b660a34ad45edcb. Change-Id: Ib09cc449f9d826f31799ea0a2211820d3c443456 Reviewed-on: http://review.whamcloud.com/21129 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Oleg Drokin --- lustre/lov/lproc_lov.c | 102 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 98 insertions(+), 4 deletions(-) diff --git a/lustre/lov/lproc_lov.c b/lustre/lov/lproc_lov.c index b910d71..ac3bb1a 100644 --- a/lustre/lov/lproc_lov.c +++ b/lustre/lov/lproc_lov.c @@ -54,7 +54,30 @@ static int lov_stripesize_seq_show(struct seq_file *m, void *v) seq_printf(m, LPU64"\n", desc->ld_default_stripe_size); return 0; } -LPROC_SEQ_FOPS_RO(lov_stripesize); + +static ssize_t lov_stripesize_seq_write(struct file *file, + const char __user *buffer, + size_t count, loff_t *off) +{ + struct obd_device *dev = ((struct seq_file *)file->private_data)->private; + struct lov_desc *desc; + __s64 val; + int rc; + + LASSERT(dev != NULL); + desc = &dev->u.lov.desc; + rc = lprocfs_str_to_s64(buffer, count, &val); + if (rc) + return rc; + if (val < 0) + return -ERANGE; + + lov_fix_desc_stripe_size(&val); + desc->ld_default_stripe_size = val; + + return count; +} +LPROC_SEQ_FOPS(lov_stripesize); static int lov_stripeoffset_seq_show(struct seq_file *m, void *v) { @@ -66,7 +89,29 @@ static int lov_stripeoffset_seq_show(struct seq_file *m, void *v) seq_printf(m, LPU64"\n", desc->ld_default_stripe_offset); return 0; } -LPROC_SEQ_FOPS_RO(lov_stripeoffset); + +static ssize_t lov_stripeoffset_seq_write(struct file *file, + const char __user *buffer, + size_t count, loff_t *off) +{ + struct obd_device *dev = ((struct seq_file *)file->private_data)->private; + struct lov_desc *desc; + __s64 val; + int rc; + + LASSERT(dev != NULL); + desc = &dev->u.lov.desc; + rc = lprocfs_str_to_s64(buffer, count, &val); + if (rc) + return rc; + if (val < 0) + return -ERANGE; + + desc->ld_default_stripe_offset = val; + + return count; +} +LPROC_SEQ_FOPS(lov_stripeoffset); static int lov_stripetype_seq_show(struct seq_file *m, void *v) { @@ -78,7 +123,31 @@ static int lov_stripetype_seq_show(struct seq_file *m, void *v) seq_printf(m, "%u\n", desc->ld_pattern); return 0; } -LPROC_SEQ_FOPS_RO(lov_stripetype); + +static ssize_t lov_stripetype_seq_write(struct file *file, + const char __user *buffer, + size_t count, loff_t *off) +{ + struct obd_device *dev = ((struct seq_file *)file->private_data)->private; + struct lov_desc *desc; + int pattern, rc; + __s64 val; + + LASSERT(dev != NULL); + desc = &dev->u.lov.desc; + rc = lprocfs_str_to_s64(buffer, count, &val); + if (rc) + return rc; + if (val < INT_MIN || val > INT_MAX) + return -ERANGE; + + pattern = val; + lov_fix_desc_pattern(&pattern); + desc->ld_pattern = pattern; + + return count; +} +LPROC_SEQ_FOPS(lov_stripetype); static int lov_stripecount_seq_show(struct seq_file *m, void *v) { @@ -91,7 +160,32 @@ static int lov_stripecount_seq_show(struct seq_file *m, void *v) (__s16)(desc->ld_default_stripe_count + 1) - 1); return 0; } -LPROC_SEQ_FOPS_RO(lov_stripecount); + +static ssize_t lov_stripecount_seq_write(struct file *file, + const char __user *buffer, + size_t count, loff_t *off) +{ + struct obd_device *dev = ((struct seq_file *)file->private_data)->private; + struct lov_desc *desc; + int rc; + __u32 stripe_count; + __s64 val; + + LASSERT(dev != NULL); + desc = &dev->u.lov.desc; + rc = lprocfs_str_to_s64(buffer, count, &val); + if (rc) + return rc; + if (val < 0) + return -ERANGE; + + stripe_count = val; + lov_fix_desc_stripe_count(&stripe_count); + desc->ld_default_stripe_count = stripe_count; + + return count; +} +LPROC_SEQ_FOPS(lov_stripecount); static int lov_numobd_seq_show(struct seq_file *m, void *v) { -- 1.8.3.1