Message ID | 1444604337-17651-24-git-send-email-andreas.gruenbacher@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, Oct 12, 2015 at 12:58:34AM +0200, Andreas Gruenbacher wrote: > From: Andreas Gruenbacher <agruenba@redhat.com> > > Make xfs_set_mode non-static and move it from xfs_acl.c into xfs_inode.c. > > Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com> ..... > +++ b/fs/xfs/xfs_inode.c > @@ -3587,3 +3587,21 @@ xfs_iflush_int( > corrupt_out: > return -EFSCORRUPTED; > } > + > +int > +xfs_set_mode(struct inode *inode, umode_t mode) > +{ > + int error = 0; > + > + if (mode != inode->i_mode) { > + struct iattr iattr; > + > + iattr.ia_valid = ATTR_MODE | ATTR_CTIME; > + iattr.ia_mode = mode; > + iattr.ia_ctime = current_fs_time(inode->i_sb); > + > + error = xfs_setattr_nonsize(XFS_I(inode), &iattr, XFS_ATTR_NOACL); > + } > + > + return error; > +} Now needs a comment to explain that this function has a special "called only from ACL modification" context associated with it. Cheers, Dave.
diff --git a/fs/xfs/xfs_acl.c b/fs/xfs/xfs_acl.c index 0f4ee92..8929466 100644 --- a/fs/xfs/xfs_acl.c +++ b/fs/xfs/xfs_acl.c @@ -226,24 +226,6 @@ __xfs_set_acl(struct inode *inode, int type, struct posix_acl *acl) } static int -xfs_set_mode(struct inode *inode, umode_t mode) -{ - int error = 0; - - if (mode != inode->i_mode) { - struct iattr iattr; - - iattr.ia_valid = ATTR_MODE | ATTR_CTIME; - iattr.ia_mode = mode; - iattr.ia_ctime = current_fs_time(inode->i_sb); - - error = xfs_setattr_nonsize(XFS_I(inode), &iattr, XFS_ATTR_NOACL); - } - - return error; -} - -static int xfs_acl_exists(struct inode *inode, unsigned char *name) { int len = XFS_ACL_MAX_SIZE(XFS_M(inode->i_sb)); diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index dc40a6d..69148fa 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -3587,3 +3587,21 @@ xfs_iflush_int( corrupt_out: return -EFSCORRUPTED; } + +int +xfs_set_mode(struct inode *inode, umode_t mode) +{ + int error = 0; + + if (mode != inode->i_mode) { + struct iattr iattr; + + iattr.ia_valid = ATTR_MODE | ATTR_CTIME; + iattr.ia_mode = mode; + iattr.ia_ctime = current_fs_time(inode->i_sb); + + error = xfs_setattr_nonsize(XFS_I(inode), &iattr, XFS_ATTR_NOACL); + } + + return error; +} diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h index ca9e119..7b22db0 100644 --- a/fs/xfs/xfs_inode.h +++ b/fs/xfs/xfs_inode.h @@ -424,6 +424,8 @@ int xfs_dir_ialloc(struct xfs_trans **, struct xfs_inode *, umode_t, int xfs_droplink(struct xfs_trans *, struct xfs_inode *); int xfs_bumplink(struct xfs_trans *, struct xfs_inode *); +int xfs_set_mode(struct inode *, umode_t); + /* from xfs_file.c */ enum xfs_prealloc_flags { XFS_PREALLOC_SET = (1 << 1),