bd_list
struct bd_list bd_list;
ep->bd_list.eqp_bdi = 0;
ep->bd_list.hwd_bdi = 0;
bd = ep->bd_list.bd_table_array[0]->start_bd;
param0 = lower_32_bits(ep->bd_list.bd_table_array[0]->dma);
param1 = upper_32_bits(ep->bd_list.bd_table_array[0]->dma);
bd_list->num_tabs, bd_list->max_bdi, bd_list->eqp_bdi,
bd_list->hwd_bdi, bd_list->num_bds_table);
for (tbi = 0; tbi < bd_list->num_tabs; tbi++) {
bd_table = bd_list->bd_table_array[tbi];
for (bdi = 0; bdi < bd_list->num_bds_table; bdi++) {
struct bd_list *bd_list = &ep->bd_list;
if (max_len_bds <= bd_list->num_bds_table) {
chain_bds = max_len_bds/bd_list->num_bds_table;
chain_bds = (bd_list->max_bdi - start_bdi)/
bd_list->num_bds_table;
chain_bds += short_bdi/bd_list->num_bds_table;
max_len_bds = bd_list->max_bdi - start_bdi;
ep->bd_list.hwd_bdi = bd_xfr->next_hwd_bdi;
ep->bd_list.bd_table_array = kzalloc_objs(struct bd_table *, num_tabs,
if (!ep->bd_list.bd_table_array)
ep->bd_list.bd_table_array[index] = bd_table;
chain_table(prev_table, ep->bd_list.bd_table_array[0], bd_p_tab);
ep->bd_list.num_tabs = num_tabs;
ep->bd_list.max_bdi = (num_tabs * bd_p_tab) - 1;
ep->bd_list.num_tabs = num_tabs;
ep->bd_list.num_bds_table = bd_p_tab;
ep->bd_list.eqp_bdi = 0;
ep->bd_list.hwd_bdi = 0;
struct bd_list *bd_list = &ep->bd_list;
for (tbi = 0; tbi < bd_list->num_tabs; tbi++) {
bd_table = bd_list->bd_table_array[tbi];
(bd_list->num_bds_table - 1));
return (bdi + (tbi * bd_list->num_bds_table));
tbi = bdi / ep->bd_list.num_bds_table;
bdi, ep->bd_list.num_bds_table, tbi);
end_bdi = ep->bd_list.max_bdi - 1;
else if ((end_bdi % (ep->bd_list.num_bds_table-1)) == 0)
struct bd_list *bd_list = &ep->bd_list;
if (bd_list->eqp_bdi == bd_list->hwd_bdi)
return bd_list->max_bdi - bd_list->num_tabs;
if (bd_list->hwd_bdi < bd_list->eqp_bdi) {
available1 = bd_list->max_bdi - bd_list->eqp_bdi;
available2 = bd_list->hwd_bdi;
chain_bd1 = available1 / bd_list->num_bds_table;
chain_bd2 = available2 / bd_list->num_bds_table;
available1 = bd_list->hwd_bdi - bd_list->eqp_bdi;
if ((bd_list->hwd_bdi - bd_list->eqp_bdi)
<= bd_list->num_bds_table) {
if (!(bdi_to_tbi(ep, bd_list->hwd_bdi)
== bdi_to_tbi(ep, bd_list->eqp_bdi))) {
chain_bd1 = available1 / bd_list->num_bds_table;
local_bdi = bdi - (tbi * ep->bd_list.num_bds_table);
return (ep->bd_list.bd_table_array[tbi]->start_bd + local_bdi);
ep->bd_list.eqp_bdi++;
if (((ep->bd_list.eqp_bdi + 1) % ep->bd_list.num_bds_table) == 0)
ep->bd_list.eqp_bdi++;
if (ep->bd_list.eqp_bdi == (ep->bd_list.max_bdi + 1))
ep->bd_list.eqp_bdi = 0;
struct bd_list *bd_list;
bd_list = &ep->bd_list;
bd_xfr->start_bdi = bd_list->eqp_bdi;
bd = bdi_to_bd(ep, bd_list->eqp_bdi);
bd = bdi_to_bd(ep, ep->bd_list.eqp_bdi);
ep->bd_list.eqp_bdi);
bd = bdi_to_bd(ep, ep->bd_list.eqp_bdi);
bd_xfr->next_hwd_bdi = ep->bd_list.eqp_bdi;
ep->bd_list.eqp_bdi, ep->bd_list.hwd_bdi);
struct bd_list *bd_list = &ep->bd_list;
ep_bd_list_free(ep, ep->bd_list.num_tabs);
if (!bd_list->bd_table_array) {
bd_table = bd_list->bd_table_array[index];
eqp_bdi = ep->bd_list.eqp_bdi - 1;
eqp_bdi = ep->bd_list.max_bdi;
table = ep->bd_list.bd_table_array[tbi];
tbi * ep->bd_list.num_bds_table);
ep_bd_list_free(ep, ep->bd_list.num_tabs);
kfree(ep->bd_list.bd_table_array);
struct bd_list *bd_list = &ep->bd_list;
if (!list_empty(&bd->bd_list) && !buffer_pinned(bh))
list_del_init(&bd->bd_list);
if (!bd->bd_blkno && !list_empty(&bd->bd_list))
list_del_init(&bd->bd_list);
if (list_empty(&bd->bd_list))
struct list_head bd_list;
bd = list_first_entry(head, struct gfs2_bufdata, bd_list);
list_del_init(&bd->bd_list);
bd = list_first_entry(head, struct gfs2_bufdata, bd_list);
list_del_init(&bd->bd_list);
if (*max_revokes && list_empty(&bd->bd_list)) {
list_add(&bd->bd_list, &sdp->sd_log_revokes);
bd = list_first_entry(head, struct gfs2_bufdata, bd_list);
list_del_init(&bd->bd_list);
bda = list_entry(a, struct gfs2_bufdata, bd_list);
bdb = list_entry(b, struct gfs2_bufdata, bd_list);
bd1 = bd2 = list_prepare_entry(bd1, blist, bd_list);
list_for_each_entry_continue(bd1, blist, bd_list) {
list_for_each_entry_continue(bd2, blist, bd_list) {
bd = list_first_entry(head, struct gfs2_bufdata, bd_list);
list_del_init(&bd->bd_list);
list_for_each_entry(bd, head, bd_list) {
bd = list_first_entry(head, struct gfs2_bufdata, bd_list);
list_del_init(&bd->bd_list);
list_del_init(&bd->bd_list);
INIT_LIST_HEAD(&bd->bd_list);
if (list_empty(&bd->bd_list)) {
list_add_tail(&bd->bd_list, &tr->tr_databuf);
if (!list_empty(&bd->bd_list))
list_add(&bd->bd_list, &tr->tr_buf);
BUG_ON(!list_empty(&bd->bd_list));
list_for_each_entry_safe(bd, tmp, &sdp->sd_log_revokes, bd_list) {
list_del_init(&bd->bd_list);