|
@@ -59,9 +59,6 @@ static int ocfs2_block_group_alloc(struct ocfs2_super *osb,
|
|
struct inode *alloc_inode,
|
|
struct inode *alloc_inode,
|
|
struct buffer_head *bh);
|
|
struct buffer_head *bh);
|
|
|
|
|
|
-static int ocfs2_reserve_suballoc_bits(struct ocfs2_super *osb,
|
|
|
|
- struct ocfs2_alloc_context *ac);
|
|
|
|
-
|
|
|
|
static int ocfs2_cluster_group_search(struct inode *inode,
|
|
static int ocfs2_cluster_group_search(struct inode *inode,
|
|
struct buffer_head *group_bh,
|
|
struct buffer_head *group_bh,
|
|
u32 bits_wanted, u32 min_bits,
|
|
u32 bits_wanted, u32 min_bits,
|
|
@@ -72,6 +69,7 @@ static int ocfs2_block_group_search(struct inode *inode,
|
|
u16 *bit_off, u16 *bits_found);
|
|
u16 *bit_off, u16 *bits_found);
|
|
static int ocfs2_claim_suballoc_bits(struct ocfs2_super *osb,
|
|
static int ocfs2_claim_suballoc_bits(struct ocfs2_super *osb,
|
|
struct ocfs2_alloc_context *ac,
|
|
struct ocfs2_alloc_context *ac,
|
|
|
|
+ struct ocfs2_journal_handle *handle,
|
|
u32 bits_wanted,
|
|
u32 bits_wanted,
|
|
u32 min_bits,
|
|
u32 min_bits,
|
|
u16 *bit_off,
|
|
u16 *bit_off,
|
|
@@ -120,8 +118,16 @@ static inline void ocfs2_block_to_cluster_group(struct inode *inode,
|
|
|
|
|
|
void ocfs2_free_alloc_context(struct ocfs2_alloc_context *ac)
|
|
void ocfs2_free_alloc_context(struct ocfs2_alloc_context *ac)
|
|
{
|
|
{
|
|
- if (ac->ac_inode)
|
|
|
|
- iput(ac->ac_inode);
|
|
|
|
|
|
+ struct inode *inode = ac->ac_inode;
|
|
|
|
+
|
|
|
|
+ if (inode) {
|
|
|
|
+ if (ac->ac_which != OCFS2_AC_USE_LOCAL)
|
|
|
|
+ ocfs2_meta_unlock(inode, 1);
|
|
|
|
+
|
|
|
|
+ mutex_unlock(&inode->i_mutex);
|
|
|
|
+
|
|
|
|
+ iput(inode);
|
|
|
|
+ }
|
|
if (ac->ac_bh)
|
|
if (ac->ac_bh)
|
|
brelse(ac->ac_bh);
|
|
brelse(ac->ac_bh);
|
|
kfree(ac);
|
|
kfree(ac);
|
|
@@ -284,16 +290,8 @@ static int ocfs2_block_group_alloc(struct ocfs2_super *osb,
|
|
|
|
|
|
mlog_entry_void();
|
|
mlog_entry_void();
|
|
|
|
|
|
- handle = ocfs2_alloc_handle(osb);
|
|
|
|
- if (!handle) {
|
|
|
|
- status = -ENOMEM;
|
|
|
|
- mlog_errno(status);
|
|
|
|
- goto bail;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
cl = &fe->id2.i_chain;
|
|
cl = &fe->id2.i_chain;
|
|
status = ocfs2_reserve_clusters(osb,
|
|
status = ocfs2_reserve_clusters(osb,
|
|
- handle,
|
|
|
|
le16_to_cpu(cl->cl_cpg),
|
|
le16_to_cpu(cl->cl_cpg),
|
|
&ac);
|
|
&ac);
|
|
if (status < 0) {
|
|
if (status < 0) {
|
|
@@ -402,27 +400,38 @@ bail:
|
|
}
|
|
}
|
|
|
|
|
|
static int ocfs2_reserve_suballoc_bits(struct ocfs2_super *osb,
|
|
static int ocfs2_reserve_suballoc_bits(struct ocfs2_super *osb,
|
|
- struct ocfs2_alloc_context *ac)
|
|
|
|
|
|
+ struct ocfs2_alloc_context *ac,
|
|
|
|
+ int type,
|
|
|
|
+ u32 slot)
|
|
{
|
|
{
|
|
int status;
|
|
int status;
|
|
u32 bits_wanted = ac->ac_bits_wanted;
|
|
u32 bits_wanted = ac->ac_bits_wanted;
|
|
- struct inode *alloc_inode = ac->ac_inode;
|
|
|
|
|
|
+ struct inode *alloc_inode;
|
|
struct buffer_head *bh = NULL;
|
|
struct buffer_head *bh = NULL;
|
|
- struct ocfs2_journal_handle *handle = ac->ac_handle;
|
|
|
|
struct ocfs2_dinode *fe;
|
|
struct ocfs2_dinode *fe;
|
|
u32 free_bits;
|
|
u32 free_bits;
|
|
|
|
|
|
mlog_entry_void();
|
|
mlog_entry_void();
|
|
|
|
|
|
- BUG_ON(handle->k_handle);
|
|
|
|
|
|
+ alloc_inode = ocfs2_get_system_file_inode(osb, type, slot);
|
|
|
|
+ if (!alloc_inode) {
|
|
|
|
+ mlog_errno(-EINVAL);
|
|
|
|
+ return -EINVAL;
|
|
|
|
+ }
|
|
|
|
|
|
- ocfs2_handle_add_inode(handle, alloc_inode);
|
|
|
|
- status = ocfs2_meta_lock(alloc_inode, handle, &bh, 1);
|
|
|
|
|
|
+ mutex_lock(&alloc_inode->i_mutex);
|
|
|
|
+
|
|
|
|
+ status = ocfs2_meta_lock(alloc_inode, NULL, &bh, 1);
|
|
if (status < 0) {
|
|
if (status < 0) {
|
|
|
|
+ mutex_unlock(&alloc_inode->i_mutex);
|
|
|
|
+ iput(alloc_inode);
|
|
|
|
+
|
|
mlog_errno(status);
|
|
mlog_errno(status);
|
|
- goto bail;
|
|
|
|
|
|
+ return status;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ ac->ac_inode = alloc_inode;
|
|
|
|
+
|
|
fe = (struct ocfs2_dinode *) bh->b_data;
|
|
fe = (struct ocfs2_dinode *) bh->b_data;
|
|
if (!OCFS2_IS_VALID_DINODE(fe)) {
|
|
if (!OCFS2_IS_VALID_DINODE(fe)) {
|
|
OCFS2_RO_ON_INVALID_DINODE(alloc_inode->i_sb, fe);
|
|
OCFS2_RO_ON_INVALID_DINODE(alloc_inode->i_sb, fe);
|
|
@@ -473,12 +482,11 @@ bail:
|
|
}
|
|
}
|
|
|
|
|
|
int ocfs2_reserve_new_metadata(struct ocfs2_super *osb,
|
|
int ocfs2_reserve_new_metadata(struct ocfs2_super *osb,
|
|
- struct ocfs2_journal_handle *handle,
|
|
|
|
struct ocfs2_dinode *fe,
|
|
struct ocfs2_dinode *fe,
|
|
struct ocfs2_alloc_context **ac)
|
|
struct ocfs2_alloc_context **ac)
|
|
{
|
|
{
|
|
int status;
|
|
int status;
|
|
- struct inode *alloc_inode = NULL;
|
|
|
|
|
|
+ u32 slot;
|
|
|
|
|
|
*ac = kcalloc(1, sizeof(struct ocfs2_alloc_context), GFP_KERNEL);
|
|
*ac = kcalloc(1, sizeof(struct ocfs2_alloc_context), GFP_KERNEL);
|
|
if (!(*ac)) {
|
|
if (!(*ac)) {
|
|
@@ -488,28 +496,18 @@ int ocfs2_reserve_new_metadata(struct ocfs2_super *osb,
|
|
}
|
|
}
|
|
|
|
|
|
(*ac)->ac_bits_wanted = ocfs2_extend_meta_needed(fe);
|
|
(*ac)->ac_bits_wanted = ocfs2_extend_meta_needed(fe);
|
|
- (*ac)->ac_handle = handle;
|
|
|
|
(*ac)->ac_which = OCFS2_AC_USE_META;
|
|
(*ac)->ac_which = OCFS2_AC_USE_META;
|
|
|
|
|
|
#ifndef OCFS2_USE_ALL_METADATA_SUBALLOCATORS
|
|
#ifndef OCFS2_USE_ALL_METADATA_SUBALLOCATORS
|
|
- alloc_inode = ocfs2_get_system_file_inode(osb,
|
|
|
|
- EXTENT_ALLOC_SYSTEM_INODE,
|
|
|
|
- 0);
|
|
|
|
|
|
+ slot = 0;
|
|
#else
|
|
#else
|
|
- alloc_inode = ocfs2_get_system_file_inode(osb,
|
|
|
|
- EXTENT_ALLOC_SYSTEM_INODE,
|
|
|
|
- osb->slot_num);
|
|
|
|
|
|
+ slot = osb->slot_num;
|
|
#endif
|
|
#endif
|
|
- if (!alloc_inode) {
|
|
|
|
- status = -ENOMEM;
|
|
|
|
- mlog_errno(status);
|
|
|
|
- goto bail;
|
|
|
|
- }
|
|
|
|
|
|
|
|
- (*ac)->ac_inode = igrab(alloc_inode);
|
|
|
|
(*ac)->ac_group_search = ocfs2_block_group_search;
|
|
(*ac)->ac_group_search = ocfs2_block_group_search;
|
|
|
|
|
|
- status = ocfs2_reserve_suballoc_bits(osb, (*ac));
|
|
|
|
|
|
+ status = ocfs2_reserve_suballoc_bits(osb, (*ac),
|
|
|
|
+ EXTENT_ALLOC_SYSTEM_INODE, slot);
|
|
if (status < 0) {
|
|
if (status < 0) {
|
|
if (status != -ENOSPC)
|
|
if (status != -ENOSPC)
|
|
mlog_errno(status);
|
|
mlog_errno(status);
|
|
@@ -523,19 +521,14 @@ bail:
|
|
*ac = NULL;
|
|
*ac = NULL;
|
|
}
|
|
}
|
|
|
|
|
|
- if (alloc_inode)
|
|
|
|
- iput(alloc_inode);
|
|
|
|
-
|
|
|
|
mlog_exit(status);
|
|
mlog_exit(status);
|
|
return status;
|
|
return status;
|
|
}
|
|
}
|
|
|
|
|
|
int ocfs2_reserve_new_inode(struct ocfs2_super *osb,
|
|
int ocfs2_reserve_new_inode(struct ocfs2_super *osb,
|
|
- struct ocfs2_journal_handle *handle,
|
|
|
|
struct ocfs2_alloc_context **ac)
|
|
struct ocfs2_alloc_context **ac)
|
|
{
|
|
{
|
|
int status;
|
|
int status;
|
|
- struct inode *alloc_inode = NULL;
|
|
|
|
|
|
|
|
*ac = kcalloc(1, sizeof(struct ocfs2_alloc_context), GFP_KERNEL);
|
|
*ac = kcalloc(1, sizeof(struct ocfs2_alloc_context), GFP_KERNEL);
|
|
if (!(*ac)) {
|
|
if (!(*ac)) {
|
|
@@ -545,22 +538,13 @@ int ocfs2_reserve_new_inode(struct ocfs2_super *osb,
|
|
}
|
|
}
|
|
|
|
|
|
(*ac)->ac_bits_wanted = 1;
|
|
(*ac)->ac_bits_wanted = 1;
|
|
- (*ac)->ac_handle = handle;
|
|
|
|
(*ac)->ac_which = OCFS2_AC_USE_INODE;
|
|
(*ac)->ac_which = OCFS2_AC_USE_INODE;
|
|
|
|
|
|
- alloc_inode = ocfs2_get_system_file_inode(osb,
|
|
|
|
- INODE_ALLOC_SYSTEM_INODE,
|
|
|
|
- osb->slot_num);
|
|
|
|
- if (!alloc_inode) {
|
|
|
|
- status = -ENOMEM;
|
|
|
|
- mlog_errno(status);
|
|
|
|
- goto bail;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- (*ac)->ac_inode = igrab(alloc_inode);
|
|
|
|
(*ac)->ac_group_search = ocfs2_block_group_search;
|
|
(*ac)->ac_group_search = ocfs2_block_group_search;
|
|
|
|
|
|
- status = ocfs2_reserve_suballoc_bits(osb, *ac);
|
|
|
|
|
|
+ status = ocfs2_reserve_suballoc_bits(osb, *ac,
|
|
|
|
+ INODE_ALLOC_SYSTEM_INODE,
|
|
|
|
+ osb->slot_num);
|
|
if (status < 0) {
|
|
if (status < 0) {
|
|
if (status != -ENOSPC)
|
|
if (status != -ENOSPC)
|
|
mlog_errno(status);
|
|
mlog_errno(status);
|
|
@@ -574,9 +558,6 @@ bail:
|
|
*ac = NULL;
|
|
*ac = NULL;
|
|
}
|
|
}
|
|
|
|
|
|
- if (alloc_inode)
|
|
|
|
- iput(alloc_inode);
|
|
|
|
-
|
|
|
|
mlog_exit(status);
|
|
mlog_exit(status);
|
|
return status;
|
|
return status;
|
|
}
|
|
}
|
|
@@ -588,20 +569,17 @@ int ocfs2_reserve_cluster_bitmap_bits(struct ocfs2_super *osb,
|
|
{
|
|
{
|
|
int status;
|
|
int status;
|
|
|
|
|
|
- ac->ac_inode = ocfs2_get_system_file_inode(osb,
|
|
|
|
- GLOBAL_BITMAP_SYSTEM_INODE,
|
|
|
|
- OCFS2_INVALID_SLOT);
|
|
|
|
- if (!ac->ac_inode) {
|
|
|
|
- status = -EINVAL;
|
|
|
|
- mlog(ML_ERROR, "Could not get bitmap inode!\n");
|
|
|
|
- goto bail;
|
|
|
|
- }
|
|
|
|
ac->ac_which = OCFS2_AC_USE_MAIN;
|
|
ac->ac_which = OCFS2_AC_USE_MAIN;
|
|
ac->ac_group_search = ocfs2_cluster_group_search;
|
|
ac->ac_group_search = ocfs2_cluster_group_search;
|
|
|
|
|
|
- status = ocfs2_reserve_suballoc_bits(osb, ac);
|
|
|
|
- if (status < 0 && status != -ENOSPC)
|
|
|
|
|
|
+ status = ocfs2_reserve_suballoc_bits(osb, ac,
|
|
|
|
+ GLOBAL_BITMAP_SYSTEM_INODE,
|
|
|
|
+ OCFS2_INVALID_SLOT);
|
|
|
|
+ if (status < 0 && status != -ENOSPC) {
|
|
mlog_errno(status);
|
|
mlog_errno(status);
|
|
|
|
+ goto bail;
|
|
|
|
+ }
|
|
|
|
+
|
|
bail:
|
|
bail:
|
|
return status;
|
|
return status;
|
|
}
|
|
}
|
|
@@ -610,7 +588,6 @@ bail:
|
|
* use so we figure it out for them, but unfortunately this clutters
|
|
* use so we figure it out for them, but unfortunately this clutters
|
|
* things a bit. */
|
|
* things a bit. */
|
|
int ocfs2_reserve_clusters(struct ocfs2_super *osb,
|
|
int ocfs2_reserve_clusters(struct ocfs2_super *osb,
|
|
- struct ocfs2_journal_handle *handle,
|
|
|
|
u32 bits_wanted,
|
|
u32 bits_wanted,
|
|
struct ocfs2_alloc_context **ac)
|
|
struct ocfs2_alloc_context **ac)
|
|
{
|
|
{
|
|
@@ -618,8 +595,6 @@ int ocfs2_reserve_clusters(struct ocfs2_super *osb,
|
|
|
|
|
|
mlog_entry_void();
|
|
mlog_entry_void();
|
|
|
|
|
|
- BUG_ON(!handle);
|
|
|
|
-
|
|
|
|
*ac = kcalloc(1, sizeof(struct ocfs2_alloc_context), GFP_KERNEL);
|
|
*ac = kcalloc(1, sizeof(struct ocfs2_alloc_context), GFP_KERNEL);
|
|
if (!(*ac)) {
|
|
if (!(*ac)) {
|
|
status = -ENOMEM;
|
|
status = -ENOMEM;
|
|
@@ -628,12 +603,10 @@ int ocfs2_reserve_clusters(struct ocfs2_super *osb,
|
|
}
|
|
}
|
|
|
|
|
|
(*ac)->ac_bits_wanted = bits_wanted;
|
|
(*ac)->ac_bits_wanted = bits_wanted;
|
|
- (*ac)->ac_handle = handle;
|
|
|
|
|
|
|
|
status = -ENOSPC;
|
|
status = -ENOSPC;
|
|
if (ocfs2_alloc_should_use_local(osb, bits_wanted)) {
|
|
if (ocfs2_alloc_should_use_local(osb, bits_wanted)) {
|
|
status = ocfs2_reserve_local_alloc_bits(osb,
|
|
status = ocfs2_reserve_local_alloc_bits(osb,
|
|
- handle,
|
|
|
|
bits_wanted,
|
|
bits_wanted,
|
|
*ac);
|
|
*ac);
|
|
if ((status < 0) && (status != -ENOSPC)) {
|
|
if ((status < 0) && (status != -ENOSPC)) {
|
|
@@ -1055,6 +1028,7 @@ out:
|
|
}
|
|
}
|
|
|
|
|
|
static int ocfs2_search_one_group(struct ocfs2_alloc_context *ac,
|
|
static int ocfs2_search_one_group(struct ocfs2_alloc_context *ac,
|
|
|
|
+ struct ocfs2_journal_handle *handle,
|
|
u32 bits_wanted,
|
|
u32 bits_wanted,
|
|
u32 min_bits,
|
|
u32 min_bits,
|
|
u16 *bit_off,
|
|
u16 *bit_off,
|
|
@@ -1067,7 +1041,6 @@ static int ocfs2_search_one_group(struct ocfs2_alloc_context *ac,
|
|
struct buffer_head *group_bh = NULL;
|
|
struct buffer_head *group_bh = NULL;
|
|
struct ocfs2_group_desc *gd;
|
|
struct ocfs2_group_desc *gd;
|
|
struct inode *alloc_inode = ac->ac_inode;
|
|
struct inode *alloc_inode = ac->ac_inode;
|
|
- struct ocfs2_journal_handle *handle = ac->ac_handle;
|
|
|
|
|
|
|
|
ret = ocfs2_read_block(OCFS2_SB(alloc_inode->i_sb), gd_blkno,
|
|
ret = ocfs2_read_block(OCFS2_SB(alloc_inode->i_sb), gd_blkno,
|
|
&group_bh, OCFS2_BH_CACHED, alloc_inode);
|
|
&group_bh, OCFS2_BH_CACHED, alloc_inode);
|
|
@@ -1115,6 +1088,7 @@ out:
|
|
}
|
|
}
|
|
|
|
|
|
static int ocfs2_search_chain(struct ocfs2_alloc_context *ac,
|
|
static int ocfs2_search_chain(struct ocfs2_alloc_context *ac,
|
|
|
|
+ struct ocfs2_journal_handle *handle,
|
|
u32 bits_wanted,
|
|
u32 bits_wanted,
|
|
u32 min_bits,
|
|
u32 min_bits,
|
|
u16 *bit_off,
|
|
u16 *bit_off,
|
|
@@ -1126,7 +1100,6 @@ static int ocfs2_search_chain(struct ocfs2_alloc_context *ac,
|
|
u16 chain, tmp_bits;
|
|
u16 chain, tmp_bits;
|
|
u32 tmp_used;
|
|
u32 tmp_used;
|
|
u64 next_group;
|
|
u64 next_group;
|
|
- struct ocfs2_journal_handle *handle = ac->ac_handle;
|
|
|
|
struct inode *alloc_inode = ac->ac_inode;
|
|
struct inode *alloc_inode = ac->ac_inode;
|
|
struct buffer_head *group_bh = NULL;
|
|
struct buffer_head *group_bh = NULL;
|
|
struct buffer_head *prev_group_bh = NULL;
|
|
struct buffer_head *prev_group_bh = NULL;
|
|
@@ -1272,6 +1245,7 @@ bail:
|
|
/* will give out up to bits_wanted contiguous bits. */
|
|
/* will give out up to bits_wanted contiguous bits. */
|
|
static int ocfs2_claim_suballoc_bits(struct ocfs2_super *osb,
|
|
static int ocfs2_claim_suballoc_bits(struct ocfs2_super *osb,
|
|
struct ocfs2_alloc_context *ac,
|
|
struct ocfs2_alloc_context *ac,
|
|
|
|
+ struct ocfs2_journal_handle *handle,
|
|
u32 bits_wanted,
|
|
u32 bits_wanted,
|
|
u32 min_bits,
|
|
u32 min_bits,
|
|
u16 *bit_off,
|
|
u16 *bit_off,
|
|
@@ -1313,8 +1287,8 @@ static int ocfs2_claim_suballoc_bits(struct ocfs2_super *osb,
|
|
* by jumping straight to the most recently used
|
|
* by jumping straight to the most recently used
|
|
* allocation group. This helps us mantain some
|
|
* allocation group. This helps us mantain some
|
|
* contiguousness across allocations. */
|
|
* contiguousness across allocations. */
|
|
- status = ocfs2_search_one_group(ac, bits_wanted, min_bits,
|
|
|
|
- bit_off, num_bits,
|
|
|
|
|
|
+ status = ocfs2_search_one_group(ac, handle, bits_wanted,
|
|
|
|
+ min_bits, bit_off, num_bits,
|
|
hint_blkno, &bits_left);
|
|
hint_blkno, &bits_left);
|
|
if (!status) {
|
|
if (!status) {
|
|
/* Be careful to update *bg_blkno here as the
|
|
/* Be careful to update *bg_blkno here as the
|
|
@@ -1336,7 +1310,7 @@ static int ocfs2_claim_suballoc_bits(struct ocfs2_super *osb,
|
|
ac->ac_chain = victim;
|
|
ac->ac_chain = victim;
|
|
ac->ac_allow_chain_relink = 1;
|
|
ac->ac_allow_chain_relink = 1;
|
|
|
|
|
|
- status = ocfs2_search_chain(ac, bits_wanted, min_bits, bit_off,
|
|
|
|
|
|
+ status = ocfs2_search_chain(ac, handle, bits_wanted, min_bits, bit_off,
|
|
num_bits, bg_blkno, &bits_left);
|
|
num_bits, bg_blkno, &bits_left);
|
|
if (!status)
|
|
if (!status)
|
|
goto set_hint;
|
|
goto set_hint;
|
|
@@ -1360,7 +1334,7 @@ static int ocfs2_claim_suballoc_bits(struct ocfs2_super *osb,
|
|
continue;
|
|
continue;
|
|
|
|
|
|
ac->ac_chain = i;
|
|
ac->ac_chain = i;
|
|
- status = ocfs2_search_chain(ac, bits_wanted, min_bits,
|
|
|
|
|
|
+ status = ocfs2_search_chain(ac, handle, bits_wanted, min_bits,
|
|
bit_off, num_bits, bg_blkno,
|
|
bit_off, num_bits, bg_blkno,
|
|
&bits_left);
|
|
&bits_left);
|
|
if (!status)
|
|
if (!status)
|
|
@@ -1401,10 +1375,10 @@ int ocfs2_claim_metadata(struct ocfs2_super *osb,
|
|
BUG_ON(!ac);
|
|
BUG_ON(!ac);
|
|
BUG_ON(ac->ac_bits_wanted < (ac->ac_bits_given + bits_wanted));
|
|
BUG_ON(ac->ac_bits_wanted < (ac->ac_bits_given + bits_wanted));
|
|
BUG_ON(ac->ac_which != OCFS2_AC_USE_META);
|
|
BUG_ON(ac->ac_which != OCFS2_AC_USE_META);
|
|
- BUG_ON(ac->ac_handle != handle);
|
|
|
|
|
|
|
|
status = ocfs2_claim_suballoc_bits(osb,
|
|
status = ocfs2_claim_suballoc_bits(osb,
|
|
ac,
|
|
ac,
|
|
|
|
+ handle,
|
|
bits_wanted,
|
|
bits_wanted,
|
|
1,
|
|
1,
|
|
suballoc_bit_start,
|
|
suballoc_bit_start,
|
|
@@ -1440,10 +1414,10 @@ int ocfs2_claim_new_inode(struct ocfs2_super *osb,
|
|
BUG_ON(ac->ac_bits_given != 0);
|
|
BUG_ON(ac->ac_bits_given != 0);
|
|
BUG_ON(ac->ac_bits_wanted != 1);
|
|
BUG_ON(ac->ac_bits_wanted != 1);
|
|
BUG_ON(ac->ac_which != OCFS2_AC_USE_INODE);
|
|
BUG_ON(ac->ac_which != OCFS2_AC_USE_INODE);
|
|
- BUG_ON(ac->ac_handle != handle);
|
|
|
|
|
|
|
|
status = ocfs2_claim_suballoc_bits(osb,
|
|
status = ocfs2_claim_suballoc_bits(osb,
|
|
ac,
|
|
ac,
|
|
|
|
+ handle,
|
|
1,
|
|
1,
|
|
1,
|
|
1,
|
|
suballoc_bit,
|
|
suballoc_bit,
|
|
@@ -1546,7 +1520,6 @@ int ocfs2_claim_clusters(struct ocfs2_super *osb,
|
|
|
|
|
|
BUG_ON(ac->ac_which != OCFS2_AC_USE_LOCAL
|
|
BUG_ON(ac->ac_which != OCFS2_AC_USE_LOCAL
|
|
&& ac->ac_which != OCFS2_AC_USE_MAIN);
|
|
&& ac->ac_which != OCFS2_AC_USE_MAIN);
|
|
- BUG_ON(ac->ac_handle != handle);
|
|
|
|
|
|
|
|
if (ac->ac_which == OCFS2_AC_USE_LOCAL) {
|
|
if (ac->ac_which == OCFS2_AC_USE_LOCAL) {
|
|
status = ocfs2_claim_local_alloc_bits(osb,
|
|
status = ocfs2_claim_local_alloc_bits(osb,
|
|
@@ -1572,6 +1545,7 @@ int ocfs2_claim_clusters(struct ocfs2_super *osb,
|
|
|
|
|
|
status = ocfs2_claim_suballoc_bits(osb,
|
|
status = ocfs2_claim_suballoc_bits(osb,
|
|
ac,
|
|
ac,
|
|
|
|
+ handle,
|
|
bits_wanted,
|
|
bits_wanted,
|
|
min_clusters,
|
|
min_clusters,
|
|
&bg_bit_off,
|
|
&bg_bit_off,
|