From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dmitry Monakhov Subject: [PATCH 18/19] udf: replace inode uid,gid,mode init with helper v2 Date: Thu, 18 Feb 2010 10:18:32 +0300 Message-ID: <87bpfn9flj.fsf_-_@openvz.org> References: <1266431353-8549-1-git-send-email-dmonakhov@openvz.org> <1266432426-10050-1-git-send-email-dmonakhov@openvz.org> <20100217234301.GC11632@quack.suse.cz> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Cc: linux-fsdevel@vger.kernel.org To: Jan Kara Return-path: Received: from fg-out-1718.google.com ([72.14.220.154]:62904 "EHLO fg-out-1718.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752434Ab0BRHSf (ORCPT ); Thu, 18 Feb 2010 02:18:35 -0500 Received: by fg-out-1718.google.com with SMTP id l26so329473fgb.1 for ; Wed, 17 Feb 2010 23:18:34 -0800 (PST) In-Reply-To: <20100217234301.GC11632@quack.suse.cz> (Jan Kara's message of "Thu, 18 Feb 2010 00:43:01 +0100") Sender: linux-fsdevel-owner@vger.kernel.org List-ID: --=-=-= Jan Kara writes: > On Wed 17-02-10 21:47:06, Dmitry Monakhov wrote: >> >> Signed-off-by: Dmitry Monakhov >> --- >> fs/udf/ialloc.c | 11 ++--------- >> fs/udf/namei.c | 3 --- >> 2 files changed, 2 insertions(+), 12 deletions(-) > Hmm, this patch looks kind of half baked. There are several calls to > udf_new_inode() in udf/namei.c. From your patch I'd expect they all should > pass correct final mode to udf_new_inode which they currently don't to (the > case of udf_mkdir and udf_symlink). Otherwise I'm fine with this change. Yeah, you right. I was to lazy to check all callers :(. Correct version are follows: --=-=-= Content-Disposition: inline; filename=0018-udf-replace-inode-uid-gid-mode-init-with-helper-v2.patch >>From 612e46abea261e9fdaea5f3285c5deee4f86f162 Mon Sep 17 00:00:00 2001 From: Dmitry Monakhov Date: Thu, 18 Feb 2010 09:42:52 +0300 Subject: [PATCH 18/19] udf: replace inode uid,gid,mode init with helper v2 Signed-off-by: Dmitry Monakhov --- fs/udf/ialloc.c | 11 ++--------- fs/udf/namei.c | 8 +------- 2 files changed, 3 insertions(+), 16 deletions(-) diff --git a/fs/udf/ialloc.c b/fs/udf/ialloc.c index c10fa39..52d6e4d 100644 --- a/fs/udf/ialloc.c +++ b/fs/udf/ialloc.c @@ -124,15 +124,8 @@ struct inode *udf_new_inode(struct inode *dir, int mode, int *err) udf_updated_lvid(sb); } mutex_unlock(&sbi->s_alloc_mutex); - inode->i_mode = mode; - inode->i_uid = current_fsuid(); - if (dir->i_mode & S_ISGID) { - inode->i_gid = dir->i_gid; - if (S_ISDIR(mode)) - mode |= S_ISGID; - } else { - inode->i_gid = current_fsgid(); - } + + inode_init_owner(inode, dir, mode); iinfo->i_location.logicalBlockNum = block; iinfo->i_location.partitionReferenceNum = diff --git a/fs/udf/namei.c b/fs/udf/namei.c index cd21150..5a59b97 100644 --- a/fs/udf/namei.c +++ b/fs/udf/namei.c @@ -577,7 +577,6 @@ static int udf_create(struct inode *dir, struct dentry *dentry, int mode, inode->i_data.a_ops = &udf_aops; inode->i_op = &udf_file_inode_operations; inode->i_fop = &udf_file_operations; - inode->i_mode = mode; mark_inode_dirty(inode); fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err); @@ -623,7 +622,6 @@ static int udf_mknod(struct inode *dir, struct dentry *dentry, int mode, goto out; iinfo = UDF_I(inode); - inode->i_uid = current_fsuid(); init_special_inode(inode, mode, rdev); fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err); if (!fi) { @@ -691,9 +689,6 @@ static int udf_mkdir(struct inode *dir, struct dentry *dentry, int mode) FID_FILE_CHAR_DIRECTORY | FID_FILE_CHAR_PARENT; udf_write_fi(inode, &cfi, fi, &fibh, NULL, NULL); brelse(fibh.sbh); - inode->i_mode = S_IFDIR | mode; - if (dir->i_mode & S_ISGID) - inode->i_mode |= S_ISGID; mark_inode_dirty(inode); fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err); @@ -900,7 +895,7 @@ static int udf_symlink(struct inode *dir, struct dentry *dentry, struct udf_inode_info *iinfo; lock_kernel(); - inode = udf_new_inode(dir, S_IFLNK, &err); + inode = udf_new_inode(dir, S_IFLNK | S_IRWXUGO, &err); if (!inode) goto out; @@ -911,7 +906,6 @@ static int udf_symlink(struct inode *dir, struct dentry *dentry, } iinfo = UDF_I(inode); - inode->i_mode = S_IFLNK | S_IRWXUGO; inode->i_data.a_ops = &udf_symlink_aops; inode->i_op = &page_symlink_inode_operations; -- 1.6.6 --=-=-=--