GFS2: Banish struct gfs2_dinode_host
The final field in gfs2_dinode_host was the i_flags field. Thats renamed to i_diskflags in order to avoid confusion with the existing inode flags, and moved into the inode proper at a suitable location to avoid creating a "hole". At that point struct gfs2_dinode_host is no longer needed and as promised (quite some time ago!) it can now be removed completely. Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
This commit is contained in:
@@ -157,8 +157,8 @@ static int gfs2_get_flags(struct file *filp, u32 __user *ptr)
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
fsflags = fsflags_cvt(gfs2_to_fsflags, ip->i_di.di_flags);
|
||||
if (!S_ISDIR(inode->i_mode) && ip->i_di.di_flags & GFS2_DIF_JDATA)
|
||||
fsflags = fsflags_cvt(gfs2_to_fsflags, ip->i_diskflags);
|
||||
if (!S_ISDIR(inode->i_mode) && ip->i_diskflags & GFS2_DIF_JDATA)
|
||||
fsflags |= FS_JOURNAL_DATA_FL;
|
||||
if (put_user(fsflags, ptr))
|
||||
error = -EFAULT;
|
||||
@@ -171,17 +171,16 @@ static int gfs2_get_flags(struct file *filp, u32 __user *ptr)
|
||||
void gfs2_set_inode_flags(struct inode *inode)
|
||||
{
|
||||
struct gfs2_inode *ip = GFS2_I(inode);
|
||||
struct gfs2_dinode_host *di = &ip->i_di;
|
||||
unsigned int flags = inode->i_flags;
|
||||
|
||||
flags &= ~(S_SYNC|S_APPEND|S_IMMUTABLE|S_NOATIME|S_DIRSYNC);
|
||||
if (di->di_flags & GFS2_DIF_IMMUTABLE)
|
||||
if (ip->i_diskflags & GFS2_DIF_IMMUTABLE)
|
||||
flags |= S_IMMUTABLE;
|
||||
if (di->di_flags & GFS2_DIF_APPENDONLY)
|
||||
if (ip->i_diskflags & GFS2_DIF_APPENDONLY)
|
||||
flags |= S_APPEND;
|
||||
if (di->di_flags & GFS2_DIF_NOATIME)
|
||||
if (ip->i_diskflags & GFS2_DIF_NOATIME)
|
||||
flags |= S_NOATIME;
|
||||
if (di->di_flags & GFS2_DIF_SYNC)
|
||||
if (ip->i_diskflags & GFS2_DIF_SYNC)
|
||||
flags |= S_SYNC;
|
||||
inode->i_flags = flags;
|
||||
}
|
||||
@@ -220,7 +219,7 @@ static int do_gfs2_set_flags(struct file *filp, u32 reqflags, u32 mask)
|
||||
if (error)
|
||||
goto out_drop_write;
|
||||
|
||||
flags = ip->i_di.di_flags;
|
||||
flags = ip->i_diskflags;
|
||||
new_flags = (flags & ~mask) | (reqflags & mask);
|
||||
if ((new_flags ^ flags) == 0)
|
||||
goto out;
|
||||
@@ -259,7 +258,7 @@ static int do_gfs2_set_flags(struct file *filp, u32 reqflags, u32 mask)
|
||||
if (error)
|
||||
goto out_trans_end;
|
||||
gfs2_trans_add_bh(ip->i_gl, bh, 1);
|
||||
ip->i_di.di_flags = new_flags;
|
||||
ip->i_diskflags = new_flags;
|
||||
gfs2_dinode_out(ip, bh->b_data);
|
||||
brelse(bh);
|
||||
gfs2_set_inode_flags(inode);
|
||||
|
Fai riferimento in un nuovo problema
Block a user