linux/fs/fscache/proc.c
<<
>>
Prefs
   1/* FS-Cache statistics viewing interface
   2 *
   3 * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
   4 * Written by David Howells (dhowells@redhat.com)
   5 *
   6 * This program is free software; you can redistribute it and/or
   7 * modify it under the terms of the GNU General Public License
   8 * as published by the Free Software Foundation; either version
   9 * 2 of the License, or (at your option) any later version.
  10 */
  11
  12#define FSCACHE_DEBUG_LEVEL OPERATION
  13#include <linux/module.h>
  14#include <linux/proc_fs.h>
  15#include <linux/seq_file.h>
  16#include "internal.h"
  17
  18/*
  19 * initialise the /proc/fs/fscache/ directory
  20 */
  21int __init fscache_proc_init(void)
  22{
  23        _enter("");
  24
  25        if (!proc_mkdir("fs/fscache", NULL))
  26                goto error_dir;
  27
  28#ifdef CONFIG_FSCACHE_STATS
  29        if (!proc_create("fs/fscache/stats", S_IFREG | 0444, NULL,
  30                         &fscache_stats_fops))
  31                goto error_stats;
  32#endif
  33
  34#ifdef CONFIG_FSCACHE_HISTOGRAM
  35        if (!proc_create("fs/fscache/histogram", S_IFREG | 0444, NULL,
  36                         &fscache_histogram_fops))
  37                goto error_histogram;
  38#endif
  39
  40#ifdef CONFIG_FSCACHE_OBJECT_LIST
  41        if (!proc_create("fs/fscache/objects", S_IFREG | 0444, NULL,
  42                         &fscache_objlist_fops))
  43                goto error_objects;
  44#endif
  45
  46        _leave(" = 0");
  47        return 0;
  48
  49#ifdef CONFIG_FSCACHE_OBJECT_LIST
  50error_objects:
  51#endif
  52#ifdef CONFIG_FSCACHE_HISTOGRAM
  53        remove_proc_entry("fs/fscache/histogram", NULL);
  54error_histogram:
  55#endif
  56#ifdef CONFIG_FSCACHE_STATS
  57        remove_proc_entry("fs/fscache/stats", NULL);
  58error_stats:
  59#endif
  60        remove_proc_entry("fs/fscache", NULL);
  61error_dir:
  62        _leave(" = -ENOMEM");
  63        return -ENOMEM;
  64}
  65
  66/*
  67 * clean up the /proc/fs/fscache/ directory
  68 */
  69void fscache_proc_cleanup(void)
  70{
  71#ifdef CONFIG_FSCACHE_OBJECT_LIST
  72        remove_proc_entry("fs/fscache/objects", NULL);
  73#endif
  74#ifdef CONFIG_FSCACHE_HISTOGRAM
  75        remove_proc_entry("fs/fscache/histogram", NULL);
  76#endif
  77#ifdef CONFIG_FSCACHE_STATS
  78        remove_proc_entry("fs/fscache/stats", NULL);
  79#endif
  80        remove_proc_entry("fs/fscache", NULL);
  81}
  82