linux_dsm_epyc7002/fs/ext4
Dmitry Monakhov 3d287de3b8 ext4: optimize orphan_list handling for ext4_setattr
Surprisingly chown() on ext4 is not SMP scalable operation. 
Due to unconditional orphan_del(NULL, inode) in ext4_setattr()
result in significant performance overhead because of global orphan
mutex, especially in no-journal mode (where orphan_add() is noop).
It is possible to skip explicit orphan_del if possible.
Results of fchown() micro-benchmark in no-journal mode
while (1) {
   iteration++;
   fchown(fd, uid, gid);
   fchown(fd, uid + 1, gid + 1)
}
measured: iterations per millisecond
| nr_tasks | w/o patch | with patch |
|        1 |       142 |        185 |
|        4 |       109 |        642 |

Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
2010-10-27 22:08:46 -04:00
..
acl.c ext4: update ctime when changing the file's permission by setfacl 2010-06-15 12:19:59 -04:00
acl.h ext[234]: move over to 'check_acl' permission model 2009-09-08 11:09:04 -07:00
balloc.c ext4: rename mark_bitmap_end() to ext4_mark_bitmap_end() 2010-10-27 21:30:15 -04:00
bitmap.c ext4: Change unsigned long to unsigned int 2008-11-05 00:14:04 -05:00
block_validity.c ext4: rename {exit,init}_ext4_*() to ext4_{exit,init}_*() 2010-10-27 21:30:14 -04:00
dir.c ext4: improve llseek error handling for overly large seek offsets 2010-10-27 21:30:06 -04:00
ext4_extents.h ext4: rename {ext,idx}_pblock and inline small extent functions 2010-10-27 21:30:14 -04:00
ext4_jbd2.c ext4: Pass line numbers to ext4_error() and friends 2010-07-27 11:56:40 -04:00
ext4_jbd2.h ext4: Pass line numbers to ext4_error() and friends 2010-07-27 11:56:40 -04:00
ext4.h ext4: move ext4_mb_{get,put}_buddy_cache_lock and make them static 2010-10-27 21:30:15 -04:00
extents.c ext4: fix compile error in ext4_fallocate() 2010-10-27 21:30:15 -04:00
file.c ext4: improve llseek error handling for overly large seek offsets 2010-10-27 21:30:06 -04:00
fsync.c ext4: move flush_completed_IO to fs/ext4/fsync.c and make it static 2010-10-27 21:30:14 -04:00
hash.c ext4: Add support for non-native signed/unsigned htree hash algorithms 2008-10-28 13:21:44 -04:00
ialloc.c ext4: rename mark_bitmap_end() to ext4_mark_bitmap_end() 2010-10-27 21:30:15 -04:00
inode.c ext4: optimize orphan_list handling for ext4_setattr 2010-10-27 22:08:46 -04:00
ioctl.c ext4: Drop whitespace at end of lines 2010-05-17 07:00:00 -04:00
Kconfig ext4: Don't ask about supporting ext2/3 in ext4 if ext4 is not configured 2009-12-21 10:54:09 -05:00
Makefile ext4: use bio layer instead of buffer layer in mpage_da_submit_io 2010-10-27 21:30:10 -04:00
mballoc.c ext4: move ext4_mb_{get,put}_buddy_cache_lock and make them static 2010-10-27 21:30:15 -04:00
mballoc.h ext4: consolidate in_range() definitions 2010-03-03 23:55:01 -05:00
migrate.c ext4: rename {ext,idx}_pblock and inline small extent functions 2010-10-27 21:30:14 -04:00
move_extent.c ext4: rename {ext,idx}_pblock and inline small extent functions 2010-10-27 21:30:14 -04:00
namei.c ext4: use search_dirblock() in ext4_dx_find_entry() 2010-10-27 21:30:08 -04:00
page-io.c ext4: rename {exit,init}_ext4_*() to ext4_{exit,init}_*() 2010-10-27 21:30:14 -04:00
resize.c ext4: rename mark_bitmap_end() to ext4_mark_bitmap_end() 2010-10-27 21:30:15 -04:00
super.c ext4: fix unbalanced mutex unlock in error path of ext4_li_request_new 2010-10-27 22:08:42 -04:00
symlink.c ext4: symlink must be handled via filesystem specific operation 2010-05-16 02:00:00 -04:00
xattr_security.c ext4: constify xattr_handler 2010-05-21 18:31:19 -04:00
xattr_trusted.c ext4: constify xattr_handler 2010-05-21 18:31:19 -04:00
xattr_user.c ext4: constify xattr_handler 2010-05-21 18:31:19 -04:00
xattr.c ext4: rename {exit,init}_ext4_*() to ext4_{exit,init}_*() 2010-10-27 21:30:14 -04:00
xattr.h ext4: rename {exit,init}_ext4_*() to ext4_{exit,init}_*() 2010-10-27 21:30:14 -04:00