Whamcloud - gitweb
LU-13550 osd-zfs: snapshot with incompatible clients
[fs/lustre-release.git] / lustre / fid / lproc_fid.c
index 0f460f9..f4d9b6a 100644 (file)
@@ -27,7 +27,6 @@
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
  *
  * lustre/fid/lproc_fid.c
  *
@@ -105,11 +104,11 @@ ldebugfs_server_fid_space_seq_write(struct file *file,
                                    const char __user *buffer,
                                    size_t count, loff_t *off)
 {
-       struct lu_server_seq *seq;
+       struct seq_file *m = file->private_data;
+       struct lu_server_seq *seq = m->private;
        int rc;
 
        ENTRY;
-       seq = ((struct seq_file *)file->private_data)->private;
 
        mutex_lock(&seq->lss_mutex);
        rc = ldebugfs_fid_write_common(buffer, count, &seq->lss_space);
@@ -199,7 +198,7 @@ LDEBUGFS_SEQ_FOPS(ldebugfs_server_fid_space);
 LDEBUGFS_SEQ_FOPS(ldebugfs_server_fid_width);
 LDEBUGFS_SEQ_FOPS_RO(ldebugfs_server_fid_server);
 
-struct lprocfs_vars seq_server_debugfs_list[] = {
+struct ldebugfs_vars seq_server_debugfs_list[] = {
        { .name =       "space",
          .fops =       &ldebugfs_server_fid_space_fops },
        { .name =       "width",
@@ -278,6 +277,7 @@ static void *fldb_seq_next(struct seq_file *p, void *v, loff_t *pos)
        const struct dt_it_ops  *iops;
        int                     rc;
 
+       ++*pos;
        if (param == NULL || param->fsp_stop)
                return NULL;
 
@@ -326,7 +326,7 @@ static int fldb_seq_show(struct seq_file *p, void *v)
        return rc;
 }
 
-struct seq_operations fldb_sops = {
+static const struct seq_operations fldb_sops = {
        .start = fldb_seq_start,
        .stop = fldb_seq_stop,
        .next = fldb_seq_next,
@@ -426,6 +426,7 @@ static ssize_t fldb_seq_write(struct file *file, const char __user *buf,
        int                      rc = 0;
        char                     _buffer[MAX_FID_RANGE_STRLEN];
        char                    *buffer = _buffer;
+       char *tmp;
        ENTRY;
 
        param = seq->private;
@@ -446,23 +447,36 @@ static ssize_t fldb_seq_write(struct file *file, const char __user *buf,
                GOTO(out, rc = -EINVAL);
        buffer++;
 
-       range.lsr_start = simple_strtoull(buffer, &buffer, 0);
-       if (*buffer != '-')
+       tmp = strchr(buffer, '-');
+       if (!tmp)
                GOTO(out, rc = -EINVAL);
-       buffer++;
+       *tmp++ = '\0';
+       rc = kstrtoull(buffer, 0, &range.lsr_start);
+       if (rc)
+               GOTO(out, rc);
+       buffer = tmp;
 
-       range.lsr_end = simple_strtoull(buffer, &buffer, 0);
-       if (*buffer != ')')
+       tmp = strchr(buffer, ')');
+       if (!tmp)
                GOTO(out, rc = -EINVAL);
-       buffer++;
+       *tmp++ = '\0';
+       rc = kstrtoull(buffer, 0, &range.lsr_end);
+       if (rc)
+               GOTO(out, rc);
+       buffer = tmp;
+
        if (*buffer != ':')
                GOTO(out, rc = -EINVAL);
        buffer++;
 
-       range.lsr_index = simple_strtoul(buffer, &buffer, 0);
-       if (*buffer != ':')
+       tmp = strchr(buffer, ':');
+       if (!tmp)
                GOTO(out, rc = -EINVAL);
-       buffer++;
+       *tmp++ = '\0';
+       rc = kstrtouint(buffer, 0, &range.lsr_index);
+       if (rc)
+               GOTO(out, rc);
+       buffer = tmp;
 
        if (strncmp(buffer, "mdt", 3) == 0)
                range.lsr_flags = LU_SEQ_RANGE_MDT;
@@ -494,11 +508,11 @@ ldebugfs_client_fid_space_seq_write(struct file *file,
                                    const char __user *buffer,
                                    size_t count, loff_t *off)
 {
-       struct lu_client_seq *seq;
+       struct seq_file *m = file->private_data;
+       struct lu_client_seq *seq = m->private;
        int rc;
 
        ENTRY;
-       seq = ((struct seq_file *)file->private_data)->private;
 
        mutex_lock(&seq->lcs_mutex);
        rc = ldebugfs_fid_write_common(buffer, count, &seq->lcs_space);
@@ -608,7 +622,7 @@ LDEBUGFS_SEQ_FOPS(ldebugfs_client_fid_width);
 LDEBUGFS_SEQ_FOPS_RO(ldebugfs_client_fid_server);
 LDEBUGFS_SEQ_FOPS_RO(ldebugfs_client_fid_fid);
 
-struct lprocfs_vars seq_client_debugfs_list[] = {
+struct ldebugfs_vars seq_client_debugfs_list[] = {
        { .name =       "space",
          .fops =       &ldebugfs_client_fid_space_fops },
        { .name =       "width",