From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jan Kara Subject: Re: [PATCH 18/19] udf: replace inode uid,gid,mode init with helper v3 Date: Fri, 19 Feb 2010 11:56:22 +0100 Message-ID: <20100219105622.GA3432@quack.suse.cz> References: <1266431353-8549-1-git-send-email-dmonakhov@openvz.org> <1266432426-10050-1-git-send-email-dmonakhov@openvz.org> <20100217234301.GC11632@quack.suse.cz> <87bpfn9flj.fsf_-_@openvz.org> <20100218185301.GC3364@quack.suse.cz> <87wryawc74.fsf_-_@openvz.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Jan Kara , linux-fsdevel@vger.kernel.org To: Dmitry Monakhov Return-path: Received: from cantor2.suse.de ([195.135.220.15]:40518 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753847Ab0BSK4O (ORCPT ); Fri, 19 Feb 2010 05:56:14 -0500 Content-Disposition: inline In-Reply-To: <87wryawc74.fsf_-_@openvz.org> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Thu 18-02-10 22:55:43, Dmitry Monakhov wrote: > Jan Kara writes: > > > I think you're still missing to call udf_new_inode with S_IFDIR | mode in > > this function. > Ohh, crap... i dont know what am i thinking about. Really sorry for waisting > your time. Correct patch attached. No problem. Thanks for the patch. This time it looks OK so you can add Acked-by: Jan Kara Since the patch depends on the generic patch, I expect you'll merge it together with it. Honza > > From 42ae3fb0a4f1ac3c1b3338a6d3107363c8c40757 Mon Sep 17 00:00:00 2001 > From: Dmitry Monakhov > Date: Thu, 18 Feb 2010 22:37:09 +0300 > Subject: [PATCH 18/19] udf: replace inode uid,gid,mode init with helper v3 > > > Signed-off-by: Dmitry Monakhov > --- > fs/udf/ialloc.c | 11 ++--------- > fs/udf/namei.c | 10 ++-------- > 2 files changed, 4 insertions(+), 17 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..6297432 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) { > @@ -668,7 +666,7 @@ static int udf_mkdir(struct inode *dir, struct dentry *dentry, int mode) > goto out; > > err = -EIO; > - inode = udf_new_inode(dir, S_IFDIR, &err); > + inode = udf_new_inode(dir, S_IFDIR | mode, &err); > if (!inode) > goto out; > > @@ -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 > -- Jan Kara SUSE Labs, CR