Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 253ba4e7 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'for-linus' of git://oss.sgi.com:8090/xfs/xfs-2.6

* 'for-linus' of git://oss.sgi.com:8090/xfs/xfs-2.6: (87 commits)
  [XFS] Fix merge failure
  [XFS] The forward declarations for the xfs_ioctl() helpers and the
  [XFS] Update XFS documentation for noikeep/ikeep.
  [XFS] Update XFS Documentation for ikeep and ihashsize
  [XFS] Remove unused HAVE_SPLICE macro.
  [XFS] Remove CONFIG_XFS_SECURITY.
  [XFS] xfs_bmap_compute_maxlevels should be based on di_forkoff
  [XFS] Always use di_forkoff when checking for attr space.
  [XFS] Ensure the inode is joined in xfs_itruncate_finish
  [XFS] Remove periodic logging of in-core superblock counters.
  [XFS] fix logic error in xfs_alloc_ag_vextent_near()
  [XFS] Don't error out on good I/Os.
  [XFS] Catch log unmount failures.
  [XFS] Sanitise xfs_log_force error checking.
  [XFS] Check for errors when changing buffer pointers.
  [XFS] Don't allow silent errors in xfs_inactive().
  [XFS] Catch errors from xfs_imap().
  [XFS] xfs_bulkstat_one_dinode() never returns an error.
  [XFS] xfs_iflush_fork() never returns an error.
  [XFS] Catch unwritten extent conversion errors.
  ...
parents 188da988 65e67f51
Loading
Loading
Loading
Loading
+7 −8
Original line number Original line Diff line number Diff line
@@ -52,16 +52,15 @@ When mounting an XFS filesystem, the following options are accepted.
	and also gets the setgid bit set if it is a directory itself.
	and also gets the setgid bit set if it is a directory itself.


  ihashsize=value
  ihashsize=value
	Sets the number of hash buckets available for hashing the
	In memory inode hashes have been removed, so this option has
	in-memory inodes of the specified mount point.  If a value
	no function as of August 2007. Option is deprecated.
	of zero is used, the value selected by the default algorithm
	will be displayed in /proc/mounts.


  ikeep/noikeep
  ikeep/noikeep
	When inode clusters are emptied of inodes, keep them around
	When ikeep is specified, XFS does not delete empty inode clusters
	on the disk (ikeep) - this is the traditional XFS behaviour
	and keeps them around on disk. ikeep is the traditional XFS
	and is still the default for now.  Using the noikeep option,
	behaviour. When noikeep is specified, empty inode clusters
	inode clusters are returned to the free space pool.
	are returned to the free space pool. The default is noikeep for
	non-DMAPI mounts, while ikeep is the default when DMAPI is in use.


  inode64
  inode64
	Indicates that XFS is allowed to create inodes at any location
	Indicates that XFS is allowed to create inodes at any location
+0 −12
Original line number Original line Diff line number Diff line
@@ -35,18 +35,6 @@ config XFS_QUOTA
	  with or without the generic quota support enabled (CONFIG_QUOTA) -
	  with or without the generic quota support enabled (CONFIG_QUOTA) -
	  they are completely independent subsystems.
	  they are completely independent subsystems.


config XFS_SECURITY
	bool "XFS Security Label support"
	depends on XFS_FS
	help
	  Security labels support alternative access control models
	  implemented by security modules like SELinux.  This option
	  enables an extended attribute namespace for inode security
	  labels in the XFS filesystem.

	  If you are not using a security module that requires using
	  extended attributes for inode security labels, say N.

config XFS_POSIX_ACL
config XFS_POSIX_ACL
	bool "XFS POSIX ACL support"
	bool "XFS POSIX ACL support"
	depends on XFS_FS
	depends on XFS_FS
+3 −3
Original line number Original line Diff line number Diff line
@@ -37,7 +37,7 @@ kmem_alloc(size_t size, unsigned int __nocast flags)
#ifdef DEBUG
#ifdef DEBUG
	if (unlikely(!(flags & KM_LARGE) && (size > PAGE_SIZE))) {
	if (unlikely(!(flags & KM_LARGE) && (size > PAGE_SIZE))) {
		printk(KERN_WARNING "Large %s attempt, size=%ld\n",
		printk(KERN_WARNING "Large %s attempt, size=%ld\n",
			__FUNCTION__, (long)size);
			__func__, (long)size);
		dump_stack();
		dump_stack();
	}
	}
