aboutsummaryrefslogtreecommitdiffstats
path: root/fs/gfs2/meta_io.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/gfs2/meta_io.c')
-rw-r--r--fs/gfs2/meta_io.c164
1 files changed, 0 insertions, 164 deletions
diff --git a/fs/gfs2/meta_io.c b/fs/gfs2/meta_io.c
index d0d981d..3912d6a 100644
--- a/fs/gfs2/meta_io.c
+++ b/fs/gfs2/meta_io.c
@@ -34,11 +34,6 @@
#include "util.h"
#include "ops_address.h"
-#define buffer_busy(bh) \
-((bh)->b_state & ((1ul << BH_Dirty) | (1ul << BH_Lock) | (1ul << BH_Pinned)))
-#define buffer_in_io(bh) \
-((bh)->b_state & ((1ul << BH_Dirty) | (1ul << BH_Lock)))
-
static int aspace_get_block(struct inode *inode, sector_t lblock,
struct buffer_head *bh_result, int create)
{
@@ -92,165 +87,6 @@ void gfs2_aspace_put(struct inode *aspace)
}
/**
- * gfs2_ail1_start_one - Start I/O on a part of the AIL
- * @sdp: the filesystem
- * @tr: the part of the AIL
- *
- */
-
-void gfs2_ail1_start_one(struct gfs2_sbd *sdp, struct gfs2_ail *ai)
-{
- struct gfs2_bufdata *bd, *s;
- struct buffer_head *bh;
- int retry;
-
- BUG_ON(!spin_is_locked(&sdp->sd_log_lock));
-
- do {
- retry = 0;
-
- list_for_each_entry_safe_reverse(bd, s, &ai->ai_ail1_list,
- bd_ail_st_list) {
- bh = bd->bd_bh;
-
- gfs2_assert(sdp, bd->bd_ail == ai);
-
- if (!buffer_busy(bh)) {
- if (!buffer_uptodate(bh)) {
- gfs2_log_unlock(sdp);
- gfs2_io_error_bh(sdp, bh);
- gfs2_log_lock(sdp);
- }
- list_move(&bd->bd_ail_st_list, &ai->ai_ail2_list);
- continue;
- }
-
- if (!buffer_dirty(bh))
- continue;
-
- list_move(&bd->bd_ail_st_list, &ai->ai_ail1_list);
-
- gfs2_log_unlock(sdp);
- wait_on_buffer(bh);
- ll_rw_block(WRITE, 1, &bh);
- gfs2_log_lock(sdp);
-
- retry = 1;
- break;
- }
- } while (retry);
-}
-
-/**
- * gfs2_ail1_empty_one - Check whether or not a trans in the AIL has been synced
- * @sdp: the filesystem
- * @ai: the AIL entry
- *
- */
-
-int gfs2_ail1_empty_one(struct gfs2_sbd *sdp, struct gfs2_ail *ai, int flags)
-{
- struct gfs2_bufdata *bd, *s;
- struct buffer_head *bh;
-
- list_for_each_entry_safe_reverse(bd, s, &ai->ai_ail1_list,
- bd_ail_st_list) {
- bh = bd->bd_bh;
-
- gfs2_assert(sdp, bd->bd_ail == ai);
-
- if (buffer_busy(bh)) {
- if (flags & DIO_ALL)
- continue;
- else
- break;
- }
-
- if (!buffer_uptodate(bh))
- gfs2_io_error_bh(sdp, bh);
-
- list_move(&bd->bd_ail_st_list, &ai->ai_ail2_list);
- }
-
- return list_empty(&ai->ai_ail1_list);
-}
-
-/**
- * gfs2_ail2_empty_one - Check whether or not a trans in the AIL has been synced
- * @sdp: the filesystem
- * @ai: the AIL entry
- *
- */
-
-void gfs2_ail2_empty_one(struct gfs2_sbd *sdp, struct gfs2_ail *ai)
-{
- struct list_head *head = &ai->ai_ail2_list;
- struct gfs2_bufdata *bd;
-
- while (!list_empty(head)) {
- bd = list_entry(head->prev, struct gfs2_bufdata,
- bd_ail_st_list);
- gfs2_assert(sdp, bd->bd_ail == ai);
- bd->bd_ail = NULL;
- list_del(&bd->bd_ail_st_list);
- list_del(&bd->bd_ail_gl_list);
- atomic_dec(&bd->bd_gl->gl_ail_count);
- brelse(bd->bd_bh);
- }
-}
-
-/**
- * ail_empty_gl - remove all buffers for a given lock from the AIL
- * @gl: the glock
- *
- * None of the buffers should be dirty, locked, or pinned.
- */
-
-void gfs2_ail_empty_gl(struct gfs2_glock *gl)
-{
- struct gfs2_sbd *sdp = gl->gl_sbd;
- unsigned int blocks;
- struct list_head *head = &gl->gl_ail_list;
- struct gfs2_bufdata *bd;
- struct buffer_head *bh;
- u64 blkno;
- int error;
-
- blocks = atomic_read(&gl->gl_ail_count);
- if (!blocks)
- return;
-
- error = gfs2_trans_begin(sdp, 0, blocks);
- if (gfs2_assert_withdraw(sdp, !error))
- return;
-
- gfs2_log_lock(sdp);
- while (!list_empty(head)) {
- bd = list_entry(head->next, struct gfs2_bufdata,
- bd_ail_gl_list);
- bh = bd->bd_bh;
- blkno = bh->b_blocknr;
- gfs2_assert_withdraw(sdp, !buffer_busy(bh));
-
- bd->bd_ail = NULL;
- list_del(&bd->bd_ail_st_list);
- list_del(&bd->bd_ail_gl_list);
- atomic_dec(&gl->gl_ail_count);
- brelse(bh);
- gfs2_log_unlock(sdp);
-
- gfs2_trans_add_revoke(sdp, blkno);
-
- gfs2_log_lock(sdp);
- }
- gfs2_assert_withdraw(sdp, !atomic_read(&gl->gl_ail_count));
- gfs2_log_unlock(sdp);
-
- gfs2_trans_end(sdp);
- gfs2_log_flush(sdp, NULL);
-}
-
-/**
* gfs2_meta_inval - Invalidate all buffers associated with a glock
* @gl: the glock
*