ocfs2: Add ac_alloc_slot in ocfs2_alloc_context
authorTao Ma <tao.ma@oracle.com>
Mon, 3 Mar 2008 09:12:30 +0000 (17:12 +0800)
committerMark Fasheh <mfasheh@suse.com>
Fri, 18 Apr 2008 15:56:10 +0000 (08:56 -0700)
In inode stealing, we no longer restrict the allocation to
happen in the local node. So it is neccessary for us to add
a new member in ocfs2_alloc_context to indicate which slot
we are using for allocation. We also modify the process of
local alloc so that this member can be used there also.

Signed-off-by: Tao Ma <tao.ma@oracle.com>
Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com>
Signed-off-by: Mark Fasheh <mfasheh@suse.com>
fs/ocfs2/localalloc.c
fs/ocfs2/suballoc.c
fs/ocfs2/suballoc.h

index ab83fd5624294561541dba9663f128336f296116..b6d07198118c9c3facb4dab1c2bb6359d39cbbcd 100644 (file)
@@ -523,6 +523,8 @@ int ocfs2_reserve_local_alloc_bits(struct ocfs2_super *osb,
        }
 
        ac->ac_inode = local_alloc_inode;
+       /* We should never use localalloc from another slot */
+       ac->ac_alloc_slot = osb->slot_num;
        ac->ac_which = OCFS2_AC_USE_LOCAL;
        get_bh(osb->local_alloc_bh);
        ac->ac_bh = osb->local_alloc_bh;
index 3be4e73e8b135ca55e277ba76279393fa36ecf5c..33d55734c514f9af8b4435e45ae368ee7d9614d5 100644 (file)
@@ -424,6 +424,7 @@ static int ocfs2_reserve_suballoc_bits(struct ocfs2_super *osb,
        }
 
        ac->ac_inode = alloc_inode;
+       ac->ac_alloc_slot = slot;
 
        fe = (struct ocfs2_dinode *) bh->b_data;
        if (!OCFS2_IS_VALID_DINODE(fe)) {
index 8799033bb459d9adc4b558d0e50c1b4a52562b61..544c600662bd074c1b76ca1c9ead16ab0f24402a 100644 (file)
@@ -36,6 +36,7 @@ typedef int (group_search_t)(struct inode *,
 struct ocfs2_alloc_context {
        struct inode *ac_inode;    /* which bitmap are we allocating from? */
        struct buffer_head *ac_bh; /* file entry bh */
+       u32    ac_alloc_slot;   /* which slot are we allocating from? */
        u32    ac_bits_wanted;
        u32    ac_bits_given;
 #define OCFS2_AC_USE_LOCAL 1