#define set_v2fp(file, fp) (file)->private_data = (fp)
#define get_v2bd(bh) ((struct gfs2_bufdata *)(bh)->b_private)
#define set_v2bd(bh, bd) (bh)->b_private = (bd)
-#define get_v2db(bh) ((struct gfs2_databuf *)(bh)->b_private)
-#define set_v2db(bh, db) (bh)->b_private = (db)
#define get_transaction ((struct gfs2_trans *)(current->journal_info))
#define set_transaction(tr) (current->journal_info) = (tr)
struct gfs2_bitmap;
struct gfs2_rgrpd;
struct gfs2_bufdata;
-struct gfs2_databuf;
struct gfs2_glock_operations;
struct gfs2_holder;
struct gfs2_glock;
struct list_head bd_ail_gl_list;
};
-struct gfs2_databuf {
- struct gfs2_log_element db_le;
- struct buffer_head *db_bh;
-};
-
struct gfs2_glock_operations {
void (*go_xmote_th) (struct gfs2_glock * gl, unsigned int state,
int flags);
{
struct list_head *head = &sdp->sd_log_le_databuf;
LIST_HEAD(started);
- struct gfs2_databuf *db;
+ struct gfs2_bufdata *bd;
struct buffer_head *bh;
while (!list_empty(head)) {
- db = list_entry(head->prev, struct gfs2_databuf, db_le.le_list);
- list_move(&db->db_le.le_list, &started);
+ bd = list_entry(head->prev, struct gfs2_bufdata, bd_le.le_list);
+ list_move(&bd->bd_le.le_list, &started);
gfs2_log_lock(sdp);
- bh = db->db_bh;
+ bh = bd->bd_bh;
if (bh) {
get_bh(bh);
gfs2_log_unlock(sdp);
}
while (!list_empty(&started)) {
- db = list_entry(started.next, struct gfs2_databuf,
- db_le.le_list);
- list_del(&db->db_le.le_list);
+ bd = list_entry(started.next, struct gfs2_bufdata,
+ bd_le.le_list);
+ list_del(&bd->bd_le.le_list);
sdp->sd_log_num_databuf--;
gfs2_log_lock(sdp);
- bh = db->db_bh;
+ bh = bd->bd_bh;
if (bh) {
- set_v2db(bh, NULL);
+ set_v2bd(bh, NULL);
gfs2_log_unlock(sdp);
wait_on_buffer(bh);
brelse(bh);
} else
gfs2_log_unlock(sdp);
- kfree(db);
+ kfree(bd);
}
gfs2_assert_warn(sdp, !sdp->sd_log_num_databuf);
static void discard_buffer(struct gfs2_sbd *sdp, struct buffer_head *bh)
{
- struct gfs2_databuf *db;
+ struct gfs2_bufdata *bd;
gfs2_log_lock(sdp);
- db = get_v2db(bh);
- if (db) {
- db->db_bh = NULL;
- set_v2db(bh, NULL);
+ bd = get_v2bd(bh);
+ if (bd) {
+ bd->bd_bh = NULL;
+ set_v2bd(bh, NULL);
gfs2_log_unlock(sdp);
brelse(bh);
} else
void gfs2_trans_add_databuf(struct gfs2_sbd *sdp, struct buffer_head *bh)
{
- struct gfs2_databuf *db;
+ struct gfs2_bufdata *bd;
- db = get_v2db(bh);
- if (!db) {
- db = kmalloc(sizeof(struct gfs2_databuf),
- GFP_KERNEL | __GFP_NOFAIL);
- lops_init_le(&db->db_le, &gfs2_databuf_lops);
+ bd = get_v2bd(bh);
+ if (!bd) {
+ bd = kmalloc(sizeof(struct gfs2_bufdata),
+ GFP_NOFS | __GFP_NOFAIL);
+ lops_init_le(&bd->bd_le, &gfs2_databuf_lops);
get_bh(bh);
- db->db_bh = bh;
- set_v2db(bh, db);
- lops_add(sdp, &db->db_le);
+ bd->bd_bh = bh;
+ set_v2bd(bh, bd);
+ lops_add(sdp, &bd->bd_le);
}
}