From: ebiederm@xmission.com (Eric W. Biederman)
To: Tejun Heo <tj@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Greg Kroah-Hartman <gregkh@suse.de>,
linux-kernel@vger.kernel.org,
Cornelia Huck <cornelia.huck@de.ibm.com>,
linux-fsdevel@vger.kernel.org,
"Eric W. Biederman" <ebiederm@aristanetworks.com>
Subject: Re: [PATCH 08/20] sysfs: Optimize just changing the sysfs file mode.
Date: Thu, 21 May 2009 00:54:18 -0700 [thread overview]
Message-ID: <m1skiy3n85.fsf@fess.ebiederm.org> (raw)
In-Reply-To: <4A1502C6.5020103@kernel.org> (Tejun Heo's message of "Thu\, 21 May 2009 16\:29\:10 +0900")
Tejun Heo <tj@kernel.org> writes:
> Eric W. Biederman wrote:
>> From: Eric W. Biederman <ebiederm@xmission.com>
>>
>> Don't allocate a struct iattr for the sysfs dentry if just
>> the mode changes because we have a field for that on the
>> sysfs_dirent, and we can trigger that case with sysfs_chmod_file.
>>
>> Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
>> ---
>> fs/sysfs/inode.c | 22 ++++++++++++++--------
>> 1 files changed, 14 insertions(+), 8 deletions(-)
>>
>> diff --git a/fs/sysfs/inode.c b/fs/sysfs/inode.c
>> index 555f0ff..70ff2a2 100644
>> --- a/fs/sysfs/inode.c
>> +++ b/fs/sysfs/inode.c
>> @@ -60,12 +60,16 @@ int sysfs_setattr(struct dentry * dentry, struct iattr * iattr)
>> return error;
>>
>> iattr->ia_valid &= ~ATTR_SIZE; /* ignore size changes */
>> + if (iattr->ia_valid & ATTR_MODE) {
>> + if (!in_group_p(inode->i_gid) && !capable(CAP_FSETID))
>> + iattr->ia_mode &= ~S_ISGID;
>> + }
>>
>> error = inode_setattr(inode, iattr);
>> if (error)
>> return error;
>>
>> - if (!sd_iattr) {
>> + if (!sd_iattr && (ia_valid & ~ATTR_MODE)) {
>> /* setting attributes for the first time, allocate now */
>> sd_iattr = kzalloc(sizeof(struct iattr), GFP_KERNEL);
>> if (!sd_iattr)
>> @@ -78,6 +82,13 @@ int sysfs_setattr(struct dentry * dentry, struct iattr * iattr)
>> sd->s_iattr = sd_iattr;
>> }
>>
>> + if (ia_valid & ATTR_MODE)
>> + sd->s_mode = iattr->ia_mode;
>> +
>> + /* If we don't need the extra attributes leave */
>> + if (!sd_iattr)
>> + return 0;
>
> One visible difference is lack of timestamp update. Is there any use
> case where sysfs file mode changing needs to be fast?\
Not really. If the time changes we set something besides ATTR_MODE
like ATTR_MTIME or ATTR_CTIME. If we come in through any of the
user space entry points ATTR_CTIME appears to be set so this optimization
will not trigger.
I think there are cases where we only opportunistically track time
changes, when the structure is allocated that this changes but it
is a very small percentage of the time.
The practical effect of my changes should be that we only track timestamps
when user space actually performs an explicit change to the file.
If someone was depending on some weird indirect side effect like that
on one of the 5-6 files that calls sysfs_chmod let's make it explicit.
For me this isn't about making this go faster. This is about keeping
the sysfs data structures small when we can.
It doesn't really complicate the code and we wind up doing the obvious thing.
Eric
next prev parent reply other threads:[~2009-05-21 7:54 UTC|newest]
Thread overview: 197+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-20 4:09 [PATCH 0/20] Sysfs cleanups Eric W. Biederman
2009-05-20 15:37 ` Greg KH
2009-05-20 23:04 ` Eric W. Biederman
2009-05-21 0:27 ` [PATCH 01/20] sysfs: Implement sysfs_rename_link Eric W. Biederman
2009-05-21 0:27 ` [PATCH 02/20] driver core: Use sysfs_rename_link in device_rename Eric W. Biederman
2009-05-21 0:27 ` [PATCH 03/20] sysfs: Remove now unnecessary error reporting suppression Eric W. Biederman
2009-05-21 0:27 ` [PATCH 04/20] sysfs: Handle the general case of removing of directories with subdirectories Eric W. Biederman
2009-05-21 0:27 ` [PATCH 05/20] sysfs: Rename sysfs_d_iput to sysfs_dentry_iput Eric W. Biederman
2009-05-21 0:28 ` [PATCH 06/20] sysfs: Use dentry_ops instead of directly playing with the dcache Eric W. Biederman
2009-05-21 0:28 ` [PATCH 07/20] sysfs: Simplify sysfs_chmod_file semantics Eric W. Biederman
2009-05-21 0:28 ` [PATCH 08/20] sysfs: Optimize just changing the sysfs file mode Eric W. Biederman
2009-05-21 0:28 ` [PATCH 09/20] sysfs: Simplify iattr assignments Eric W. Biederman
2009-05-21 0:28 ` [PATCH 10/20] sysfs: Fix locking and factor out sysfs_sd_setattr Eric W. Biederman
2009-05-21 0:28 ` [PATCH 11/20] sysfs: Update s_iattr on link and unlink Eric W. Biederman
2009-05-21 0:28 ` [PATCH 12/20] sysfs: Nicely indent sysfs_symlink_inode_operations Eric W. Biederman
2009-05-21 0:28 ` [PATCH 13/20] sysfs: Implement sysfs_getattr & sysfs_permission Eric W. Biederman
2009-05-21 0:28 ` [PATCH 14/20] sysfs: In sysfs_chmod_file lazily propagate the mode change Eric W. Biederman
2009-05-21 0:28 ` [PATCH 15/20] sysfs: Kill sysfs_addrm_start and sysfs_addrm_finish Eric W. Biederman
2009-05-21 0:28 ` [PATCH 16/20] sysfs: Propagate renames to the vfs on demand Eric W. Biederman
2009-05-21 0:28 ` [PATCH 17/20] sysfs: Merge sysfs_rename_dir and sysfs_move_dir Eric W. Biederman
2009-05-21 0:28 ` [PATCH 18/20] sysfs: Pass super_block to sysfs_get_inode Eric W. Biederman
2009-05-21 0:28 ` [PATCH 19/20] sysfs: Kill unused sysfs_sb variable Eric W. Biederman
2009-05-21 0:28 ` [PATCH 20/20] sysfs: Normalize error handling in sysfs_fill_inode Eric W. Biederman
2009-05-21 9:43 ` Tejun Heo
2009-05-21 10:29 ` Eric W. Biederman
2009-05-21 9:42 ` [PATCH 17/20] sysfs: Merge sysfs_rename_dir and sysfs_move_dir Tejun Heo
2009-05-21 9:41 ` [PATCH 16/20] sysfs: Propagate renames to the vfs on demand Tejun Heo
2009-05-21 9:31 ` [PATCH 15/20] sysfs: Kill sysfs_addrm_start and sysfs_addrm_finish Tejun Heo
2009-05-21 9:16 ` [PATCH 14/20] sysfs: In sysfs_chmod_file lazily propagate the mode change Tejun Heo
2009-05-21 9:14 ` [PATCH 13/20] sysfs: Implement sysfs_getattr & sysfs_permission Tejun Heo
2009-05-21 7:42 ` [PATCH 12/20] sysfs: Nicely indent sysfs_symlink_inode_operations Tejun Heo
2009-05-21 8:42 ` [PATCH 11/20] sysfs: Update s_iattr on link and unlink Tejun Heo
2009-05-21 7:42 ` [PATCH 10/20] sysfs: Fix locking and factor out sysfs_sd_setattr Tejun Heo
2009-05-21 7:31 ` [PATCH 09/20] sysfs: Simplify iattr assignments Tejun Heo
2009-05-21 7:29 ` [PATCH 08/20] sysfs: Optimize just changing the sysfs file mode Tejun Heo
2009-05-21 7:54 ` Eric W. Biederman [this message]
2009-05-21 8:41 ` Tejun Heo
2009-05-21 6:42 ` [PATCH 07/20] sysfs: Simplify sysfs_chmod_file semantics Tejun Heo
2009-05-21 6:41 ` [PATCH 06/20] sysfs: Use dentry_ops instead of directly playing with the dcache Tejun Heo
2009-05-21 7:37 ` Eric W. Biederman
2009-05-21 7:40 ` Tejun Heo
2009-05-21 6:24 ` [PATCH 05/20] sysfs: Rename sysfs_d_iput to sysfs_dentry_iput Tejun Heo
2009-05-21 6:23 ` [PATCH 04/20] sysfs: Handle the general case of removing of directories with subdirectories Tejun Heo
2009-05-21 7:29 ` Eric W. Biederman
2009-05-21 7:36 ` Tejun Heo
2009-05-21 8:04 ` Eric W. Biederman
2009-05-21 8:37 ` Tejun Heo
2009-05-21 9:18 ` Eric W. Biederman
2009-05-21 9:28 ` Tejun Heo
2009-05-23 6:33 ` Eric W. Biederman
2009-05-23 11:35 ` Kay Sievers
2009-05-23 20:09 ` Eric W. Biederman
2009-05-23 20:46 ` Kay Sievers
2009-05-21 5:37 ` [PATCH 03/20] sysfs: Remove now unnecessary error reporting suppression Tejun Heo
2009-05-21 6:12 ` Eric W. Biederman
2009-05-21 6:20 ` Tejun Heo
2009-05-21 1:49 ` [PATCH 01/20] sysfs: Implement sysfs_rename_link Tejun Heo
2009-05-21 5:35 ` Tejun Heo
2009-05-21 10:06 ` Kay Sievers
2009-05-21 10:29 ` Eric W. Biederman
2009-05-21 11:40 ` Kay Sievers
2009-05-28 0:14 ` Greg KH
2009-05-28 0:30 ` Kay Sievers
2009-05-28 0:37 ` Greg KH
2009-05-28 22:58 ` [PATCH 0/24] sysfs cleanups Eric W. Biederman
2009-05-28 23:00 ` [PATCH 01/24] sysfs: Implement sysfs_rename_link Eric W. Biederman
2009-05-28 23:00 ` [PATCH 02/24] driver core: Use sysfs_rename_link in device_rename Eric W. Biederman
2009-05-28 23:00 ` [PATCH 03/24] sysfs: Remove now unnecessary error reporting suppression Eric W. Biederman
2009-05-28 23:00 ` [PATCH 04/24] sysfs: Normalize removing sysfs directories Eric W. Biederman
2009-05-29 9:14 ` Tejun Heo
2009-05-29 16:52 ` Eric W. Biederman
2009-05-30 10:43 ` Tejun Heo
2009-05-30 13:07 ` Eric W. Biederman
2009-05-30 13:20 ` Tejun Heo
2009-05-30 14:29 ` Eric W. Biederman
2009-05-30 13:59 ` Kay Sievers
2009-05-30 14:19 ` James Bottomley
2009-05-30 15:15 ` Eric W. Biederman
2009-05-30 15:51 ` James Bottomley
2009-05-30 21:20 ` Eric W. Biederman
2009-05-28 23:00 ` [PATCH 05/24] sysfs: Rename sysfs_d_iput to sysfs_dentry_iput Eric W. Biederman
2009-05-28 23:00 ` [PATCH 06/24] sysfs: Use dentry_ops instead of directly playing with the dcache Eric W. Biederman
2009-05-28 23:00 ` [PATCH 07/24] sysfs: Simplify sysfs_chmod_file semantics Eric W. Biederman
2009-05-28 23:00 ` [PATCH 08/24] sysfs: Optimize just changing the sysfs file mode Eric W. Biederman
2009-05-28 23:00 ` [PATCH 09/24] sysfs: Simplify iattr assignments Eric W. Biederman
2009-05-28 23:00 ` [PATCH 10/24] sysfs: Fix locking and factor out sysfs_sd_setattr Eric W. Biederman
2009-05-28 23:00 ` [PATCH 11/24] sysfs: Update s_iattr on link and unlink Eric W. Biederman
2009-05-28 23:00 ` [PATCH 12/24] sysfs: Nicely indent sysfs_symlink_inode_operations Eric W. Biederman
2009-05-28 23:00 ` [PATCH 13/24] sysfs: Implement sysfs_getattr & sysfs_permission Eric W. Biederman
2009-05-28 23:00 ` [PATCH 14/24] sysfs: In sysfs_chmod_file lazily propagate the mode change Eric W. Biederman
2009-05-28 23:00 ` [PATCH 15/24] sysfs: Kill sysfs_addrm_start and sysfs_addrm_finish Eric W. Biederman
2009-05-28 23:00 ` [PATCH 16/24] sysfs: Propagate renames to the vfs on demand Eric W. Biederman
2009-05-28 23:00 ` [PATCH 17/24] sysfs: Merge sysfs_rename_dir and sysfs_move_dir Eric W. Biederman
2009-05-28 23:00 ` [PATCH 18/24] sysfs: Pass super_block to sysfs_get_inode Eric W. Biederman
2009-05-28 23:01 ` [PATCH 19/24] sysfs: Kill unused sysfs_sb variable Eric W. Biederman
2009-05-28 23:01 ` [PATCH 20/24] sysfs: Normalize error handling in sysfs_fill_inode Eric W. Biederman
2009-05-28 23:01 ` [PATCH 21/24] sysfs: Rename sysfs_mv_dir sysfs_rename Eric W. Biederman
2009-05-28 23:01 ` [PATCH 22/24] sysfs: Make sysfs_rename_link atomic Eric W. Biederman
2009-05-29 9:16 ` Tejun Heo
2009-05-29 17:17 ` Eric W. Biederman
2009-05-30 10:48 ` Tejun Heo
2009-05-28 23:01 ` [PATCH 23/24] driver core: Don't remove kobjects in device_shutdown Eric W. Biederman
2009-05-28 23:01 ` [PATCH 24/24] sysfs: In sysfs_add_one fail if the targe directory has been removed Eric W. Biederman
2009-05-29 9:18 ` Tejun Heo
2009-05-29 20:18 ` [PATCH 0/26] sysfs cleanups v3 Eric W. Biederman
2009-05-29 20:19 ` [PATCH 01/26] sysfs: Implement sysfs_rename_link Eric W. Biederman
2009-05-29 20:19 ` [PATCH 02/26] driver core: Use sysfs_rename_link in device_rename Eric W. Biederman
2009-05-29 20:19 ` [PATCH 03/26] sysfs: Remove now unnecessary error reporting suppression Eric W. Biederman
2009-05-29 20:19 ` [PATCH 04/26] sysfs: sysfs_remove_dir stop checking for bogus cases Eric W. Biederman
2009-06-03 23:53 ` Greg KH
2009-06-04 0:41 ` Eric W. Biederman
2009-05-29 20:19 ` [PATCH 05/26] sysfs: Improve sysfs directory deletion debugging Eric W. Biederman
2009-05-29 20:19 ` [PATCH 06/26] sysfs: Don't hold addrm_start/addrm_finish over multiple removals Eric W. Biederman
2009-05-29 20:19 ` [PATCH 07/26] sysfs: Rename sysfs_d_iput to sysfs_dentry_iput Eric W. Biederman
2009-05-29 20:19 ` [PATCH 08/26] sysfs: Use dentry_ops instead of directly playing with the dcache Eric W. Biederman
2009-05-29 20:19 ` [PATCH 09/26] sysfs: Simplify sysfs_chmod_file semantics Eric W. Biederman
2009-05-29 20:19 ` [PATCH 10/26] sysfs: Optimize just changing the sysfs file mode Eric W. Biederman
2009-05-29 20:19 ` [PATCH 11/26] sysfs: Simplify iattr assignments Eric W. Biederman
2009-05-29 20:19 ` [PATCH 12/26] sysfs: Fix locking and factor out sysfs_sd_setattr Eric W. Biederman
2009-05-29 20:19 ` [PATCH 13/26] sysfs: Update s_iattr on link and unlink Eric W. Biederman
2009-05-29 20:19 ` [PATCH 14/26] sysfs: Nicely indent sysfs_symlink_inode_operations Eric W. Biederman
2009-05-29 20:19 ` [PATCH 15/26] sysfs: Implement sysfs_getattr & sysfs_permission Eric W. Biederman
2009-05-29 20:19 ` [PATCH 16/26] sysfs: In sysfs_chmod_file lazily propagate the mode change Eric W. Biederman
2009-05-29 20:19 ` [PATCH 17/26] sysfs: Kill sysfs_addrm_start and sysfs_addrm_finish Eric W. Biederman
2009-05-29 20:19 ` [PATCH 18/26] sysfs: Propagate renames to the vfs on demand Eric W. Biederman
2009-05-29 20:19 ` [PATCH 19/26] sysfs: Merge sysfs_rename_dir and sysfs_move_dir Eric W. Biederman
2009-05-29 20:19 ` [PATCH 20/26] sysfs: Pass super_block to sysfs_get_inode Eric W. Biederman
2009-05-29 20:19 ` [PATCH 21/26] sysfs: Kill unused sysfs_sb variable Eric W. Biederman
2009-05-29 20:19 ` [PATCH 22/26] sysfs: Normalize error handling in sysfs_fill_inode Eric W. Biederman
2009-05-29 20:19 ` [PATCH 23/26] sysfs: Rename sysfs_mv_dir sysfs_rename Eric W. Biederman
2009-05-29 20:19 ` [PATCH 24/26] sysfs: Make sysfs_rename_link atomic Eric W. Biederman
2009-05-29 20:19 ` [PATCH 25/26] driver core: Don't remove kobjects in device_shutdown Eric W. Biederman
2009-05-29 20:19 ` [PATCH 26/26] sysfs: In sysfs_add_one fail if the targe directory has been removed Eric W. Biederman
2009-05-28 1:51 ` [PATCH 01/20] sysfs: Implement sysfs_rename_link Eric W. Biederman
2009-05-23 20:13 ` [PATCH 21/20] sysfs: Rename sysfs_mv_dir sysfs_rename Eric W. Biederman
2009-05-23 20:13 ` [PATCH 22/20] sysfs: Make sysfs_rename_link atomic Eric W. Biederman
2009-05-23 21:32 ` Kay Sievers
2009-05-23 23:21 ` Kay Sievers
2009-05-24 13:03 ` Kay Sievers
2009-05-23 20:13 ` [PATCH 23/20] driver core: Don't remove kobjects in device_shutdown Eric W. Biederman
2009-05-23 22:15 ` Kay Sievers
2009-05-23 20:13 ` [PATCH 24/20] sysfs: In sysfs_add_one fail if the targe directory has been removed Eric W. Biederman
2009-05-23 21:29 ` Kay Sievers
2009-05-23 20:13 ` [PATCH 25/20] sysfs: Only support removing emtpy sysfs directories Eric W. Biederman
2009-05-23 21:27 ` Kay Sievers
2009-05-24 12:59 ` Kay Sievers
2009-05-24 14:17 ` Eric W. Biederman
2009-05-24 15:20 ` Kay Sievers
2009-05-25 2:06 ` Alan Stern
2009-05-25 11:45 ` Kay Sievers
2009-05-25 12:01 ` Kay Sievers
2009-05-25 15:49 ` Alan Stern
2009-05-25 18:19 ` Kay Sievers
2009-05-25 20:14 ` Alan Stern
2009-05-26 16:27 ` Kay Sievers
2009-05-26 19:29 ` Alan Stern
2009-05-26 21:09 ` James Bottomley
2009-05-26 21:13 ` Kay Sievers
2009-05-26 21:56 ` Alan Stern
2009-05-26 22:03 ` Kay Sievers
2009-05-26 23:49 ` James Bottomley
2009-05-27 0:02 ` Kay Sievers
2009-05-27 2:17 ` Alan Stern
2009-05-27 11:35 ` Hannes Reinecke
2009-05-27 16:01 ` James Bottomley
2009-05-27 16:16 ` Alan Stern
2009-05-27 16:24 ` James Bottomley
2009-05-27 17:01 ` Alan Stern
2009-05-27 17:08 ` James Bottomley
2009-05-27 18:07 ` Alan Stern
2009-05-27 19:44 ` James Bottomley
2009-05-27 20:40 ` Alan Stern
2009-05-27 20:49 ` James Bottomley
2009-05-27 21:31 ` Alan Stern
2009-05-27 21:42 ` James Bottomley
2009-05-27 22:15 ` Alan Stern
2009-05-27 22:22 ` James Bottomley
2009-05-28 15:24 ` Alan Stern
2009-05-28 15:45 ` Eric W. Biederman
2009-05-28 17:51 ` Alan Stern
2009-05-28 18:21 ` James Bottomley
2009-05-28 20:02 ` Alan Stern
2009-05-28 20:10 ` James Bottomley
2009-05-28 21:04 ` Alan Stern
2009-05-29 12:32 ` Hannes Reinecke
2009-05-29 20:08 ` Alan Stern
2009-05-27 18:00 ` Eric W. Biederman
2009-05-27 18:15 ` Alan Stern
2009-05-27 18:24 ` Eric W. Biederman
2009-05-27 21:38 ` Alan Stern
2009-05-27 22:06 ` Eric W. Biederman
2009-05-27 22:18 ` Alan Stern
2009-05-26 21:39 ` Alan Stern
2009-05-25 7:44 ` Eric W. Biederman
2009-05-25 7:53 ` Eric W. Biederman
2009-05-25 10:51 ` Kay Sievers
2009-05-24 3:24 ` Tejun Heo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m1skiy3n85.fsf@fess.ebiederm.org \
--to=ebiederm@xmission.com \
--cc=akpm@linux-foundation.org \
--cc=cornelia.huck@de.ibm.com \
--cc=ebiederm@aristanetworks.com \
--cc=gregkh@suse.de \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tj@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox