]> err.no Git - linux-2.6/blobdiff - include/linux/raid/bitmap.h
Merge master.kernel.org:/pub/scm/linux/kernel/git/lenb/to-linus
[linux-2.6] / include / linux / raid / bitmap.h
index f785cf26cbad4f8ef769ce7fe51ed28333574eb0..6213e976eadedbd3385ba6e6ecad9f862259aea6 100644 (file)
@@ -217,6 +217,7 @@ struct bitmap {
        /* bitmap spinlock */
        spinlock_t lock;
 
+       long offset; /* offset from superblock if file is NULL */
        struct file *file; /* backing disk file */
        struct page *sb_page; /* cached copy of the bitmap file superblock */
        struct page **filemap; /* list of cache pages for the file */
@@ -233,21 +234,12 @@ struct bitmap {
        unsigned long daemon_sleep; /* how many seconds between updates? */
 
        /*
-        * bitmap write daemon - this daemon performs writes to the bitmap file
-        * this thread is only needed because of a limitation in ext3 (jbd)
-        * that does not allow a task to have two journal transactions ongoing
-        * simultaneously (even if the transactions are for two different
-        * filesystems) -- in the case of bitmap, that would be the filesystem
-        * that the bitmap file resides on and the filesystem that is mounted
-        * on the md device -- see current->journal_info in jbd/transaction.c
+        * bitmap_writeback_daemon waits for file-pages that have been written,
+        * as there is no way to get a call-back when a page write completes.
         */
        mdk_thread_t *writeback_daemon;
        spinlock_t write_lock;
-       struct semaphore write_ready;
-       struct semaphore write_done;
-       unsigned long writes_pending;
        wait_queue_head_t write_wait;
-       struct list_head write_pages;
        struct list_head complete_pages;
        mempool_t *write_pool;
 };
@@ -264,12 +256,13 @@ void bitmap_print_sb(struct bitmap *bitmap);
 int bitmap_update_sb(struct bitmap *bitmap);
 
 int  bitmap_setallbits(struct bitmap *bitmap);
+void bitmap_write_all(struct bitmap *bitmap);
 
 /* these are exported */
 int bitmap_startwrite(struct bitmap *bitmap, sector_t offset, unsigned long sectors);
 void bitmap_endwrite(struct bitmap *bitmap, sector_t offset, unsigned long sectors,
                     int success);
-int bitmap_start_sync(struct bitmap *bitmap, sector_t offset, int *blocks);
+int bitmap_start_sync(struct bitmap *bitmap, sector_t offset, int *blocks, int degraded);
 void bitmap_end_sync(struct bitmap *bitmap, sector_t offset, int *blocks, int aborted);
 void bitmap_close_sync(struct bitmap *bitmap);