#endif
#endif
@@ -52,7 +52,7 @@ kmem_alloc(size_t size, unsigned int __nocast flags)
		if (!(++retries % 100))
		if (!(++retries % 100))
			printk(KERN_ERR "XFS: possible memory allocation "
			printk(KERN_ERR "XFS: possible memory allocation "
					"deadlock in %s (mode:0x%x)\n",
					"deadlock in %s (mode:0x%x)\n",
					__FUNCTION__, lflags);
					__func__, lflags);
		congestion_wait(WRITE, HZ/50);
		congestion_wait(WRITE, HZ/50);
	} while (1);
	} while (1);
}
}
@@ -129,7 +129,7 @@ kmem_zone_alloc(kmem_zone_t *zone, unsigned int __nocast flags)
		if (!(++retries % 100))
		if (!(++retries % 100))
			printk(KERN_ERR "XFS: possible memory allocation "
			printk(KERN_ERR "XFS: possible memory allocation "
					"deadlock in %s (mode:0x%x)\n",
					"deadlock in %s (mode:0x%x)\n",
					__FUNCTION__, lflags);
					__func__, lflags);
		congestion_wait(WRITE, HZ/50);
		congestion_wait(WRITE, HZ/50);
	} while (1);
	} while (1);
}
}
+8 −4
Original line number Original line Diff line number Diff line
@@ -243,8 +243,12 @@ xfs_end_bio_unwritten(
	size_t			size = ioend->io_size;
	size_t			size = ioend->io_size;


	if (likely(!ioend->io_error)) {
	if (likely(!ioend->io_error)) {
		if (!XFS_FORCED_SHUTDOWN(ip->i_mount))
		if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) {
			xfs_iomap_write_unwritten(ip, offset, size);
			int error;
			error = xfs_iomap_write_unwritten(ip, offset, size);
			if (error)
				ioend->io_error = error;
		}
		xfs_setfilesize(ioend);
		xfs_setfilesize(ioend);
	}
	}
	xfs_destroy_ioend(ioend);
	xfs_destroy_ioend(ioend);
@@ -1532,9 +1536,9 @@ xfs_vm_bmap(
	struct xfs_inode	*ip = XFS_I(inode);
	struct xfs_inode	*ip = XFS_I(inode);


	xfs_itrace_entry(XFS_I(inode));
	xfs_itrace_entry(XFS_I(inode));
	xfs_rwlock(ip, VRWLOCK_READ);
	xfs_ilock(ip, XFS_IOLOCK_SHARED);
	xfs_flush_pages(ip, (xfs_off_t)0, -1, 0, FI_REMAPF);
	xfs_flush_pages(ip, (xfs_off_t)0, -1, 0, FI_REMAPF);
	xfs_rwunlock(ip, VRWLOCK_READ);
	xfs_iunlock(ip, XFS_IOLOCK_SHARED);
	return generic_block_bmap(mapping, block, xfs_get_blocks);
	return generic_block_bmap(mapping, block, xfs_get_blocks);
}
}


+4 −4
Original line number Original line Diff line number Diff line
@@ -400,7 +400,7 @@ _xfs_buf_lookup_pages(
				printk(KERN_ERR
				printk(KERN_ERR
					"XFS: possible memory allocation "
					"XFS: possible memory allocation "
					"deadlock in %s (mode:0x%x)\n",
					"deadlock in %s (mode:0x%x)\n",
					__FUNCTION__, gfp_mask);
					__func__, gfp_mask);


			XFS_STATS_INC(xb_page_retries);
			XFS_STATS_INC(xb_page_retries);
			xfsbufd_wakeup(0, gfp_mask);
			xfsbufd_wakeup(0, gfp_mask);
@@ -598,7 +598,7 @@ xfs_buf_get_flags(
		error = _xfs_buf_map_pages(bp, flags);
		error = _xfs_buf_map_pages(bp, flags);
		if (unlikely(error)) {
		if (unlikely(error)) {
			printk(KERN_WARNING "%s: failed to map pages\n",
			printk(KERN_WARNING "%s: failed to map pages\n",
					__FUNCTION__);
					__func__);
			goto no_buffer;
			goto no_buffer;
		}
		}
	}
	}
@@ -778,7 +778,7 @@ xfs_buf_get_noaddr(
	error = _xfs_buf_map_pages(bp, XBF_MAPPED);
	error = _xfs_buf_map_pages(bp, XBF_MAPPED);
	if (unlikely(error)) {
	if (unlikely(error)) {
		printk(KERN_WARNING "%s: failed to map pages\n",
		printk(KERN_WARNING "%s: failed to map pages\n",
				__FUNCTION__);
				__func__);
		goto fail_free_mem;
		goto fail_free_mem;
	}
	}


@@ -1060,7 +1060,7 @@ xfs_buf_iostart(
		bp->b_flags &= ~(XBF_READ | XBF_WRITE | XBF_ASYNC);
		bp->b_flags &= ~(XBF_READ | XBF_WRITE | XBF_ASYNC);
		bp->b_flags |= flags & (XBF_DELWRI | XBF_ASYNC);
		bp->b_flags |= flags & (XBF_DELWRI | XBF_ASYNC);
		xfs_buf_delwri_queue(bp, 1);
		xfs_buf_delwri_queue(bp, 1);
		return status;
		return 0;
	}
	}


	bp->b_flags &= ~(XBF_READ | XBF_WRITE | XBF_ASYNC | XBF_DELWRI | \
	bp->b_flags &= ~(XBF_READ | XBF_WRITE | XBF_ASYNC | XBF_DELWRI | \
Loading