diff options
Diffstat (limited to 'fs/xfs/xfs_dir2_node.c')
| -rw-r--r-- | fs/xfs/xfs_dir2_node.c | 13 | 
1 files changed, 6 insertions, 7 deletions
| diff --git a/fs/xfs/xfs_dir2_node.c b/fs/xfs/xfs_dir2_node.c index 5246de4912d..2226a00acd1 100644 --- a/fs/xfs/xfs_dir2_node.c +++ b/fs/xfs/xfs_dir2_node.c @@ -263,18 +263,19 @@ xfs_dir3_free_get_buf(  	 * Initialize the new block to be empty, and remember  	 * its first slot as our empty slot.  	 */ -	hdr.magic = XFS_DIR2_FREE_MAGIC; -	hdr.firstdb = 0; -	hdr.nused = 0; -	hdr.nvalid = 0; +	memset(bp->b_addr, 0, sizeof(struct xfs_dir3_free_hdr)); +	memset(&hdr, 0, sizeof(hdr)); +  	if (xfs_sb_version_hascrc(&mp->m_sb)) {  		struct xfs_dir3_free_hdr *hdr3 = bp->b_addr;  		hdr.magic = XFS_DIR3_FREE_MAGIC; +  		hdr3->hdr.blkno = cpu_to_be64(bp->b_bn);  		hdr3->hdr.owner = cpu_to_be64(dp->i_ino);  		uuid_copy(&hdr3->hdr.uuid, &mp->m_sb.sb_uuid); -	} +	} else +		hdr.magic = XFS_DIR2_FREE_MAGIC;  	xfs_dir3_free_hdr_to_disk(bp->b_addr, &hdr);  	*bpp = bp;  	return 0; @@ -1921,8 +1922,6 @@ xfs_dir2_node_addname_int(  			 */  			freehdr.firstdb = (fbno - XFS_DIR2_FREE_FIRSTDB(mp)) *  					xfs_dir3_free_max_bests(mp); -			free->hdr.nvalid = 0; -			free->hdr.nused = 0;  		} else {  			free = fbp->b_addr;  			bests = xfs_dir3_free_bests_p(mp, free); | 
