|
@@ -1105,7 +1105,7 @@ struct btrfs_qgroup_limit_item {
|
|
|
} __attribute__ ((__packed__));
|
|
|
|
|
|
struct btrfs_space_info {
|
|
|
- u64 flags;
|
|
|
+ spinlock_t lock;
|
|
|
|
|
|
u64 total_bytes; /* total bytes in the space,
|
|
|
this doesn't take mirrors into account */
|
|
@@ -1115,14 +1115,25 @@ struct btrfs_space_info {
|
|
|
transaction finishes */
|
|
|
u64 bytes_reserved; /* total bytes the allocator has reserved for
|
|
|
current allocations */
|
|
|
- u64 bytes_readonly; /* total bytes that are read only */
|
|
|
-
|
|
|
u64 bytes_may_use; /* number of bytes that may be used for
|
|
|
delalloc/allocations */
|
|
|
+ u64 bytes_readonly; /* total bytes that are read only */
|
|
|
+
|
|
|
+ unsigned int full:1; /* indicates that we cannot allocate any more
|
|
|
+ chunks for this space */
|
|
|
+ unsigned int chunk_alloc:1; /* set if we are allocating a chunk */
|
|
|
+
|
|
|
+ unsigned int flush:1; /* set if we are trying to make space */
|
|
|
+
|
|
|
+ unsigned int force_alloc; /* set if we need to force a chunk
|
|
|
+ alloc for this space */
|
|
|
+
|
|
|
u64 disk_used; /* total bytes used on disk */
|
|
|
u64 disk_total; /* total bytes on disk, takes mirrors into
|
|
|
account */
|
|
|
|
|
|
+ u64 flags;
|
|
|
+
|
|
|
/*
|
|
|
* bytes_pinned is kept in line with what is actually pinned, as in
|
|
|
* we've called update_block_group and dropped the bytes_used counter
|
|
@@ -1135,21 +1146,11 @@ struct btrfs_space_info {
|
|
|
*/
|
|
|
struct percpu_counter total_bytes_pinned;
|
|
|
|
|
|
- unsigned int full:1; /* indicates that we cannot allocate any more
|
|
|
- chunks for this space */
|
|
|
- unsigned int chunk_alloc:1; /* set if we are allocating a chunk */
|
|
|
-
|
|
|
- unsigned int flush:1; /* set if we are trying to make space */
|
|
|
-
|
|
|
- unsigned int force_alloc; /* set if we need to force a chunk
|
|
|
- alloc for this space */
|
|
|
-
|
|
|
struct list_head list;
|
|
|
|
|
|
+ struct rw_semaphore groups_sem;
|
|
|
/* for block groups in our same type */
|
|
|
struct list_head block_groups[BTRFS_NR_RAID_TYPES];
|
|
|
- spinlock_t lock;
|
|
|
- struct rw_semaphore groups_sem;
|
|
|
wait_queue_head_t wait;
|
|
|
|
|
|
struct kobject kobj;
|