summaryrefslogtreecommitdiff
path: root/fs/ext2
diff options
context:
space:
mode:
authorAndy Grover <agrover@groveronline.com>2003-03-19 00:09:51 -0800
committerAndy Grover <agrover@groveronline.com>2003-03-19 00:09:51 -0800
commitb39e199b453be169dfd1adec9686978057c1dc0f (patch)
treedd7162a8e62d003159d6250069194b48a72b76d0 /fs/ext2
parent99d5dfb972d15c955e274d3f67e3862ce8004311 (diff)
parentd99c48c60bc52561b3125dd1f85db7a77b7031ca (diff)
Merge groveronline.com:/root/bk/linux-2.5
into groveronline.com:/root/bk/linux-acpi
Diffstat (limited to 'fs/ext2')
-rw-r--r--fs/ext2/balloc.c2
-rw-r--r--fs/ext2/ext2.h1
-rw-r--r--fs/ext2/ialloc.c5
-rw-r--r--fs/ext2/inode.c26
-rw-r--r--fs/ext2/ioctl.c17
5 files changed, 22 insertions, 29 deletions
diff --git a/fs/ext2/balloc.c b/fs/ext2/balloc.c
index e5bee153791a..40868d403f0b 100644
--- a/fs/ext2/balloc.c
+++ b/fs/ext2/balloc.c
@@ -395,7 +395,7 @@ int ext2_new_block (struct inode * inode, unsigned long goal,
goto io_error;
group_alloc = group_reserve_blocks(desc, gdp_bh, es_alloc);
}
- if (bit >= sbi->s_groups_count) {
+ if (!group_alloc) {
*err = -ENOSPC;
goto out_release;
}
diff --git a/fs/ext2/ext2.h b/fs/ext2/ext2.h
index 7850dcbe7bf1..610695289845 100644
--- a/fs/ext2/ext2.h
+++ b/fs/ext2/ext2.h
@@ -112,6 +112,7 @@ extern int ext2_sync_inode (struct inode *);
extern void ext2_discard_prealloc (struct inode *);
extern void ext2_truncate (struct inode *);
extern int ext2_setattr (struct dentry *, struct iattr *);
+extern void ext2_set_inode_flags(struct inode *inode);
/* ioctl.c */
extern int ext2_ioctl (struct inode *, struct file *, unsigned int,
diff --git a/fs/ext2/ialloc.c b/fs/ext2/ialloc.c
index 345e7495176d..87b2d99f4a7c 100644
--- a/fs/ext2/ialloc.c
+++ b/fs/ext2/ialloc.c
@@ -545,10 +545,7 @@ repeat:
ei->i_prealloc_count = 0;
ei->i_dir_start_lookup = 0;
ei->i_state = EXT2_STATE_NEW;
- if (ei->i_flags & EXT2_SYNC_FL)
- inode->i_flags |= S_SYNC;
- if (ei->i_flags & EXT2_DIRSYNC_FL)
- inode->i_flags |= S_DIRSYNC;
+ ext2_set_inode_flags(inode);
inode->i_generation = EXT2_SB(sb)->s_next_generation++;
insert_inode_hash(inode);
diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c
index e47f84e305cd..c2fbefdd3613 100644
--- a/fs/ext2/inode.c
+++ b/fs/ext2/inode.c
@@ -1011,6 +1011,23 @@ Egdp:
return ERR_PTR(-EIO);
}
+void ext2_set_inode_flags(struct inode *inode)
+{
+ unsigned int flags = EXT2_I(inode)->i_flags;
+
+ inode->i_flags &= ~(S_SYNC|S_APPEND|S_IMMUTABLE|S_NOATIME|S_DIRSYNC);
+ if (flags & EXT2_SYNC_FL)
+ inode->i_flags |= S_SYNC;
+ if (flags & EXT2_APPEND_FL)
+ inode->i_flags |= S_APPEND;
+ if (flags & EXT2_IMMUTABLE_FL)
+ inode->i_flags |= S_IMMUTABLE;
+ if (flags & EXT2_NOATIME_FL)
+ inode->i_flags |= S_NOATIME;
+ if (flags & EXT2_DIRSYNC_FL)
+ inode->i_flags |= S_DIRSYNC;
+}
+
void ext2_read_inode (struct inode * inode)
{
struct ext2_inode_info *ei = EXT2_I(inode);
@@ -1108,14 +1125,7 @@ void ext2_read_inode (struct inode * inode)
le32_to_cpu(raw_inode->i_block[0]));
}
brelse (bh);
- if (ei->i_flags & EXT2_SYNC_FL)
- inode->i_flags |= S_SYNC;
- if (ei->i_flags & EXT2_APPEND_FL)
- inode->i_flags |= S_APPEND;
- if (ei->i_flags & EXT2_IMMUTABLE_FL)
- inode->i_flags |= S_IMMUTABLE;
- if (ei->i_flags & EXT2_NOATIME_FL)
- inode->i_flags |= S_NOATIME;
+ ext2_set_inode_flags(inode);
return;
bad_inode:
diff --git a/fs/ext2/ioctl.c b/fs/ext2/ioctl.c
index afff8566f3b6..101055bbf519 100644
--- a/fs/ext2/ioctl.c
+++ b/fs/ext2/ioctl.c
@@ -58,22 +58,7 @@ int ext2_ioctl (struct inode * inode, struct file * filp, unsigned int cmd,
flags |= oldflags & ~EXT2_FL_USER_MODIFIABLE;
ei->i_flags = flags;
- if (flags & EXT2_SYNC_FL)
- inode->i_flags |= S_SYNC;
- else
- inode->i_flags &= ~S_SYNC;
- if (flags & EXT2_APPEND_FL)
- inode->i_flags |= S_APPEND;
- else
- inode->i_flags &= ~S_APPEND;
- if (flags & EXT2_IMMUTABLE_FL)
- inode->i_flags |= S_IMMUTABLE;
- else
- inode->i_flags &= ~S_IMMUTABLE;
- if (flags & EXT2_NOATIME_FL)
- inode->i_flags |= S_NOATIME;
- else
- inode->i_flags &= ~S_NOATIME;
+ ext2_set_inode_flags(inode);
inode->i_ctime = CURRENT_TIME;
mark_inode_dirty(inode);
return 0;