aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ufs/ialloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ufs/ialloc.c')
-rw-r--r--fs/ufs/ialloc.c25
1 files changed, 1 insertions, 24 deletions
diff --git a/fs/ufs/ialloc.c b/fs/ufs/ialloc.c
index 230ecf608026..428017e018fe 100644
--- a/fs/ufs/ialloc.c
+++ b/fs/ufs/ialloc.c
@@ -27,7 +27,6 @@
27#include <linux/time.h> 27#include <linux/time.h>
28#include <linux/stat.h> 28#include <linux/stat.h>
29#include <linux/string.h> 29#include <linux/string.h>
30#include <linux/quotaops.h>
31#include <linux/buffer_head.h> 30#include <linux/buffer_head.h>
32#include <linux/sched.h> 31#include <linux/sched.h>
33#include <linux/bitops.h> 32#include <linux/bitops.h>
@@ -95,11 +94,6 @@ void ufs_free_inode (struct inode * inode)
95 94
96 is_directory = S_ISDIR(inode->i_mode); 95 is_directory = S_ISDIR(inode->i_mode);
97 96
98 dquot_free_inode(inode);
99 dquot_drop(inode);
100
101 clear_inode (inode);
102
103 if (ubh_isclr (UCPI_UBH(ucpi), ucpi->c_iusedoff, bit)) 97 if (ubh_isclr (UCPI_UBH(ucpi), ucpi->c_iusedoff, bit))
104 ufs_error(sb, "ufs_free_inode", "bit already cleared for inode %u", ino); 98 ufs_error(sb, "ufs_free_inode", "bit already cleared for inode %u", ino);
105 else { 99 else {
@@ -303,15 +297,7 @@ cg_found:
303 sb->s_dirt = 1; 297 sb->s_dirt = 1;
304 298
305 inode->i_ino = cg * uspi->s_ipg + bit; 299 inode->i_ino = cg * uspi->s_ipg + bit;
306 inode->i_mode = mode; 300 inode_init_owner(inode, dir, mode);
307 inode->i_uid = current_fsuid();
308 if (dir->i_mode & S_ISGID) {
309 inode->i_gid = dir->i_gid;
310 if (S_ISDIR(mode))
311 inode->i_mode |= S_ISGID;
312 } else
313 inode->i_gid = current_fsgid();
314
315 inode->i_blocks = 0; 301 inode->i_blocks = 0;
316 inode->i_generation = 0; 302 inode->i_generation = 0;
317 inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME_SEC; 303 inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME_SEC;
@@ -355,21 +341,12 @@ cg_found:
355 341
356 unlock_super (sb); 342 unlock_super (sb);
357 343
358 dquot_initialize(inode);
359 err = dquot_alloc_inode(inode);
360 if (err) {
361 dquot_drop(inode);
362 goto fail_without_unlock;
363 }
364
365 UFSD("allocating inode %lu\n", inode->i_ino); 344 UFSD("allocating inode %lu\n", inode->i_ino);
366 UFSD("EXIT\n"); 345 UFSD("EXIT\n");
367 return inode; 346 return inode;
368 347
369fail_remove_inode: 348fail_remove_inode:
370 unlock_super(sb); 349 unlock_super(sb);
371fail_without_unlock:
372 inode->i_flags |= S_NOQUOTA;
373 inode->i_nlink = 0; 350 inode->i_nlink = 0;
374 iput(inode); 351 iput(inode);
375 UFSD("EXIT (FAILED): err %d\n", err); 352 UFSD("EXIT (FAILED): err %d\n", err);