/** * vxfs_getfsh - read fileset header into memory * @ip: the (fake) fileset header inode * @which: 0 for the structural, 1 for the primary fsh. * * Description: * vxfs_getfsh reads either the structural or primary fileset header * described by @ip into memory. * * Returns: * The fileset header structure on success, else Zero. */ static struct vxfs_fsh * vxfs_getfsh(struct inode *ip, int which) { struct buffer_head *bp; bp = vxfs_bread(ip, which); if (buffer_mapped(bp)) { struct vxfs_fsh *fhp; if (!(fhp = kmalloc(sizeof(*fhp), SLAB_KERNEL))) return NULL; memcpy(fhp, bp->b_data, sizeof(*fhp)); brelse(bp); return (fhp); } return NULL; }
/** * vxfs_getfsh - read fileset header into memory * @ip: the (fake) fileset header inode * @which: 0 for the structural, 1 for the primary fsh. * * Description: * vxfs_getfsh reads either the structural or primary fileset header * described by @ip into memory. * * Returns: * The fileset header structure on success, else Zero. */ static struct vxfs_fsh * vxfs_getfsh(struct inode *ip, int which) { struct buffer_head *bp; bp = vxfs_bread(ip, which); if (bp) { struct vxfs_fsh *fhp; if (!(fhp = kmalloc(sizeof(*fhp), GFP_KERNEL))) goto out; memcpy(fhp, bp->b_data, sizeof(*fhp)); put_bh(bp); return (fhp); } out: brelse(bp); return NULL; }