btrfs: rename BTRFS_ROOT_REF_COWS to BTRFS_ROOT_SHAREABLE
[linux-2.6-block.git] / fs / btrfs / disk-io.c
index d10c7be10f3b80158201c81707c116e9b9ab9e42..248086cca1240e8b327afb4111be3a7f3cc35ec4 100644 (file)
@@ -358,16 +358,14 @@ static int btrfs_check_super_csum(struct btrfs_fs_info *fs_info,
        SHASH_DESC_ON_STACK(shash, fs_info->csum_shash);
 
        shash->tfm = fs_info->csum_shash;
-       crypto_shash_init(shash);
 
        /*
         * The super_block structure does not span the whole
         * BTRFS_SUPER_INFO_SIZE range, we expect that the unused space is
         * filled with zeros and is included in the checksum.
         */
-       crypto_shash_update(shash, raw_disk_sb + BTRFS_CSUM_SIZE,
-                           BTRFS_SUPER_INFO_SIZE - BTRFS_CSUM_SIZE);
-       crypto_shash_final(shash, result);
+       crypto_shash_digest(shash, raw_disk_sb + BTRFS_CSUM_SIZE,
+                           BTRFS_SUPER_INFO_SIZE - BTRFS_CSUM_SIZE, result);
 
        if (memcmp(disk_sb->csum, result, btrfs_super_csum_size(disk_sb)))
                return 1;
@@ -709,9 +707,7 @@ static void end_workqueue_bio(struct bio *bio)
                else
                        wq = fs_info->endio_write_workers;
        } else {
-               if (unlikely(end_io_wq->metadata == BTRFS_WQ_ENDIO_DIO_REPAIR))
-                       wq = fs_info->endio_repair_workers;
-               else if (end_io_wq->metadata == BTRFS_WQ_ENDIO_RAID56)
+               if (end_io_wq->metadata == BTRFS_WQ_ENDIO_RAID56)
                        wq = fs_info->endio_raid56_workers;
                else if (end_io_wq->metadata)
                        wq = fs_info->endio_meta_workers;
@@ -1277,12 +1273,13 @@ static struct btrfs_root *alloc_log_tree(struct btrfs_trans_handle *trans,
        root->root_key.offset = BTRFS_TREE_LOG_OBJECTID;
 
        /*
-        * DON'T set REF_COWS for log trees
+        * DON'T set SHAREABLE bit for log trees.
+        *
+        * Log trees are not exposed to user space thus can't be snapshotted,
+        * and they go away before a real commit is actually done.
         *
-        * log trees do not get reference counted because they go away
-        * before a real commit is actually done.  They do store pointers
-        * to file data extents, and those reference counts still get
-        * updated (along with back refs to the log tree).
+        * They do store pointers to file data extents, and those reference
+        * counts still get updated (along with back refs to the log tree).
         */
 
        leaf = btrfs_alloc_tree_block(trans, root, 0, BTRFS_TREE_LOG_OBJECTID,
@@ -1421,7 +1418,7 @@ static int btrfs_init_fs_root(struct btrfs_root *root)
                goto fail;
 
        if (root->root_key.objectid != BTRFS_TREE_LOG_OBJECTID) {
-               set_bit(BTRFS_ROOT_REF_COWS, &root->state);
+               set_bit(BTRFS_ROOT_SHAREABLE, &root->state);
                btrfs_check_and_init_root_item(&root->root_item);
        }
 
@@ -1942,7 +1939,6 @@ static void btrfs_stop_all_workers(struct btrfs_fs_info *fs_info)
        btrfs_destroy_workqueue(fs_info->workers);
        btrfs_destroy_workqueue(fs_info->endio_workers);
        btrfs_destroy_workqueue(fs_info->endio_raid56_workers);
-       btrfs_destroy_workqueue(fs_info->endio_repair_workers);
        btrfs_destroy_workqueue(fs_info->rmw_workers);
        btrfs_destroy_workqueue(fs_info->endio_write_workers);
        btrfs_destroy_workqueue(fs_info->endio_freespace_worker);
@@ -2145,8 +2141,6 @@ static int btrfs_init_workqueues(struct btrfs_fs_info *fs_info,
        fs_info->endio_raid56_workers =
                btrfs_alloc_workqueue(fs_info, "endio-raid56", flags,
                                      max_active, 4);
-       fs_info->endio_repair_workers =
-               btrfs_alloc_workqueue(fs_info, "endio-repair", flags, 1, 0);
        fs_info->rmw_workers =
                btrfs_alloc_workqueue(fs_info, "rmw", flags, max_active, 2);
        fs_info->endio_write_workers =
@@ -2170,7 +2164,6 @@ static int btrfs_init_workqueues(struct btrfs_fs_info *fs_info,
              fs_info->flush_workers &&
              fs_info->endio_workers && fs_info->endio_meta_workers &&
              fs_info->endio_meta_write_workers &&
-             fs_info->endio_repair_workers &&
              fs_info->endio_write_workers && fs_info->endio_raid56_workers &&
              fs_info->endio_freespace_worker && fs_info->rmw_workers &&
              fs_info->caching_workers && fs_info->readahead_workers &&
@@ -3510,10 +3503,9 @@ static int write_dev_supers(struct btrfs_device *device,
 
                btrfs_set_super_bytenr(sb, bytenr);
 
-               crypto_shash_init(shash);
-               crypto_shash_update(shash, (const char *)sb + BTRFS_CSUM_SIZE,
-                                   BTRFS_SUPER_INFO_SIZE - BTRFS_CSUM_SIZE);
-               crypto_shash_final(shash, sb->csum);
+               crypto_shash_digest(shash, (const char *)sb + BTRFS_CSUM_SIZE,
+                                   BTRFS_SUPER_INFO_SIZE - BTRFS_CSUM_SIZE,
+                                   sb->csum);
 
                page = find_or_create_page(mapping, bytenr >> PAGE_SHIFT,
                                           GFP_NOFS);