Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 128962
b: refs/heads/master
c: d352ac6
h: refs/heads/master
v: v3
  • Loading branch information
Chris Mason committed Sep 29, 2008
1 parent dd8cd6d commit 528f846
Show file tree
Hide file tree
Showing 26 changed files with 654 additions and 278 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 9a5e1ea1e1e539e244a54afffc330fc368376ab9
refs/heads/master: d352ac68148b69937d39ca5d48bcc4478e118dbf
2 changes: 1 addition & 1 deletion trunk/fs/btrfs/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ ifneq ($(KERNELRELEASE),)
obj-m := btrfs.o
btrfs-y := super.o ctree.o extent-tree.o print-tree.o root-tree.o dir-item.o \
file-item.o inode-item.o inode-map.o disk-io.o \
transaction.o bit-radix.o inode.o file.o tree-defrag.o \
transaction.o inode.o file.o tree-defrag.o \
extent_map.o sysfs.o struct-funcs.o xattr.o ordered-data.o \
extent_io.o volumes.o async-thread.o ioctl.o locking.o orphan.o \
ref-cache.o export.o tree-log.o acl.o free-space-cache.o
Expand Down
20 changes: 0 additions & 20 deletions trunk/fs/btrfs/TODO

This file was deleted.

10 changes: 9 additions & 1 deletion trunk/fs/btrfs/async-thread.c
Original file line number Diff line number Diff line change
Expand Up @@ -231,17 +231,25 @@ static struct btrfs_worker_thread *next_worker(struct btrfs_workers *workers)

/*
* if we pick a busy task, move the task to the end of the list.
* hopefully this will keep things somewhat evenly balanced
* hopefully this will keep things somewhat evenly balanced.
* Do the move in batches based on the sequence number. This groups
* requests submitted at roughly the same time onto the same worker.
*/
next = workers->worker_list.next;
worker = list_entry(next, struct btrfs_worker_thread, worker_list);
atomic_inc(&worker->num_pending);
worker->sequence++;

if (worker->sequence % workers->idle_thresh == 0)
list_move_tail(next, &workers->worker_list);
return worker;
}

/*
* selects a worker thread to take the next job. This will either find
* an idle worker, start a new worker up to the max count, or just return
* one of the existing busy workers.
*/
static struct btrfs_worker_thread *find_worker(struct btrfs_workers *workers)
{
struct btrfs_worker_thread *worker;
Expand Down
7 changes: 5 additions & 2 deletions trunk/fs/btrfs/async-thread.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,14 +63,17 @@ struct btrfs_workers {
/* once a worker has this many requests or fewer, it is idle */
int idle_thresh;

/* list with all the work threads */
/* list with all the work threads. The workers on the idle thread
* may be actively servicing jobs, but they haven't yet hit the
* idle thresh limit above.
*/
struct list_head worker_list;
struct list_head idle_list;

/* lock for finding the next worker thread to queue on */
spinlock_t lock;

/* extra name for this worker */
/* extra name for this worker, used for current->name */
char *name;
};

Expand Down
130 changes: 0 additions & 130 deletions trunk/fs/btrfs/bit-radix.c

This file was deleted.

33 changes: 0 additions & 33 deletions trunk/fs/btrfs/bit-radix.h

This file was deleted.

54 changes: 51 additions & 3 deletions trunk/fs/btrfs/btrfs_inode.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,27 +25,58 @@

/* in memory btrfs inode */
struct btrfs_inode {
/* which subvolume this inode belongs to */
struct btrfs_root *root;

/* the block group preferred for allocations. This pointer is buggy
* and needs to be replaced with a bytenr instead
*/
struct btrfs_block_group_cache *block_group;

/* key used to find this inode on disk. This is used by the code
* to read in roots of subvolumes
*/
struct btrfs_key location;

/* the extent_tree has caches of all the extent mappings to disk */
struct extent_map_tree extent_tree;

/* the io_tree does range state (DIRTY, LOCKED etc) */
struct extent_io_tree io_tree;

/* special utility tree used to record which mirrors have already been
* tried when checksums fail for a given block
*/
struct extent_io_tree io_failure_tree;

/* held while inserting checksums to avoid races */
struct mutex csum_mutex;

/* held while inesrting or deleting extents from files */
struct mutex extent_mutex;

/* held while logging the inode in tree-log.c */
struct mutex log_mutex;
struct inode vfs_inode;

/* used to order data wrt metadata */
struct btrfs_ordered_inode_tree ordered_tree;

/* standard acl pointers */
struct posix_acl *i_acl;
struct posix_acl *i_default_acl;

/* for keeping track of orphaned inodes */
struct list_head i_orphan;

/* list of all the delalloc inodes in the FS. There are times we need
* to write all the delalloc pages to disk, and this list is used
* to walk them all.
*/
struct list_head delalloc_inodes;

/* full 64 bit generation number */
/* full 64 bit generation number, struct vfs_inode doesn't have a big
* enough field for this.
*/
u64 generation;

/*
Expand All @@ -57,17 +88,34 @@ struct btrfs_inode {
*/
u64 logged_trans;

/* trans that last made a change that should be fully fsync'd */
/*
* trans that last made a change that should be fully fsync'd. This
* gets reset to zero each time the inode is logged
*/
u64 log_dirty_trans;

/* total number of bytes pending delalloc, used by stat to calc the
* real block usage of the file
*/
u64 delalloc_bytes;

/*
* the size of the file stored in the metadata on disk. data=ordered
* means the in-memory i_size might be larger than the size on disk
* because not all the blocks are written yet.
*/
u64 disk_i_size;

/* flags field from the on disk inode */
u32 flags;

/*
* if this is a directory then index_cnt is the counter for the index
* number for new files that are created
*/
u64 index_cnt;

struct inode vfs_inode;
};

static inline struct btrfs_inode *BTRFS_I(struct inode *inode)
Expand Down
18 changes: 18 additions & 0 deletions trunk/fs/btrfs/crc32c.h
Original file line number Diff line number Diff line change
@@ -1,3 +1,21 @@
/*
* Copyright (C) 2008 Oracle. All rights reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
* License v2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 021110-1307, USA.
*/

#ifndef __BTRFS_CRC32C__
#define __BTRFS_CRC32C__
#include <asm/byteorder.h>
Expand Down
Loading

0 comments on commit 528f846

Please sign in to comment.