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

Commit 8cd226ca authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (50 commits)
  jbd2: sparse pointer use of zero as null
  jbd2: Use round-jiffies() function for the "5 second" ext4/jbd2 wakeup
  jbd2: Mark jbd2 slabs as SLAB_TEMPORARY
  jbd2: add lockdep support
  ext4: Use the ext4_ext_actual_len() helper function
  ext4: fix uniniatilized extent splitting error
  ext4: Check for return value from sb_set_blocksize
  ext4: Add stripe= option to /proc/mounts
  ext4: Enable the multiblock allocator by default
  ext4: Add multi block allocator for ext4
  ext4: Add new functions for searching extent tree
  ext4: Add ext4_find_next_bit()
  ext4: fix up EXT4FS_DEBUG builds
  ext4: Fix ext4_show_options to show the correct mount options.
  ext4: Add EXT4_IOC_MIGRATE ioctl
  ext4: Add inode version support in ext4
  vfs: Add 64 bit i_version support
  ext4: Add the journal checksum feature
  jbd2: jbd2 stats through procfs
  ext4: Take read lock during overwrite case.
  ...
parents 6b11d817 4019191b
Loading
Loading
Loading
Loading
+19 −1
Original line number Original line Diff line number Diff line
@@ -86,9 +86,21 @@ Alex is working on a new set of patches right now.
When mounting an ext4 filesystem, the following option are accepted:
When mounting an ext4 filesystem, the following option are accepted:
(*) == default
(*) == default


extents			ext4 will use extents to address file data.  The
extents		(*)	ext4 will use extents to address file data.  The
			file system will no longer be mountable by ext3.
			file system will no longer be mountable by ext3.


noextents		ext4 will not use extents for newly created files

journal_checksum	Enable checksumming of the journal transactions.
			This will allow the recovery code in e2fsck and the
			kernel to detect corruption in the kernel.  It is a
			compatible change and will be ignored by older kernels.

journal_async_commit	Commit block can be written to disk without waiting
			for descriptor blocks. If enabled older kernels cannot
			mount the device. This will enable 'journal_checksum'
			internally.

journal=update		Update the ext4 file system's journal to the current
journal=update		Update the ext4 file system's journal to the current
			format.
			format.


@@ -196,6 +208,12 @@ nobh (a) cache disk block mapping information
			"nobh" option tries to avoid associating buffer
			"nobh" option tries to avoid associating buffer
			heads (supported only for "writeback" mode).
			heads (supported only for "writeback" mode).


mballoc		(*)	Use the multiple block allocator for block allocation
nomballoc		disabled multiple block allocator for block allocation.
stripe=n		Number of filesystem blocks that mballoc will try
			to use for allocation size and alignment. For RAID5/6
			systems this should be the number of data
			disks *  RAID chunk size in file system blocks.


Data Mode
Data Mode
---------
---------
+39 −0
Original line number Original line Diff line number Diff line
@@ -857,6 +857,45 @@ CPUs.
The   "procs_blocked" line gives  the  number of  processes currently blocked,
The   "procs_blocked" line gives  the  number of  processes currently blocked,
waiting for I/O to complete.
waiting for I/O to complete.


1.9 Ext4 file system parameters
------------------------------
Ext4 file system have one directory per partition under /proc/fs/ext4/
# ls /proc/fs/ext4/hdc/
group_prealloc  max_to_scan  mb_groups  mb_history  min_to_scan  order2_req
stats  stream_req

mb_groups:
This file gives the details of mutiblock allocator buddy cache of free blocks

mb_history:
Multiblock allocation history.

stats:
This file indicate whether the multiblock allocator should start collecting
statistics. The statistics are shown during unmount

group_prealloc:
The multiblock allocator normalize the block allocation request to
group_prealloc filesystem blocks if we don't have strip value set.
The stripe value can be specified at mount time or during mke2fs.

max_to_scan:
How long multiblock allocator can look for a best extent (in found extents)

min_to_scan:
How long multiblock allocator  must look for a best extent

order2_req:
Multiblock allocator use  2^N search using buddies only for requests greater
than or equal to order2_req. The request size is specfied in file system
blocks. A value of 2 indicate only if the requests are greater than or equal
to 4 blocks.

stream_req:
Files smaller than stream_req are served by the stream allocator, whose
purpose is to pack requests as close each to other as possible to
produce smooth I/O traffic. Avalue of 16 indicate that file smaller than 16
filesystem block size will use group based preallocation.


------------------------------------------------------------------------------
------------------------------------------------------------------------------
Summary
Summary
+1 −0
Original line number Original line Diff line number Diff line
@@ -236,6 +236,7 @@ config JBD_DEBUG


config JBD2
config JBD2
	tristate
	tristate
	select CRC32
	help
	help
	  This is a generic journaling layer for block devices that support
	  This is a generic journaling layer for block devices that support
	  both 32-bit and 64-bit block numbers.  It is currently used by
	  both 32-bit and 64-bit block numbers.  It is currently used by
+5 −4
Original line number Original line Diff line number Diff line
@@ -546,11 +546,11 @@ static struct dentry *afs_lookup(struct inode *dir, struct dentry *dentry,
	dentry->d_op = &afs_fs_dentry_operations;
	dentry->d_op = &afs_fs_dentry_operations;


	d_add(dentry, inode);
	d_add(dentry, inode);
	_leave(" = 0 { vn=%u u=%u } -> { ino=%lu v=%lu }",
	_leave(" = 0 { vn=%u u=%u } -> { ino=%lu v=%llu }",
	       fid.vnode,
	       fid.vnode,
	       fid.unique,
	       fid.unique,
	       dentry->d_inode->i_ino,
	       dentry->d_inode->i_ino,
	       dentry->d_inode->i_version);
	       (unsigned long long)dentry->d_inode->i_version);


	return NULL;
	return NULL;
}
}
@@ -630,9 +630,10 @@ static int afs_d_revalidate(struct dentry *dentry, struct nameidata *nd)
		 * been deleted and replaced, and the original vnode ID has
		 * been deleted and replaced, and the original vnode ID has
		 * been reused */
		 * been reused */
		if (fid.unique != vnode->fid.unique) {
		if (fid.unique != vnode->fid.unique) {
			_debug("%s: file deleted (uq %u -> %u I:%lu)",
			_debug("%s: file deleted (uq %u -> %u I:%llu)",
			       dentry->d_name.name, fid.unique,
			       dentry->d_name.name, fid.unique,
			       vnode->fid.unique, dentry->d_inode->i_version);
			       vnode->fid.unique,
			       (unsigned long long)dentry->d_inode->i_version);
			spin_lock(&vnode->lock);
			spin_lock(&vnode->lock);
			set_bit(AFS_VNODE_DELETED, &vnode->flags);
			set_bit(AFS_VNODE_DELETED, &vnode->flags);
			spin_unlock(&vnode->lock);
			spin_unlock(&vnode->lock);
+2 −1
Original line number Original line Diff line number Diff line
@@ -301,7 +301,8 @@ int afs_getattr(struct vfsmount *mnt, struct dentry *dentry,


	inode = dentry->d_inode;
	inode = dentry->d_inode;


	_enter("{ ino=%lu v=%lu }", inode->i_ino, inode->i_version);
	_enter("{ ino=%lu v=%llu }", inode->i_ino,
		(unsigned long long)inode->i_version);


	generic_fillattr(inode, stat);
	generic_fillattr(inode, stat);
	return 0;
	return 0;
Loading