diff options
| author | Ingo Molnar <mingo@elte.hu> | 2009-01-16 10:09:10 +0100 | 
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-01-16 10:09:10 +0100 | 
| commit | af2519fb2298cdf7540082c36f4d8c66bbff103f (patch) | |
| tree | 1d290d28d42d42f9e693457762c4008988628060 /fs/xfs | |
| parent | 961d7d0ee5150e0197cc81c2a8884ecb230276e2 (diff) | |
| parent | 7cb36b6ccdca03bd87e8faca7fd920643dd1aec7 (diff) | |
Merge branch 'linus' into core/iommu
Conflicts:
	arch/ia64/include/asm/dma-mapping.h
	arch/ia64/include/asm/machvec.h
	arch/ia64/include/asm/machvec_sn2.h
Diffstat (limited to 'fs/xfs')
| -rw-r--r-- | fs/xfs/linux-2.6/xfs_aops.h | 2 | ||||
| -rw-r--r-- | fs/xfs/linux-2.6/xfs_buf.c | 79 | ||||
| -rw-r--r-- | fs/xfs/linux-2.6/xfs_export.c | 23 | ||||
| -rw-r--r-- | fs/xfs/xfs_acl.h | 1 | ||||
| -rw-r--r-- | fs/xfs/xfs_ag.h | 2 | ||||
| -rw-r--r-- | fs/xfs/xfs_attr_leaf.c | 72 | ||||
| -rw-r--r-- | fs/xfs/xfs_attr_leaf.h | 12 | ||||
| -rw-r--r-- | fs/xfs/xfs_bit.h | 10 | ||||
| -rw-r--r-- | fs/xfs/xfs_bmap_btree.c | 84 | ||||
| -rw-r--r-- | fs/xfs/xfs_btree.c | 4 | ||||
| -rw-r--r-- | fs/xfs/xfs_dir2_block.c | 7 | ||||
| -rw-r--r-- | fs/xfs/xfs_dir2_leaf.c | 6 | ||||
| -rw-r--r-- | fs/xfs/xfs_dir2_sf.c | 15 | ||||
| -rw-r--r-- | fs/xfs/xfs_types.h | 4 | 
14 files changed, 120 insertions, 201 deletions
diff --git a/fs/xfs/linux-2.6/xfs_aops.h b/fs/xfs/linux-2.6/xfs_aops.h index 7b26f5ff9692..1dd528849755 100644 --- a/fs/xfs/linux-2.6/xfs_aops.h +++ b/fs/xfs/linux-2.6/xfs_aops.h @@ -21,8 +21,6 @@  extern struct workqueue_struct *xfsdatad_workqueue;  extern mempool_t *xfs_ioend_pool; -typedef void (*xfs_ioend_func_t)(void *); -  /*   * xfs_ioend struct manages large extent writes for XFS.   * It can manage several multi-page bio's at once. diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c index cb329edc925b..d71dc44e21ed 100644 --- a/fs/xfs/linux-2.6/xfs_buf.c +++ b/fs/xfs/linux-2.6/xfs_buf.c @@ -166,75 +166,6 @@ test_page_region(  }  /* - *	Mapping of multi-page buffers into contiguous virtual space - */ - -typedef struct a_list { -	void		*vm_addr; -	struct a_list	*next; -} a_list_t; - -static a_list_t		*as_free_head; -static int		as_list_len; -static DEFINE_SPINLOCK(as_lock); - -/* - *	Try to batch vunmaps because they are costly. - */ -STATIC void -free_address( -	void		*addr) -{ -	a_list_t	*aentry; - -#ifdef CONFIG_XEN -	/* -	 * Xen needs to be able to make sure it can get an exclusive -	 * RO mapping of pages it wants to turn into a pagetable.  If -	 * a newly allocated page is also still being vmap()ed by xfs, -	 * it will cause pagetable construction to fail.  This is a -	 * quick workaround to always eagerly unmap pages so that Xen -	 * is happy. -	 */ -	vunmap(addr); -	return; -#endif - -	aentry = kmalloc(sizeof(a_list_t), GFP_NOWAIT); -	if (likely(aentry)) { -		spin_lock(&as_lock); -		aentry->next = as_free_head; -		aentry->vm_addr = addr; -		as_free_head = aentry; -		as_list_len++; -		spin_unlock(&as_lock); -	} else { -		vunmap(addr); -	} -} - -STATIC void -purge_addresses(void) -{ -	a_list_t	*aentry, *old; - -	if (as_free_head == NULL) -		return; - -	spin_lock(&as_lock); -	aentry = as_free_head; -	as_free_head = NULL; -	as_list_len = 0; -	spin_unlock(&as_lock); - -	while ((old = aentry) != NULL) { -		vunmap(aentry->vm_addr); -		aentry = aentry->next; -		kfree(old); -	} -} - -/*   *	Internal xfs_buf_t object manipulation   */ @@ -333,7 +264,7 @@ xfs_buf_free(  		uint		i;  		if ((bp->b_flags & XBF_MAPPED) && (bp->b_page_count > 1)) -			free_address(bp->b_addr - bp->b_offset); +                       vm_unmap_ram(bp->b_addr - bp->b_offset, bp->b_page_count);  		for (i = 0; i < bp->b_page_count; i++) {  			struct page	*page = bp->b_pages[i]; @@ -455,10 +386,8 @@ _xfs_buf_map_pages(  		bp->b_addr = page_address(bp->b_pages[0]) + bp->b_offset;  		bp->b_flags |= XBF_MAPPED;  	} else if (flags & XBF_MAPPED) { -		if (as_list_len > 64) -			purge_addresses(); -		bp->b_addr = vmap(bp->b_pages, bp->b_page_count, -					VM_MAP, PAGE_KERNEL); +               bp->b_addr = vm_map_ram(bp->b_pages, bp->b_page_count, +                                       -1, PAGE_KERNEL);  		if (unlikely(bp->b_addr == NULL))  			return -ENOMEM;  		bp->b_addr += bp->b_offset; @@ -1743,8 +1672,6 @@ xfsbufd(  			count++;  		} -		if (as_list_len > 0) -			purge_addresses();  		if (count)  			blk_run_address_space(target->bt_mapping); diff --git a/fs/xfs/linux-2.6/xfs_export.c b/fs/xfs/linux-2.6/xfs_export.c index 595751f78350..87b8cbd23d4b 100644 --- a/fs/xfs/linux-2.6/xfs_export.c +++ b/fs/xfs/linux-2.6/xfs_export.c @@ -126,11 +126,26 @@ xfs_nfs_get_inode(  	if (ino == 0)  		return ERR_PTR(-ESTALE); -	error = xfs_iget(mp, NULL, ino, 0, XFS_ILOCK_SHARED, &ip, 0); -	if (error) +	/* +	 * The XFS_IGET_BULKSTAT means that an invalid inode number is just +	 * fine and not an indication of a corrupted filesystem.  Because +	 * clients can send any kind of invalid file handle, e.g. after +	 * a restore on the server we have to deal with this case gracefully. +	 */ +	error = xfs_iget(mp, NULL, ino, XFS_IGET_BULKSTAT, +			 XFS_ILOCK_SHARED, &ip, 0); +	if (error) { +		/* +		 * EINVAL means the inode cluster doesn't exist anymore. +		 * This implies the filehandle is stale, so we should +		 * translate it here. +		 * We don't use ESTALE directly down the chain to not +		 * confuse applications using bulkstat that expect EINVAL. +		 */ +		if (error == EINVAL) +			error = ESTALE;  		return ERR_PTR(-error); -	if (!ip) -		return ERR_PTR(-EIO); +	}  	if (ip->i_d.di_gen != generation) {  		xfs_iput_new(ip, XFS_ILOCK_SHARED); diff --git a/fs/xfs/xfs_acl.h b/fs/xfs/xfs_acl.h index a4e293b93efa..642f1db4def4 100644 --- a/fs/xfs/xfs_acl.h +++ b/fs/xfs/xfs_acl.h @@ -22,7 +22,6 @@   * Access Control Lists   */  typedef __uint16_t	xfs_acl_perm_t; -typedef __int32_t	xfs_acl_type_t;  typedef __int32_t	xfs_acl_tag_t;  typedef __int32_t	xfs_acl_id_t; diff --git a/fs/xfs/xfs_ag.h b/fs/xfs/xfs_ag.h index f2e21817a226..d3b3cf742999 100644 --- a/fs/xfs/xfs_ag.h +++ b/fs/xfs/xfs_ag.h @@ -231,7 +231,7 @@ typedef struct xfs_perag  #define	XFS_FSB_TO_AGNO(mp,fsbno)	\  	((xfs_agnumber_t)((fsbno) >> (mp)->m_sb.sb_agblklog))  #define	XFS_FSB_TO_AGBNO(mp,fsbno)	\ -	((xfs_agblock_t)((fsbno) & XFS_MASK32LO((mp)->m_sb.sb_agblklog))) +	((xfs_agblock_t)((fsbno) & xfs_mask32lo((mp)->m_sb.sb_agblklog)))  #define	XFS_AGB_TO_DADDR(mp,agno,agbno)	\  	((xfs_daddr_t)XFS_FSB_TO_BB(mp, \  		(xfs_fsblock_t)(agno) * (mp)->m_sb.sb_agblocks + (agbno))) diff --git a/fs/xfs/xfs_attr_leaf.c b/fs/xfs/xfs_attr_leaf.c index 79da6b2ea99e..6c323f8a4cd1 100644 --- a/fs/xfs/xfs_attr_leaf.c +++ b/fs/xfs/xfs_attr_leaf.c @@ -736,7 +736,7 @@ xfs_attr_shortform_allfit(xfs_dabuf_t *bp, xfs_inode_t *dp)  			continue;		/* don't copy partial entries */  		if (!(entry->flags & XFS_ATTR_LOCAL))  			return(0); -		name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf, i); +		name_loc = xfs_attr_leaf_name_local(leaf, i);  		if (name_loc->namelen >= XFS_ATTR_SF_ENTSIZE_MAX)  			return(0);  		if (be16_to_cpu(name_loc->valuelen) >= XFS_ATTR_SF_ENTSIZE_MAX) @@ -823,7 +823,7 @@ xfs_attr_leaf_to_shortform(xfs_dabuf_t *bp, xfs_da_args_t *args, int forkoff)  		if (!entry->nameidx)  			continue;  		ASSERT(entry->flags & XFS_ATTR_LOCAL); -		name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf, i); +		name_loc = xfs_attr_leaf_name_local(leaf, i);  		nargs.name = (char *)name_loc->nameval;  		nargs.namelen = name_loc->namelen;  		nargs.value = (char *)&name_loc->nameval[nargs.namelen]; @@ -1141,14 +1141,14 @@ xfs_attr_leaf_add_work(xfs_dabuf_t *bp, xfs_da_args_t *args, int mapindex)  	 * as part of this transaction (a split operation for example).  	 */  	if (entry->flags & XFS_ATTR_LOCAL) { -		name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf, args->index); +		name_loc = xfs_attr_leaf_name_local(leaf, args->index);  		name_loc->namelen = args->namelen;  		name_loc->valuelen = cpu_to_be16(args->valuelen);  		memcpy((char *)name_loc->nameval, args->name, args->namelen);  		memcpy((char *)&name_loc->nameval[args->namelen], args->value,  				   be16_to_cpu(name_loc->valuelen));  	} else { -		name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, args->index); +		name_rmt = xfs_attr_leaf_name_remote(leaf, args->index);  		name_rmt->namelen = args->namelen;  		memcpy((char *)name_rmt->name, args->name, args->namelen);  		entry->flags |= XFS_ATTR_INCOMPLETE; @@ -1159,7 +1159,7 @@ xfs_attr_leaf_add_work(xfs_dabuf_t *bp, xfs_da_args_t *args, int mapindex)  		args->rmtblkcnt = XFS_B_TO_FSB(mp, args->valuelen);  	}  	xfs_da_log_buf(args->trans, bp, -	     XFS_DA_LOGRANGE(leaf, XFS_ATTR_LEAF_NAME(leaf, args->index), +	     XFS_DA_LOGRANGE(leaf, xfs_attr_leaf_name(leaf, args->index),  				   xfs_attr_leaf_entsize(leaf, args->index)));  	/* @@ -1749,10 +1749,10 @@ xfs_attr_leaf_remove(xfs_dabuf_t *bp, xfs_da_args_t *args)  	/*  	 * Compress the remaining entries and zero out the removed stuff.  	 */ -	memset(XFS_ATTR_LEAF_NAME(leaf, args->index), 0, entsize); +	memset(xfs_attr_leaf_name(leaf, args->index), 0, entsize);  	be16_add_cpu(&hdr->usedbytes, -entsize);  	xfs_da_log_buf(args->trans, bp, -	     XFS_DA_LOGRANGE(leaf, XFS_ATTR_LEAF_NAME(leaf, args->index), +	     XFS_DA_LOGRANGE(leaf, xfs_attr_leaf_name(leaf, args->index),  				   entsize));  	tmp = (be16_to_cpu(hdr->count) - args->index) @@ -1985,7 +1985,7 @@ xfs_attr_leaf_lookup_int(xfs_dabuf_t *bp, xfs_da_args_t *args)  			continue;  		}  		if (entry->flags & XFS_ATTR_LOCAL) { -			name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf, probe); +			name_loc = xfs_attr_leaf_name_local(leaf, probe);  			if (name_loc->namelen != args->namelen)  				continue;  			if (memcmp(args->name, (char *)name_loc->nameval, args->namelen) != 0) @@ -1995,7 +1995,7 @@ xfs_attr_leaf_lookup_int(xfs_dabuf_t *bp, xfs_da_args_t *args)  			args->index = probe;  			return(XFS_ERROR(EEXIST));  		} else { -			name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, probe); +			name_rmt = xfs_attr_leaf_name_remote(leaf, probe);  			if (name_rmt->namelen != args->namelen)  				continue;  			if (memcmp(args->name, (char *)name_rmt->name, @@ -2035,7 +2035,7 @@ xfs_attr_leaf_getvalue(xfs_dabuf_t *bp, xfs_da_args_t *args)  	entry = &leaf->entries[args->index];  	if (entry->flags & XFS_ATTR_LOCAL) { -		name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf, args->index); +		name_loc = xfs_attr_leaf_name_local(leaf, args->index);  		ASSERT(name_loc->namelen == args->namelen);  		ASSERT(memcmp(args->name, name_loc->nameval, args->namelen) == 0);  		valuelen = be16_to_cpu(name_loc->valuelen); @@ -2050,7 +2050,7 @@ xfs_attr_leaf_getvalue(xfs_dabuf_t *bp, xfs_da_args_t *args)  		args->valuelen = valuelen;  		memcpy(args->value, &name_loc->nameval[args->namelen], valuelen);  	} else { -		name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, args->index); +		name_rmt = xfs_attr_leaf_name_remote(leaf, args->index);  		ASSERT(name_rmt->namelen == args->namelen);  		ASSERT(memcmp(args->name, name_rmt->name, args->namelen) == 0);  		valuelen = be32_to_cpu(name_rmt->valuelen); @@ -2143,7 +2143,7 @@ xfs_attr_leaf_moveents(xfs_attr_leafblock_t *leaf_s, int start_s,  		 * off for 6.2, should be revisited later.  		 */  		if (entry_s->flags & XFS_ATTR_INCOMPLETE) { /* skip partials? */ -			memset(XFS_ATTR_LEAF_NAME(leaf_s, start_s + i), 0, tmp); +			memset(xfs_attr_leaf_name(leaf_s, start_s + i), 0, tmp);  			be16_add_cpu(&hdr_s->usedbytes, -tmp);  			be16_add_cpu(&hdr_s->count, -1);  			entry_d--;	/* to compensate for ++ in loop hdr */ @@ -2160,11 +2160,11 @@ xfs_attr_leaf_moveents(xfs_attr_leafblock_t *leaf_s, int start_s,  			entry_d->flags = entry_s->flags;  			ASSERT(be16_to_cpu(entry_d->nameidx) + tmp  							<= XFS_LBSIZE(mp)); -			memmove(XFS_ATTR_LEAF_NAME(leaf_d, desti), -				XFS_ATTR_LEAF_NAME(leaf_s, start_s + i), tmp); +			memmove(xfs_attr_leaf_name(leaf_d, desti), +				xfs_attr_leaf_name(leaf_s, start_s + i), tmp);  			ASSERT(be16_to_cpu(entry_s->nameidx) + tmp  							<= XFS_LBSIZE(mp)); -			memset(XFS_ATTR_LEAF_NAME(leaf_s, start_s + i), 0, tmp); +			memset(xfs_attr_leaf_name(leaf_s, start_s + i), 0, tmp);  			be16_add_cpu(&hdr_s->usedbytes, -tmp);  			be16_add_cpu(&hdr_d->usedbytes, tmp);  			be16_add_cpu(&hdr_s->count, -1); @@ -2276,12 +2276,12 @@ xfs_attr_leaf_entsize(xfs_attr_leafblock_t *leaf, int index)  	ASSERT(be16_to_cpu(leaf->hdr.info.magic) == XFS_ATTR_LEAF_MAGIC);  	if (leaf->entries[index].flags & XFS_ATTR_LOCAL) { -		name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf, index); -		size = XFS_ATTR_LEAF_ENTSIZE_LOCAL(name_loc->namelen, +		name_loc = xfs_attr_leaf_name_local(leaf, index); +		size = xfs_attr_leaf_entsize_local(name_loc->namelen,  						   be16_to_cpu(name_loc->valuelen));  	} else { -		name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, index); -		size = XFS_ATTR_LEAF_ENTSIZE_REMOTE(name_rmt->namelen); +		name_rmt = xfs_attr_leaf_name_remote(leaf, index); +		size = xfs_attr_leaf_entsize_remote(name_rmt->namelen);  	}  	return(size);  } @@ -2297,13 +2297,13 @@ xfs_attr_leaf_newentsize(int namelen, int valuelen, int blocksize, int *local)  {  	int size; -	size = XFS_ATTR_LEAF_ENTSIZE_LOCAL(namelen, valuelen); -	if (size < XFS_ATTR_LEAF_ENTSIZE_LOCAL_MAX(blocksize)) { +	size = xfs_attr_leaf_entsize_local(namelen, valuelen); +	if (size < xfs_attr_leaf_entsize_local_max(blocksize)) {  		if (local) {  			*local = 1;  		}  	} else { -		size = XFS_ATTR_LEAF_ENTSIZE_REMOTE(namelen); +		size = xfs_attr_leaf_entsize_remote(namelen);  		if (local) {  			*local = 0;  		} @@ -2372,7 +2372,7 @@ xfs_attr_leaf_list_int(xfs_dabuf_t *bp, xfs_attr_list_context_t *context)  		if (entry->flags & XFS_ATTR_LOCAL) {  			xfs_attr_leaf_name_local_t *name_loc = -				XFS_ATTR_LEAF_NAME_LOCAL(leaf, i); +				xfs_attr_leaf_name_local(leaf, i);  			retval = context->put_listent(context,  						entry->flags, @@ -2384,7 +2384,7 @@ xfs_attr_leaf_list_int(xfs_dabuf_t *bp, xfs_attr_list_context_t *context)  				return retval;  		} else {  			xfs_attr_leaf_name_remote_t *name_rmt = -				XFS_ATTR_LEAF_NAME_REMOTE(leaf, i); +				xfs_attr_leaf_name_remote(leaf, i);  			int valuelen = be32_to_cpu(name_rmt->valuelen); @@ -2468,11 +2468,11 @@ xfs_attr_leaf_clearflag(xfs_da_args_t *args)  #ifdef DEBUG  	if (entry->flags & XFS_ATTR_LOCAL) { -		name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf, args->index); +		name_loc = xfs_attr_leaf_name_local(leaf, args->index);  		namelen = name_loc->namelen;  		name = (char *)name_loc->nameval;  	} else { -		name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, args->index); +		name_rmt = xfs_attr_leaf_name_remote(leaf, args->index);  		namelen = name_rmt->namelen;  		name = (char *)name_rmt->name;  	} @@ -2487,7 +2487,7 @@ xfs_attr_leaf_clearflag(xfs_da_args_t *args)  	if (args->rmtblkno) {  		ASSERT((entry->flags & XFS_ATTR_LOCAL) == 0); -		name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, args->index); +		name_rmt = xfs_attr_leaf_name_remote(leaf, args->index);  		name_rmt->valueblk = cpu_to_be32(args->rmtblkno);  		name_rmt->valuelen = cpu_to_be32(args->valuelen);  		xfs_da_log_buf(args->trans, bp, @@ -2534,7 +2534,7 @@ xfs_attr_leaf_setflag(xfs_da_args_t *args)  	xfs_da_log_buf(args->trans, bp,  			XFS_DA_LOGRANGE(leaf, entry, sizeof(*entry)));  	if ((entry->flags & XFS_ATTR_LOCAL) == 0) { -		name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, args->index); +		name_rmt = xfs_attr_leaf_name_remote(leaf, args->index);  		name_rmt->valueblk = 0;  		name_rmt->valuelen = 0;  		xfs_da_log_buf(args->trans, bp, @@ -2607,20 +2607,20 @@ xfs_attr_leaf_flipflags(xfs_da_args_t *args)  #ifdef DEBUG  	if (entry1->flags & XFS_ATTR_LOCAL) { -		name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf1, args->index); +		name_loc = xfs_attr_leaf_name_local(leaf1, args->index);  		namelen1 = name_loc->namelen;  		name1 = (char *)name_loc->nameval;  	} else { -		name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf1, args->index); +		name_rmt = xfs_attr_leaf_name_remote(leaf1, args->index);  		namelen1 = name_rmt->namelen;  		name1 = (char *)name_rmt->name;  	}  	if (entry2->flags & XFS_ATTR_LOCAL) { -		name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf2, args->index2); +		name_loc = xfs_attr_leaf_name_local(leaf2, args->index2);  		namelen2 = name_loc->namelen;  		name2 = (char *)name_loc->nameval;  	} else { -		name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf2, args->index2); +		name_rmt = xfs_attr_leaf_name_remote(leaf2, args->index2);  		namelen2 = name_rmt->namelen;  		name2 = (char *)name_rmt->name;  	} @@ -2637,7 +2637,7 @@ xfs_attr_leaf_flipflags(xfs_da_args_t *args)  			  XFS_DA_LOGRANGE(leaf1, entry1, sizeof(*entry1)));  	if (args->rmtblkno) {  		ASSERT((entry1->flags & XFS_ATTR_LOCAL) == 0); -		name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf1, args->index); +		name_rmt = xfs_attr_leaf_name_remote(leaf1, args->index);  		name_rmt->valueblk = cpu_to_be32(args->rmtblkno);  		name_rmt->valuelen = cpu_to_be32(args->valuelen);  		xfs_da_log_buf(args->trans, bp1, @@ -2648,7 +2648,7 @@ xfs_attr_leaf_flipflags(xfs_da_args_t *args)  	xfs_da_log_buf(args->trans, bp2,  			  XFS_DA_LOGRANGE(leaf2, entry2, sizeof(*entry2)));  	if ((entry2->flags & XFS_ATTR_LOCAL) == 0) { -		name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf2, args->index2); +		name_rmt = xfs_attr_leaf_name_remote(leaf2, args->index2);  		name_rmt->valueblk = 0;  		name_rmt->valuelen = 0;  		xfs_da_log_buf(args->trans, bp2, @@ -2855,7 +2855,7 @@ xfs_attr_leaf_inactive(xfs_trans_t **trans, xfs_inode_t *dp, xfs_dabuf_t *bp)  	for (i = 0; i < be16_to_cpu(leaf->hdr.count); entry++, i++) {  		if (be16_to_cpu(entry->nameidx) &&  		    ((entry->flags & XFS_ATTR_LOCAL) == 0)) { -			name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, i); +			name_rmt = xfs_attr_leaf_name_remote(leaf, i);  			if (name_rmt->valueblk)  				count++;  		} @@ -2883,7 +2883,7 @@ xfs_attr_leaf_inactive(xfs_trans_t **trans, xfs_inode_t *dp, xfs_dabuf_t *bp)  	for (i = 0; i < be16_to_cpu(leaf->hdr.count); entry++, i++) {  		if (be16_to_cpu(entry->nameidx) &&  		    ((entry->flags & XFS_ATTR_LOCAL) == 0)) { -			name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, i); +			name_rmt = xfs_attr_leaf_name_remote(leaf, i);  			if (name_rmt->valueblk) {  				lp->valueblk = be32_to_cpu(name_rmt->valueblk);  				lp->valuelen = XFS_B_TO_FSB(dp->i_mount, diff --git a/fs/xfs/xfs_attr_leaf.h b/fs/xfs/xfs_attr_leaf.h index 83e9af417ca2..9c7d22fdcf4d 100644 --- a/fs/xfs/xfs_attr_leaf.h +++ b/fs/xfs/xfs_attr_leaf.h @@ -151,8 +151,6 @@ typedef struct xfs_attr_leafblock {  /*   * Cast typed pointers for "local" and "remote" name/value structs.   */ -#define XFS_ATTR_LEAF_NAME_REMOTE(leafp,idx)	\ -	xfs_attr_leaf_name_remote(leafp,idx)  static inline xfs_attr_leaf_name_remote_t *  xfs_attr_leaf_name_remote(xfs_attr_leafblock_t *leafp, int idx)  { @@ -160,8 +158,6 @@ xfs_attr_leaf_name_remote(xfs_attr_leafblock_t *leafp, int idx)  		&((char *)leafp)[be16_to_cpu(leafp->entries[idx].nameidx)];  } -#define XFS_ATTR_LEAF_NAME_LOCAL(leafp,idx)	\ -	xfs_attr_leaf_name_local(leafp,idx)  static inline xfs_attr_leaf_name_local_t *  xfs_attr_leaf_name_local(xfs_attr_leafblock_t *leafp, int idx)  { @@ -169,8 +165,6 @@ xfs_attr_leaf_name_local(xfs_attr_leafblock_t *leafp, int idx)  		&((char *)leafp)[be16_to_cpu(leafp->entries[idx].nameidx)];  } -#define XFS_ATTR_LEAF_NAME(leafp,idx)		\ -	xfs_attr_leaf_name(leafp,idx)  static inline char *xfs_attr_leaf_name(xfs_attr_leafblock_t *leafp, int idx)  {  	return &((char *)leafp)[be16_to_cpu(leafp->entries[idx].nameidx)]; @@ -181,24 +175,18 @@ static inline char *xfs_attr_leaf_name(xfs_attr_leafblock_t *leafp, int idx)   * a "local" name/value structure, a "remote" name/value structure, and   * a pointer which might be either.   */ -#define XFS_ATTR_LEAF_ENTSIZE_REMOTE(nlen)	\ -	xfs_attr_leaf_entsize_remote(nlen)  static inline int xfs_attr_leaf_entsize_remote(int nlen)  {  	return ((uint)sizeof(xfs_attr_leaf_name_remote_t) - 1 + (nlen) + \  		XFS_ATTR_LEAF_NAME_ALIGN - 1) & ~(XFS_ATTR_LEAF_NAME_ALIGN - 1);  } -#define XFS_ATTR_LEAF_ENTSIZE_LOCAL(nlen,vlen)	\ -	xfs_attr_leaf_entsize_local(nlen,vlen)  static inline int xfs_attr_leaf_entsize_local(int nlen, int vlen)  {  	return ((uint)sizeof(xfs_attr_leaf_name_local_t) - 1 + (nlen) + (vlen) +  		XFS_ATTR_LEAF_NAME_ALIGN - 1) & ~(XFS_ATTR_LEAF_NAME_ALIGN - 1);  } -#define XFS_ATTR_LEAF_ENTSIZE_LOCAL_MAX(bsize)	\ -	xfs_attr_leaf_entsize_local_max(bsize)  static inline int xfs_attr_leaf_entsize_local_max(int bsize)  {  	return (((bsize) >> 1) + ((bsize) >> 2)); diff --git a/fs/xfs/xfs_bit.h b/fs/xfs/xfs_bit.h index bca7b243c319..f1e3c907044d 100644 --- a/fs/xfs/xfs_bit.h +++ b/fs/xfs/xfs_bit.h @@ -23,24 +23,16 @@   */  /* - * masks with n high/low bits set, 32-bit values & 64-bit values + * masks with n high/low bits set, 64-bit values   */ -#define	XFS_MASK32HI(n)		xfs_mask32hi(n) -static inline __uint32_t xfs_mask32hi(int n) -{ -	return (__uint32_t)-1 << (32 - (n)); -} -#define	XFS_MASK64HI(n)		xfs_mask64hi(n)  static inline __uint64_t xfs_mask64hi(int n)  {  	return (__uint64_t)-1 << (64 - (n));  } -#define	XFS_MASK32LO(n)		xfs_mask32lo(n)  static inline __uint32_t xfs_mask32lo(int n)  {  	return ((__uint32_t)1 << (n)) - 1;  } -#define	XFS_MASK64LO(n)		xfs_mask64lo(n)  static inline __uint64_t xfs_mask64lo(int n)  {  	return ((__uint64_t)1 << (n)) - 1; diff --git a/fs/xfs/xfs_bmap_btree.c b/fs/xfs/xfs_bmap_btree.c index 8f1ec73725d3..ba6b08c2fb02 100644 --- a/fs/xfs/xfs_bmap_btree.c +++ b/fs/xfs/xfs_bmap_btree.c @@ -110,16 +110,16 @@ __xfs_bmbt_get_all(  	ext_flag = (int)(l0 >> (64 - BMBT_EXNTFLAG_BITLEN));  	s->br_startoff = ((xfs_fileoff_t)l0 & -			   XFS_MASK64LO(64 - BMBT_EXNTFLAG_BITLEN)) >> 9; +			   xfs_mask64lo(64 - BMBT_EXNTFLAG_BITLEN)) >> 9;  #if XFS_BIG_BLKNOS -	s->br_startblock = (((xfs_fsblock_t)l0 & XFS_MASK64LO(9)) << 43) | +	s->br_startblock = (((xfs_fsblock_t)l0 & xfs_mask64lo(9)) << 43) |  			   (((xfs_fsblock_t)l1) >> 21);  #else  #ifdef DEBUG  	{  		xfs_dfsbno_t	b; -		b = (((xfs_dfsbno_t)l0 & XFS_MASK64LO(9)) << 43) | +		b = (((xfs_dfsbno_t)l0 & xfs_mask64lo(9)) << 43) |  		    (((xfs_dfsbno_t)l1) >> 21);  		ASSERT((b >> 32) == 0 || ISNULLDSTARTBLOCK(b));  		s->br_startblock = (xfs_fsblock_t)b; @@ -128,7 +128,7 @@ __xfs_bmbt_get_all(  	s->br_startblock = (xfs_fsblock_t)(((xfs_dfsbno_t)l1) >> 21);  #endif	/* DEBUG */  #endif	/* XFS_BIG_BLKNOS */ -	s->br_blockcount = (xfs_filblks_t)(l1 & XFS_MASK64LO(21)); +	s->br_blockcount = (xfs_filblks_t)(l1 & xfs_mask64lo(21));  	/* This is xfs_extent_state() in-line */  	if (ext_flag) {  		ASSERT(s->br_blockcount != 0);	/* saved for DMIG */ @@ -153,7 +153,7 @@ xfs_filblks_t  xfs_bmbt_get_blockcount(  	xfs_bmbt_rec_host_t	*r)  { -	return (xfs_filblks_t)(r->l1 & XFS_MASK64LO(21)); +	return (xfs_filblks_t)(r->l1 & xfs_mask64lo(21));  }  /* @@ -164,13 +164,13 @@ xfs_bmbt_get_startblock(  	xfs_bmbt_rec_host_t	*r)  {  #if XFS_BIG_BLKNOS -	return (((xfs_fsblock_t)r->l0 & XFS_MASK64LO(9)) << 43) | +	return (((xfs_fsblock_t)r->l0 & xfs_mask64lo(9)) << 43) |  	       (((xfs_fsblock_t)r->l1) >> 21);  #else  #ifdef DEBUG  	xfs_dfsbno_t	b; -	b = (((xfs_dfsbno_t)r->l0 & XFS_MASK64LO(9)) << 43) | +	b = (((xfs_dfsbno_t)r->l0 & xfs_mask64lo(9)) << 43) |  	    (((xfs_dfsbno_t)r->l1) >> 21);  	ASSERT((b >> 32) == 0 || ISNULLDSTARTBLOCK(b));  	return (xfs_fsblock_t)b; @@ -188,7 +188,7 @@ xfs_bmbt_get_startoff(  	xfs_bmbt_rec_host_t	*r)  {  	return ((xfs_fileoff_t)r->l0 & -		 XFS_MASK64LO(64 - BMBT_EXNTFLAG_BITLEN)) >> 9; +		 xfs_mask64lo(64 - BMBT_EXNTFLAG_BITLEN)) >> 9;  }  xfs_exntst_t @@ -219,7 +219,7 @@ xfs_filblks_t  xfs_bmbt_disk_get_blockcount(  	xfs_bmbt_rec_t	*r)  { -	return (xfs_filblks_t)(be64_to_cpu(r->l1) & XFS_MASK64LO(21)); +	return (xfs_filblks_t)(be64_to_cpu(r->l1) & xfs_mask64lo(21));  }  /* @@ -230,7 +230,7 @@ xfs_bmbt_disk_get_startoff(  	xfs_bmbt_rec_t	*r)  {  	return ((xfs_fileoff_t)be64_to_cpu(r->l0) & -		 XFS_MASK64LO(64 - BMBT_EXNTFLAG_BITLEN)) >> 9; +		 xfs_mask64lo(64 - BMBT_EXNTFLAG_BITLEN)) >> 9;  } @@ -248,33 +248,33 @@ xfs_bmbt_set_allf(  	int		extent_flag = (state == XFS_EXT_NORM) ? 0 : 1;  	ASSERT(state == XFS_EXT_NORM || state == XFS_EXT_UNWRITTEN); -	ASSERT((startoff & XFS_MASK64HI(64-BMBT_STARTOFF_BITLEN)) == 0); -	ASSERT((blockcount & XFS_MASK64HI(64-BMBT_BLOCKCOUNT_BITLEN)) == 0); +	ASSERT((startoff & xfs_mask64hi(64-BMBT_STARTOFF_BITLEN)) == 0); +	ASSERT((blockcount & xfs_mask64hi(64-BMBT_BLOCKCOUNT_BITLEN)) == 0);  #if XFS_BIG_BLKNOS -	ASSERT((startblock & XFS_MASK64HI(64-BMBT_STARTBLOCK_BITLEN)) == 0); +	ASSERT((startblock & xfs_mask64hi(64-BMBT_STARTBLOCK_BITLEN)) == 0);  	r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) |  		((xfs_bmbt_rec_base_t)startoff << 9) |  		((xfs_bmbt_rec_base_t)startblock >> 43);  	r->l1 = ((xfs_bmbt_rec_base_t)startblock << 21) |  		((xfs_bmbt_rec_base_t)blockcount & -		(xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); +		(xfs_bmbt_rec_base_t)xfs_mask64lo(21));  #else	/* !XFS_BIG_BLKNOS */  	if (ISNULLSTARTBLOCK(startblock)) {  		r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) |  			((xfs_bmbt_rec_base_t)startoff << 9) | -			 (xfs_bmbt_rec_base_t)XFS_MASK64LO(9); -		r->l1 = XFS_MASK64HI(11) | +			 (xfs_bmbt_rec_base_t)xfs_mask64lo(9); +		r->l1 = xfs_mask64hi(11) |  			  ((xfs_bmbt_rec_base_t)startblock << 21) |  			  ((xfs_bmbt_rec_base_t)blockcount & -			   (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); +			   (xfs_bmbt_rec_base_t)xfs_mask64lo(21));  	} else {  		r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) |  			((xfs_bmbt_rec_base_t)startoff << 9);  		r->l1 = ((xfs_bmbt_rec_base_t)startblock << 21) |  			 ((xfs_bmbt_rec_base_t)blockcount & -			 (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); +			 (xfs_bmbt_rec_base_t)xfs_mask64lo(21));  	}  #endif	/* XFS_BIG_BLKNOS */  } @@ -306,11 +306,11 @@ xfs_bmbt_disk_set_allf(  	int			extent_flag = (state == XFS_EXT_NORM) ? 0 : 1;  	ASSERT(state == XFS_EXT_NORM || state == XFS_EXT_UNWRITTEN); -	ASSERT((startoff & XFS_MASK64HI(64-BMBT_STARTOFF_BITLEN)) == 0); -	ASSERT((blockcount & XFS_MASK64HI(64-BMBT_BLOCKCOUNT_BITLEN)) == 0); +	ASSERT((startoff & xfs_mask64hi(64-BMBT_STARTOFF_BITLEN)) == 0); +	ASSERT((blockcount & xfs_mask64hi(64-BMBT_BLOCKCOUNT_BITLEN)) == 0);  #if XFS_BIG_BLKNOS -	ASSERT((startblock & XFS_MASK64HI(64-BMBT_STARTBLOCK_BITLEN)) == 0); +	ASSERT((startblock & xfs_mask64hi(64-BMBT_STARTBLOCK_BITLEN)) == 0);  	r->l0 = cpu_to_be64(  		((xfs_bmbt_rec_base_t)extent_flag << 63) | @@ -319,17 +319,17 @@ xfs_bmbt_disk_set_allf(  	r->l1 = cpu_to_be64(  		((xfs_bmbt_rec_base_t)startblock << 21) |  		 ((xfs_bmbt_rec_base_t)blockcount & -		  (xfs_bmbt_rec_base_t)XFS_MASK64LO(21))); +		  (xfs_bmbt_rec_base_t)xfs_mask64lo(21)));  #else	/* !XFS_BIG_BLKNOS */  	if (ISNULLSTARTBLOCK(startblock)) {  		r->l0 = cpu_to_be64(  			((xfs_bmbt_rec_base_t)extent_flag << 63) |  			 ((xfs_bmbt_rec_base_t)startoff << 9) | -			  (xfs_bmbt_rec_base_t)XFS_MASK64LO(9)); -		r->l1 = cpu_to_be64(XFS_MASK64HI(11) | +			  (xfs_bmbt_rec_base_t)xfs_mask64lo(9)); +		r->l1 = cpu_to_be64(xfs_mask64hi(11) |  			  ((xfs_bmbt_rec_base_t)startblock << 21) |  			  ((xfs_bmbt_rec_base_t)blockcount & -			   (xfs_bmbt_rec_base_t)XFS_MASK64LO(21))); +			   (xfs_bmbt_rec_base_t)xfs_mask64lo(21)));  	} else {  		r->l0 = cpu_to_be64(  			((xfs_bmbt_rec_base_t)extent_flag << 63) | @@ -337,7 +337,7 @@ xfs_bmbt_disk_set_allf(  		r->l1 = cpu_to_be64(  			((xfs_bmbt_rec_base_t)startblock << 21) |  			 ((xfs_bmbt_rec_base_t)blockcount & -			  (xfs_bmbt_rec_base_t)XFS_MASK64LO(21))); +			  (xfs_bmbt_rec_base_t)xfs_mask64lo(21)));  	}  #endif	/* XFS_BIG_BLKNOS */  } @@ -362,9 +362,9 @@ xfs_bmbt_set_blockcount(  	xfs_bmbt_rec_host_t *r,  	xfs_filblks_t	v)  { -	ASSERT((v & XFS_MASK64HI(43)) == 0); -	r->l1 = (r->l1 & (xfs_bmbt_rec_base_t)XFS_MASK64HI(43)) | -		  (xfs_bmbt_rec_base_t)(v & XFS_MASK64LO(21)); +	ASSERT((v & xfs_mask64hi(43)) == 0); +	r->l1 = (r->l1 & (xfs_bmbt_rec_base_t)xfs_mask64hi(43)) | +		  (xfs_bmbt_rec_base_t)(v & xfs_mask64lo(21));  }  /* @@ -376,21 +376,21 @@ xfs_bmbt_set_startblock(  	xfs_fsblock_t	v)  {  #if XFS_BIG_BLKNOS -	ASSERT((v & XFS_MASK64HI(12)) == 0); -	r->l0 = (r->l0 & (xfs_bmbt_rec_base_t)XFS_MASK64HI(55)) | +	ASSERT((v & xfs_mask64hi(12)) == 0); +	r->l0 = (r->l0 & (xfs_bmbt_rec_base_t)xfs_mask64hi(55)) |  		  (xfs_bmbt_rec_base_t)(v >> 43); -	r->l1 = (r->l1 & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)) | +	r->l1 = (r->l1 & (xfs_bmbt_rec_base_t)xfs_mask64lo(21)) |  		  (xfs_bmbt_rec_base_t)(v << 21);  #else	/* !XFS_BIG_BLKNOS */  	if (ISNULLSTARTBLOCK(v)) { -		r->l0 |= (xfs_bmbt_rec_base_t)XFS_MASK64LO(9); -		r->l1 = (xfs_bmbt_rec_base_t)XFS_MASK64HI(11) | +		r->l0 |= (xfs_bmbt_rec_base_t)xfs_mask64lo(9); +		r->l1 = (xfs_bmbt_rec_base_t)xfs_mask64hi(11) |  			  ((xfs_bmbt_rec_base_t)v << 21) | -			  (r->l1 & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); +			  (r->l1 & (xfs_bmbt_rec_base_t)xfs_mask64lo(21));  	} else { -		r->l0 &= ~(xfs_bmbt_rec_base_t)XFS_MASK64LO(9); +		r->l0 &= ~(xfs_bmbt_rec_base_t)xfs_mask64lo(9);  		r->l1 = ((xfs_bmbt_rec_base_t)v << 21) | -			  (r->l1 & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); +			  (r->l1 & (xfs_bmbt_rec_base_t)xfs_mask64lo(21));  	}  #endif	/* XFS_BIG_BLKNOS */  } @@ -403,10 +403,10 @@ xfs_bmbt_set_startoff(  	xfs_bmbt_rec_host_t *r,  	xfs_fileoff_t	v)  { -	ASSERT((v & XFS_MASK64HI(9)) == 0); -	r->l0 = (r->l0 & (xfs_bmbt_rec_base_t) XFS_MASK64HI(1)) | +	ASSERT((v & xfs_mask64hi(9)) == 0); +	r->l0 = (r->l0 & (xfs_bmbt_rec_base_t) xfs_mask64hi(1)) |  		((xfs_bmbt_rec_base_t)v << 9) | -		  (r->l0 & (xfs_bmbt_rec_base_t)XFS_MASK64LO(9)); +		  (r->l0 & (xfs_bmbt_rec_base_t)xfs_mask64lo(9));  }  /* @@ -419,9 +419,9 @@ xfs_bmbt_set_state(  {  	ASSERT(v == XFS_EXT_NORM || v == XFS_EXT_UNWRITTEN);  	if (v == XFS_EXT_NORM) -		r->l0 &= XFS_MASK64LO(64 - BMBT_EXNTFLAG_BITLEN); +		r->l0 &= xfs_mask64lo(64 - BMBT_EXNTFLAG_BITLEN);  	else -		r->l0 |= XFS_MASK64HI(BMBT_EXNTFLAG_BITLEN); +		r->l0 |= xfs_mask64hi(BMBT_EXNTFLAG_BITLEN);  }  /* diff --git a/fs/xfs/xfs_btree.c b/fs/xfs/xfs_btree.c index 7ed59267420d..2c3ef20f8842 100644 --- a/fs/xfs/xfs_btree.c +++ b/fs/xfs/xfs_btree.c @@ -730,8 +730,8 @@ xfs_btree_readahead_lblock(  	struct xfs_btree_block	*block)  {  	int			rval = 0; -	xfs_fsblock_t		left = be64_to_cpu(block->bb_u.l.bb_leftsib); -	xfs_fsblock_t		right = be64_to_cpu(block->bb_u.l.bb_rightsib); +	xfs_dfsbno_t		left = be64_to_cpu(block->bb_u.l.bb_leftsib); +	xfs_dfsbno_t		right = be64_to_cpu(block->bb_u.l.bb_rightsib);  	if ((lr & XFS_BTCUR_LEFTRA) && left != NULLDFSBNO) {  		xfs_btree_reada_bufl(cur->bc_mp, left, 1); diff --git a/fs/xfs/xfs_dir2_block.c b/fs/xfs/xfs_dir2_block.c index e2fa0a1d8e96..e1f0a06aaf04 100644 --- a/fs/xfs/xfs_dir2_block.c +++ b/fs/xfs/xfs_dir2_block.c @@ -517,9 +517,9 @@ xfs_dir2_block_getdents(  		/*  		 * If it didn't fit, set the final offset to here & return.  		 */ -		if (filldir(dirent, dep->name, dep->namelen, cook, +		if (filldir(dirent, dep->name, dep->namelen, cook & 0x7fffffff,  			    ino, DT_UNKNOWN)) { -			*offset = cook; +			*offset = cook & 0x7fffffff;  			xfs_da_brelse(NULL, bp);  			return 0;  		} @@ -529,7 +529,8 @@ xfs_dir2_block_getdents(  	 * Reached the end of the block.  	 * Set the offset to a non-existent block 1 and return.  	 */ -	*offset = xfs_dir2_db_off_to_dataptr(mp, mp->m_dirdatablk + 1, 0); +	*offset = xfs_dir2_db_off_to_dataptr(mp, mp->m_dirdatablk + 1, 0) & +			0x7fffffff;  	xfs_da_brelse(NULL, bp);  	return 0;  } diff --git a/fs/xfs/xfs_dir2_leaf.c b/fs/xfs/xfs_dir2_leaf.c index 93535992cb60..ef805a374eec 100644 --- a/fs/xfs/xfs_dir2_leaf.c +++ b/fs/xfs/xfs_dir2_leaf.c @@ -1092,7 +1092,7 @@ xfs_dir2_leaf_getdents(  		 * Won't fit.  Return to caller.  		 */  		if (filldir(dirent, dep->name, dep->namelen, -			    xfs_dir2_byte_to_dataptr(mp, curoff), +			    xfs_dir2_byte_to_dataptr(mp, curoff) & 0x7fffffff,  			    ino, DT_UNKNOWN))  			break; @@ -1108,9 +1108,9 @@ xfs_dir2_leaf_getdents(  	 * All done.  Set output offset value to current offset.  	 */  	if (curoff > xfs_dir2_dataptr_to_byte(mp, XFS_DIR2_MAX_DATAPTR)) -		*offset = XFS_DIR2_MAX_DATAPTR; +		*offset = XFS_DIR2_MAX_DATAPTR & 0x7fffffff;  	else -		*offset = xfs_dir2_byte_to_dataptr(mp, curoff); +		*offset = xfs_dir2_byte_to_dataptr(mp, curoff) & 0x7fffffff;  	kmem_free(map);  	if (bp)  		xfs_da_brelse(NULL, bp); diff --git a/fs/xfs/xfs_dir2_sf.c b/fs/xfs/xfs_dir2_sf.c index b46af0013ec9..a8a8a6efad5b 100644 --- a/fs/xfs/xfs_dir2_sf.c +++ b/fs/xfs/xfs_dir2_sf.c @@ -752,8 +752,8 @@ xfs_dir2_sf_getdents(  #if XFS_BIG_INUMS  		ino += mp->m_inoadd;  #endif -		if (filldir(dirent, ".", 1, dot_offset, ino, DT_DIR)) { -			*offset = dot_offset; +		if (filldir(dirent, ".", 1, dot_offset & 0x7fffffff, ino, DT_DIR)) { +			*offset = dot_offset & 0x7fffffff;  			return 0;  		}  	} @@ -766,8 +766,8 @@ xfs_dir2_sf_getdents(  #if XFS_BIG_INUMS  		ino += mp->m_inoadd;  #endif -		if (filldir(dirent, "..", 2, dotdot_offset, ino, DT_DIR)) { -			*offset = dotdot_offset; +		if (filldir(dirent, "..", 2, dotdot_offset & 0x7fffffff, ino, DT_DIR)) { +			*offset = dotdot_offset & 0x7fffffff;  			return 0;  		}  	} @@ -791,14 +791,15 @@ xfs_dir2_sf_getdents(  #endif  		if (filldir(dirent, sfep->name, sfep->namelen, -					    off, ino, DT_UNKNOWN)) { -			*offset = off; +			    off & 0x7fffffff, ino, DT_UNKNOWN)) { +			*offset = off & 0x7fffffff;  			return 0;  		}  		sfep = xfs_dir2_sf_nextentry(sfp, sfep);  	} -	*offset = xfs_dir2_db_off_to_dataptr(mp, mp->m_dirdatablk + 1, 0); +	*offset = xfs_dir2_db_off_to_dataptr(mp, mp->m_dirdatablk + 1, 0) & +			0x7fffffff;  	return 0;  } diff --git a/fs/xfs/xfs_types.h b/fs/xfs/xfs_types.h index 0f5191644ab2..b2f724502f1b 100644 --- a/fs/xfs/xfs_types.h +++ b/fs/xfs/xfs_types.h @@ -45,7 +45,7 @@ typedef __uint32_t		prid_t;		/* project ID */  typedef __uint32_t		inst_t;		/* an instruction */  typedef __s64			xfs_off_t;	/* <file offset> type */ -typedef __u64			xfs_ino_t;	/* <inode> type */ +typedef unsigned long long	xfs_ino_t;	/* <inode> type */  typedef __s64			xfs_daddr_t;	/* <disk address> type */  typedef char *			xfs_caddr_t;	/* <core address> type */  typedef __u32			xfs_dev_t; @@ -111,8 +111,6 @@ typedef __uint64_t	xfs_fileoff_t;	/* block number in a file */  typedef __int64_t	xfs_sfiloff_t;	/* signed block number in a file */  typedef __uint64_t	xfs_filblks_t;	/* number of blocks in a file */ -typedef __uint8_t	xfs_arch_t;	/* architecture of an xfs fs */ -  /*   * Null values for the types.   */  | 
