X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fosd-zfs%2Fosd_lproc.c;h=0dfb483628b11ab94b1779a6d7234444accb1230;hb=b738c4850935f3a9c483b3141cb37d6539557615;hp=ea893e3a9eec88013a68b053b38eb09f18f61623;hpb=7817e4c785d075aae76b635dcf799064590833b0;p=fs%2Flustre-release.git diff --git a/lustre/osd-zfs/osd_lproc.c b/lustre/osd-zfs/osd_lproc.c index ea893e3..0dfb483 100644 --- a/lustre/osd-zfs/osd_lproc.c +++ b/lustre/osd-zfs/osd_lproc.c @@ -27,7 +27,7 @@ * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. * - * Copyright (c) 2012, 2014, Intel Corporation. + * Copyright (c) 2012, 2015, Intel Corporation. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -139,7 +139,8 @@ static int osd_brw_stats_seq_show(struct seq_file *seq, void *v) return 0; } -static ssize_t osd_brw_stats_seq_write(struct file *file, const char *buf, +static ssize_t osd_brw_stats_seq_write(struct file *file, + const char __user *buf, size_t len, loff_t *off) { struct seq_file *seq = file->private_data; @@ -156,9 +157,12 @@ LPROC_SEQ_FOPS(osd_brw_stats); static int osd_stats_init(struct osd_device *osd) { - int result; + int result, i; ENTRY; + for (i = 0; i < BRW_LAST; i++) + spin_lock_init(&osd->od_brw_stats.hist[i].oh_lock); + osd->od_stats = lprocfs_alloc_stats(LPROC_OSD_LAST, 0); if (osd->od_stats != NULL) { result = lprocfs_register_stats(osd->od_proc_entry, "stats", @@ -213,7 +217,8 @@ out: static int zfs_osd_fstype_seq_show(struct seq_file *m, void *data) { - return seq_printf(m, "zfs\n"); + seq_puts(m, "zfs\n"); + return 0; } LPROC_SEQ_FOPS_RO(zfs_osd_fstype); @@ -222,7 +227,8 @@ static int zfs_osd_mntdev_seq_show(struct seq_file *m, void *data) struct osd_device *osd = osd_dt_dev((struct dt_device *)m->private); LASSERT(osd != NULL); - return seq_printf(m, "%s\n", osd->od_mntdev); + seq_printf(m, "%s\n", osd->od_mntdev); + return 0; } LPROC_SEQ_FOPS_RO(zfs_osd_mntdev); @@ -250,21 +256,23 @@ static int zfs_osd_iused_est_seq_show(struct seq_file *m, void *data) struct osd_device *osd = osd_dt_dev((struct dt_device *)m->private); LASSERT(osd != NULL); - return seq_printf(m, "%d\n", osd->od_quota_iused_est); + seq_printf(m, "%d\n", osd->od_quota_iused_est); + return 0; } static ssize_t zfs_osd_iused_est_seq_write(struct file *file, const char __user *buffer, size_t count, loff_t *off) { - struct seq_file *m = file->private_data; - struct dt_device *dt = m->private; + struct seq_file *m = file->private_data; + struct dt_device *dt = m->private; struct osd_device *osd = osd_dt_dev(dt); - int rc, val; + int rc; + __s64 val; LASSERT(osd != NULL); - rc = lprocfs_write_helper(buffer, count, &val); + rc = lprocfs_str_to_s64(buffer, count, &val); if (rc) return rc; @@ -281,7 +289,7 @@ LPROC_SEQ_FOPS_RO_TYPE(zfs, dt_kbytesavail); LPROC_SEQ_FOPS_RO_TYPE(zfs, dt_filestotal); LPROC_SEQ_FOPS_RO_TYPE(zfs, dt_filesfree); -struct lprocfs_seq_vars lprocfs_osd_obd_vars[] = { +struct lprocfs_vars lprocfs_osd_obd_vars[] = { { .name = "blocksize", .fops = &zfs_dt_blksize_fops }, { .name = "kbytestotal", @@ -321,8 +329,9 @@ int osd_procfs_init(struct osd_device *osd, const char *name) LASSERT(name != NULL); LASSERT(type != NULL); - osd->od_proc_entry = lprocfs_seq_register(name, type->typ_procroot, - lprocfs_osd_obd_vars, &osd->od_dt_dev); + osd->od_proc_entry = lprocfs_register(name, type->typ_procroot, + lprocfs_osd_obd_vars, + &osd->od_dt_dev); if (IS_ERR(osd->od_proc_entry)) { rc = PTR_ERR(osd->od_proc_entry); CERROR("Error %d setting up lprocfs for %s\n", rc, name);