sunrpc: Store cache_detail in seq_file's private directly
authorKinglong Mee <kinglongmee@gmail.com>
Mon, 27 Jul 2015 03:09:10 +0000 (11:09 +0800)
committerJ. Bruce Fields <bfields@redhat.com>
Thu, 13 Aug 2015 12:59:01 +0000 (08:59 -0400)
Cleanup.

Just store cache_detail in seq_file's private,
an allocated handle is redundant.

v8, same as v6.

Signed-off-by: Kinglong Mee <kinglongmee@gmail.com>
Reviewed-by: NeilBrown <neilb@suse.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
net/sunrpc/cache.c

index 2928afffbb81ffdfea820fd1c2b87c3ae8b02a73..edec603abc17ecd2849fd84b551bb38660b7922c 100644 (file)
@@ -1270,18 +1270,13 @@ EXPORT_SYMBOL_GPL(qword_get);
  * get a header, then pass each real item in the cache
  */
 
-struct handle {
-       struct cache_detail *cd;
-};
-
 static void *c_start(struct seq_file *m, loff_t *pos)
        __acquires(cd->hash_lock)
 {
        loff_t n = *pos;
        unsigned int hash, entry;
        struct cache_head *ch;
-       struct cache_detail *cd = ((struct handle*)m->private)->cd;
-
+       struct cache_detail *cd = m->private;
 
        read_lock(&cd->hash_lock);
        if (!n--)
@@ -1308,7 +1303,7 @@ static void *c_next(struct seq_file *m, void *p, loff_t *pos)
 {
        struct cache_head *ch = p;
        int hash = (*pos >> 32);
-       struct cache_detail *cd = ((struct handle*)m->private)->cd;
+       struct cache_detail *cd = m->private;
 
        if (p == SEQ_START_TOKEN)
                hash = 0;
@@ -1334,14 +1329,14 @@ static void *c_next(struct seq_file *m, void *p, loff_t *pos)
 static void c_stop(struct seq_file *m, void *p)
        __releases(cd->hash_lock)
 {
-       struct cache_detail *cd = ((struct handle*)m->private)->cd;
+       struct cache_detail *cd = m->private;
        read_unlock(&cd->hash_lock);
 }
 
 static int c_show(struct seq_file *m, void *p)
 {
        struct cache_head *cp = p;
-       struct cache_detail *cd = ((struct handle*)m->private)->cd;
+       struct cache_detail *cd = m->private;
 
        if (p == SEQ_START_TOKEN)
                return cd->cache_show(m, cd, NULL);
@@ -1373,24 +1368,27 @@ static const struct seq_operations cache_content_op = {
 static int content_open(struct inode *inode, struct file *file,
                        struct cache_detail *cd)
 {
-       struct handle *han;
+       struct seq_file *seq;
+       int err;
 
        if (!cd || !try_module_get(cd->owner))
                return -EACCES;
-       han = __seq_open_private(file, &cache_content_op, sizeof(*han));
-       if (han == NULL) {
+
+       err = seq_open(file, &cache_content_op);
+       if (err) {
                module_put(cd->owner);
-               return -ENOMEM;
+               return err;
        }
 
-       han->cd = cd;
+       seq = file->private_data;
+       seq->private = cd;
        return 0;
 }
 
 static int content_release(struct inode *inode, struct file *file,
                struct cache_detail *cd)
 {
-       int ret = seq_release_private(inode, file);
+       int ret = seq_release(inode, file);
        module_put(cd->owner);
        return ret;
 }