2427 memcpy(bplist, dabuf->bps, nbuf * sizeof(*bplist));
2428 }
2429 xfs_da_buf_done(dabuf);
2430 for (i = 0; i < nbuf; i++)
2431 xfs_trans_brelse(tp, bplist[i]);
2432 if (bplist != &bp)
2433 kmem_free(bplist);
2434}
2435
2436
2437
2438
2439void
2440xfs_da_binval(xfs_trans_t *tp, xfs_dabuf_t *dabuf)
2441{
2442 xfs_buf_t *bp;
2443 xfs_buf_t **bplist;
2444 int i;
2445 int nbuf;
2446
2447 ASSERT(dabuf->nbuf && dabuf->data && dabuf->bbcount && dabuf->bps[0]);
2448 if ((nbuf = dabuf->nbuf) == 1) {
2449 bplist = &bp;
2450 bp = dabuf->bps[0];
2451 } else {
2452 bplist = kmem_alloc(nbuf * sizeof(*bplist), KM_SLEEP);
2453 memcpy(bplist, dabuf->bps, nbuf * sizeof(*bplist));
2454 }
2455 xfs_da_buf_done(dabuf);
2456 for (i = 0; i < nbuf; i++)
2457 xfs_trans_binval(tp, bplist[i]);
2458 if (bplist != &bp)
2459 kmem_free(bplist);
2460}
2461
2462
2463
2464
2465xfs_daddr_t
2466xfs_da_blkno(xfs_dabuf_t *dabuf)
2467{