]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - fs/ocfs2/ocfs2.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm
[mv-sheeva.git] / fs / ocfs2 / ocfs2.h
index 1386281950dbead47e4b5528cde7caae706cb3f2..c9345ebb849343873adf6b2b67ae226f8181f65e 100644 (file)
@@ -34,6 +34,7 @@
 #include <linux/workqueue.h>
 #include <linux/kref.h>
 #include <linux/mutex.h>
+#include <linux/lockdep.h>
 #ifndef CONFIG_OCFS2_COMPAT_JBD
 # include <linux/jbd2.h>
 #else
@@ -47,6 +48,9 @@
 #include "ocfs2_fs.h"
 #include "ocfs2_lockid.h"
 
+/* For struct ocfs2_blockcheck_stats */
+#include "blockcheck.h"
+
 /* Most user visible OCFS2 inodes will have very few pieces of
  * metadata, but larger files (including bitmaps, etc) must be taken
  * into account when designing an access scheme. We allow a small
@@ -149,6 +153,25 @@ struct ocfs2_lock_res {
        unsigned int             l_lock_max_exmode;        /* Max wait for EX */
        unsigned int             l_lock_refresh;           /* Disk refreshes */
 #endif
+#ifdef CONFIG_DEBUG_LOCK_ALLOC
+       struct lockdep_map       l_lockdep_map;
+#endif
+};
+
+enum ocfs2_orphan_scan_state {
+       ORPHAN_SCAN_ACTIVE,
+       ORPHAN_SCAN_INACTIVE
+};
+
+struct ocfs2_orphan_scan {
+       struct mutex            os_lock;
+       struct ocfs2_super      *os_osb;
+       struct ocfs2_lock_res   os_lockres;     /* lock to synchronize scans */
+       struct delayed_work     os_orphan_scan_work;
+       struct timespec         os_scantime;  /* time this node ran the scan */
+       u32                     os_count;      /* tracks node specific scans */
+       u32                     os_seqno;       /* tracks cluster wide scans */
+       atomic_t                os_state;              /* ACTIVE or INACTIVE */
 };
 
 struct ocfs2_dlm_debug {
@@ -295,6 +318,7 @@ struct ocfs2_super
        struct ocfs2_dinode *local_alloc_copy;
        struct ocfs2_quota_recovery *quota_rec;
 
+       struct ocfs2_blockcheck_stats osb_ecc_stats;
        struct ocfs2_alloc_stats alloc_stats;
        char dev_str[20];               /* "major,minor" of the device */
 
@@ -341,6 +365,8 @@ struct ocfs2_super
        unsigned int                    *osb_orphan_wipes;
        wait_queue_head_t               osb_wipe_event;
 
+       struct ocfs2_orphan_scan        osb_orphan_scan;
+
        /* used to protect metaecc calculation check of xattr. */
        spinlock_t osb_xattr_lock;