aboutsummaryrefslogtreecommitdiffstats
path: root/fs/gfs2/eattr.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/gfs2/eattr.c')
-rw-r--r--fs/gfs2/eattr.c57
1 files changed, 0 insertions, 57 deletions
diff --git a/fs/gfs2/eattr.c b/fs/gfs2/eattr.c
index 63a5cf1e2472..dec55dcb9dbc 100644
--- a/fs/gfs2/eattr.c
+++ b/fs/gfs2/eattr.c
@@ -1561,60 +1561,3 @@ int gfs2_ea_dealloc(struct gfs2_inode *ip)
1561 return error; 1561 return error;
1562} 1562}
1563 1563
1564/**
1565 * gfs2_get_eattr_meta - return all the eattr blocks of a file
1566 * @dip: the directory
1567 * @ub: the structure representing the user buffer to copy to
1568 *
1569 * Returns: errno
1570 */
1571
1572int gfs2_get_eattr_meta(struct gfs2_inode *ip, struct gfs2_user_buffer *ub)
1573{
1574 struct buffer_head *bh;
1575 int error;
1576
1577 error = gfs2_meta_read(ip->i_gl, ip->i_di.di_eattr,
1578 DIO_START | DIO_WAIT, &bh);
1579 if (error)
1580 return error;
1581
1582 gfs2_add_bh_to_ub(ub, bh);
1583
1584 if (ip->i_di.di_flags & GFS2_DIF_EA_INDIRECT) {
1585 struct buffer_head *eabh;
1586 uint64_t *eablk, *end;
1587
1588 if (gfs2_metatype_check(ip->i_sbd, bh, GFS2_METATYPE_IN)) {
1589 error = -EIO;
1590 goto out;
1591 }
1592
1593 eablk = (uint64_t *)(bh->b_data +
1594 sizeof(struct gfs2_meta_header));
1595 end = eablk + ip->i_sbd->sd_inptrs;
1596
1597 for (; eablk < end; eablk++) {
1598 uint64_t bn;
1599
1600 if (!*eablk)
1601 break;
1602 bn = be64_to_cpu(*eablk);
1603
1604 error = gfs2_meta_read(ip->i_gl, bn,
1605 DIO_START | DIO_WAIT, &eabh);
1606 if (error)
1607 break;
1608 gfs2_add_bh_to_ub(ub, eabh);
1609 brelse(eabh);
1610 if (error)
1611 break;
1612 }
1613 }
1614
1615 out:
1616 brelse(bh);
1617
1618 return error;
1619}
1620