X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ffld%2Flproc_fld.c;h=1bcecdfb973cef9076ce930826199eced699b392;hb=3cce65712d94cffe8f1626545845b95b88aef672;hp=1eb2346fe82fd0120d9f645a39ac2853579aa671;hpb=b1e595c09e1b07a6840142b3ae015b8a5a8affeb;p=fs%2Flustre-release.git diff --git a/lustre/fld/lproc_fld.c b/lustre/fld/lproc_fld.c index 1eb2346..1bcecdf 100644 --- a/lustre/fld/lproc_fld.c +++ b/lustre/fld/lproc_fld.c @@ -15,11 +15,7 @@ * * You should have received a copy of the GNU General Public License * version 2 along with this program; If not, see - * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf - * - * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, - * CA 95054 USA or visit www.sun.com if you need additional information or - * have any questions. + * http://www.gnu.org/licenses/gpl-2.0.html * * GPL HEADER END */ @@ -27,7 +23,7 @@ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. * - * Copyright (c) 2012, 2013, Intel Corporation. + * Copyright (c) 2012, 2016, Intel Corporation. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -45,37 +41,36 @@ #include #include + +#ifdef HAVE_SERVER_SUPPORT #include +#endif #include #include #include #include "fld_internal.h" -#ifdef LPROCFS static int -fld_proc_targets_seq_show(struct seq_file *m, void *unused) +fld_debugfs_targets_seq_show(struct seq_file *m, void *unused) { struct lu_client_fld *fld = (struct lu_client_fld *)m->private; struct lu_fld_target *target; - ENTRY; - - LASSERT(fld != NULL); + ENTRY; spin_lock(&fld->lcf_lock); list_for_each_entry(target, &fld->lcf_targets, ft_chain) seq_printf(m, "%s\n", fld_target_name(target)); spin_unlock(&fld->lcf_lock); + RETURN(0); } static int -fld_proc_hash_seq_show(struct seq_file *m, void *unused) +fld_debugfs_hash_seq_show(struct seq_file *m, void *unused) { struct lu_client_fld *fld = (struct lu_client_fld *)m->private; - ENTRY; - - LASSERT(fld != NULL); + ENTRY; spin_lock(&fld->lcf_lock); seq_printf(m, "%s\n", fld->lcf_hash->fh_name); spin_unlock(&fld->lcf_lock); @@ -84,27 +79,33 @@ fld_proc_hash_seq_show(struct seq_file *m, void *unused) } static ssize_t -fld_proc_hash_seq_write(struct file *file, const char __user *buffer, +fld_debugfs_hash_seq_write(struct file *file, const char __user *buffer, size_t count, loff_t *off) { - struct lu_client_fld *fld = ((struct seq_file *)file->private_data)->private; - struct lu_fld_hash *hash = NULL; - int i; - ENTRY; + struct lu_client_fld *fld; + struct lu_fld_hash *hash = NULL; + char fh_name[8]; + int i; - LASSERT(fld != NULL); + if (count > sizeof(fh_name)) + return -ENAMETOOLONG; - for (i = 0; fld_hash[i].fh_name != NULL; i++) { - if (count != strlen(fld_hash[i].fh_name)) - continue; + if (copy_from_user(fh_name, buffer, count) != 0) + return -EFAULT; - if (!strncmp(fld_hash[i].fh_name, buffer, count)) { - hash = &fld_hash[i]; - break; - } - } + fld = ((struct seq_file *)file->private_data)->private; - if (hash != NULL) { + for (i = 0; fld_hash[i].fh_name; i++) { + if (count != strlen(fld_hash[i].fh_name)) + continue; + + if (!strncmp(fld_hash[i].fh_name, fh_name, count)) { + hash = &fld_hash[i]; + break; + } + } + + if (hash) { spin_lock(&fld->lcf_lock); fld->lcf_hash = hash; spin_unlock(&fld->lcf_lock); @@ -113,18 +114,17 @@ fld_proc_hash_seq_write(struct file *file, const char __user *buffer, fld->lcf_name, hash->fh_name); } - RETURN(count); + return count; } -static ssize_t -lprocfs_cache_flush_seq_write(struct file *file, const char __user *buffer, - size_t count, loff_t *pos) +static ssize_t ldebugfs_cache_flush_seq_write(struct file *file, + const char __user *buffer, + size_t count, loff_t *pos) { - struct lu_client_fld *fld = ((struct seq_file *)file->private_data)->private; - ENTRY; - - LASSERT(fld != NULL); + struct seq_file *m = file->private_data; + struct lu_client_fld *fld = m->private; + ENTRY; fld_cache_flush(fld->lcf_cache); CDEBUG(D_INFO, "%s: Lookup cache is flushed\n", fld->lcf_name); @@ -132,15 +132,15 @@ lprocfs_cache_flush_seq_write(struct file *file, const char __user *buffer, RETURN(count); } -LPROC_SEQ_FOPS_RO(fld_proc_targets); -LPROC_SEQ_FOPS(fld_proc_hash); -LPROC_SEQ_FOPS_WO_TYPE(fld, cache_flush); +LDEBUGFS_SEQ_FOPS_RO(fld_debugfs_targets); +LDEBUGFS_SEQ_FOPS(fld_debugfs_hash); +LDEBUGFS_FOPS_WR_ONLY(fld, cache_flush); -struct lprocfs_seq_vars fld_client_proc_list[] = { +struct lprocfs_vars fld_client_debugfs_list[] = { { .name = "targets", - .fops = &fld_proc_targets_fops }, + .fops = &fld_debugfs_targets_fops }, { .name = "hash", - .fops = &fld_proc_hash_fops }, + .fops = &fld_debugfs_hash_fops }, { .name = "cache_flush", .fops = &fld_cache_flush_fops }, { NULL } @@ -256,7 +256,7 @@ static int fldb_seq_show(struct seq_file *p, void *v) fld->lsf_name, rc); } else if (fld_rec->lsr_start != 0) { range_be_to_cpu(fld_rec, fld_rec); - rc = seq_printf(p, DRANGE"\n", PRANGE(fld_rec)); + seq_printf(p, DRANGE"\n", PRANGE(fld_rec)); } return rc; @@ -272,14 +272,13 @@ struct seq_operations fldb_sops = { static int fldb_seq_open(struct inode *inode, struct file *file) { struct seq_file *seq; - struct lu_server_fld *fld = (struct lu_server_fld *)PDE_DATA(inode); + struct lu_server_fld *fld = inode->i_private; struct dt_object *obj; const struct dt_it_ops *iops; struct fld_seq_param *param = NULL; int env_init = 0; int rc; - LPROCFS_ENTRY_CHECK(PDE(inode)); rc = seq_open(file, &fldb_sops); if (rc) GOTO(out, rc); @@ -301,7 +300,7 @@ static int fldb_seq_open(struct inode *inode, struct file *file) env_init = 1; iops = &obj->do_index_ops->dio_it; - param->fsp_it = iops->init(¶m->fsp_env, obj, 0, NULL); + param->fsp_it = iops->init(¶m->fsp_env, obj, 0); if (IS_ERR(param->fsp_it)) GOTO(out, rc = PTR_ERR(param->fsp_it)); @@ -349,17 +348,11 @@ static int fldb_seq_release(struct inode *inode, struct file *file) return 0; } -const struct file_operations fld_proc_seq_fops = { +const struct file_operations fld_debugfs_seq_fops = { .owner = THIS_MODULE, .open = fldb_seq_open, .read = seq_read, .release = fldb_seq_release, }; -struct lprocfs_seq_vars fld_server_proc_list[] = { - { NULL } -}; - # endif /* HAVE_SERVER_SUPPORT */ - -#endif /* LPROCFS */