int buflen, paste_size;
int retval;
- BUG_ON (!th->t_trans_id);
/* cannot allow items to be added into a busy deleted directory */
if (!namelen)
if (locked)
reiserfs_write_lock_xattrs (dir->i_sb);
- retval = journal_begin(&th, dir->i_sb, jbegin_count);
+ journal_begin(&th, dir->i_sb, jbegin_count) ;
+ retval = reiserfs_new_inode (&th, dir, mode, NULL, 0/*i_size*/, dentry, inode);
+
+ if (locked)
+ reiserfs_write_unlock_xattrs (dir->i_sb);
+
if (retval) {
- drop_new_inode (inode);
goto out_failed;
}
-
- retval = reiserfs_new_inode (&th, dir, mode, 0, 0/*i_size*/, dentry, inode);
- if (retval)
- goto out_failed;
- if (locked) {
- reiserfs_write_unlock_xattrs (dir->i_sb);
- locked = 0;
- }
-
inode->i_op = &reiserfs_file_inode_operations;
inode->i_fop = &reiserfs_file_operations;
inode->i_mapping->a_ops = &reiserfs_address_space_operations ;
retval = reiserfs_add_entry (&th, dir, dentry->d_name.name, dentry->d_name.len,
inode, 1/*visible*/);
if (retval) {
- int err;
inode->i_nlink--;
reiserfs_update_sd (&th, inode);
- err = journal_end(&th, dir->i_sb, jbegin_count) ;
- if (err)
- retval = err;
+ journal_end(&th, dir->i_sb, jbegin_count) ;
iput (inode);
goto out_failed;
}
reiserfs_update_inode_transaction(dir) ;
d_instantiate(dentry, inode);
- retval = journal_end(&th, dir->i_sb, jbegin_count) ;
+ journal_end(&th, dir->i_sb, jbegin_count) ;
out_failed:
- if (locked)
- reiserfs_write_unlock_xattrs (dir->i_sb);
reiserfs_write_unlock(dir->i_sb);
return retval;
}
if (locked)
reiserfs_write_lock_xattrs (dir->i_sb);
- retval = journal_begin(&th, dir->i_sb, jbegin_count) ;
- if (retval) {
- drop_new_inode (inode);
- goto out_failed;
- }
+ journal_begin(&th, dir->i_sb, jbegin_count) ;
retval = reiserfs_new_inode (&th, dir, mode, NULL, 0/*i_size*/, dentry, inode);
- if (retval) {
- goto out_failed;
- }
- if (locked) {
+ if (locked)
reiserfs_write_unlock_xattrs (dir->i_sb);
- locked = 0;
- }
+ if (retval) {
+ goto out_failed;
+ }
inode->i_op = &reiserfs_special_inode_operations;
init_special_inode(inode, inode->i_mode, rdev) ;
retval = reiserfs_add_entry (&th, dir, dentry->d_name.name, dentry->d_name.len,
inode, 1/*visible*/);
if (retval) {
- int err;
inode->i_nlink--;
reiserfs_update_sd (&th, inode);
- err = journal_end(&th, dir->i_sb, jbegin_count) ;
- if (err)
- retval = err;
+ journal_end(&th, dir->i_sb, jbegin_count) ;
iput (inode);
goto out_failed;
}
d_instantiate(dentry, inode);
- retval = journal_end(&th, dir->i_sb, jbegin_count) ;
+ journal_end(&th, dir->i_sb, jbegin_count) ;
out_failed:
- if (locked)
- reiserfs_write_unlock_xattrs (dir->i_sb);
reiserfs_write_unlock(dir->i_sb);
return retval;
}
reiserfs_write_lock(dir->i_sb);
if (locked)
reiserfs_write_lock_xattrs (dir->i_sb);
-
- retval = journal_begin(&th, dir->i_sb, jbegin_count) ;
- if (retval) {
- drop_new_inode (inode);
- goto out_failed;
- }
-
+ journal_begin(&th, dir->i_sb, jbegin_count) ;
/* inc the link count now, so another writer doesn't overflow it while
** we sleep later on.
old_format_only (dir->i_sb) ?
EMPTY_DIR_SIZE_V1 : EMPTY_DIR_SIZE,
dentry, inode);
+ if (locked)
+ reiserfs_write_unlock_xattrs (dir->i_sb);
+
if (retval) {
dir->i_nlink-- ;
goto out_failed;
}
-
- if (locked) {
- reiserfs_write_unlock_xattrs (dir->i_sb);
- locked = 0;
- }
-
reiserfs_update_inode_transaction(inode) ;
reiserfs_update_inode_transaction(dir) ;
retval = reiserfs_add_entry (&th, dir, dentry->d_name.name, dentry->d_name.len,
inode, 1/*visible*/);
if (retval) {
- int err;
inode->i_nlink = 0;
DEC_DIR_INODE_NLINK(dir);
reiserfs_update_sd (&th, inode);
- err = journal_end(&th, dir->i_sb, jbegin_count) ;
- if (err)
- retval = err;
+ journal_end(&th, dir->i_sb, jbegin_count) ;
iput (inode);
goto out_failed;
}
reiserfs_update_sd (&th, dir);
d_instantiate(dentry, inode);
- retval = journal_end(&th, dir->i_sb, jbegin_count) ;
+ journal_end(&th, dir->i_sb, jbegin_count) ;
out_failed:
- if (locked)
- reiserfs_write_unlock_xattrs (dir->i_sb);
reiserfs_write_unlock(dir->i_sb);
return retval;
}
static int reiserfs_rmdir (struct inode * dir, struct dentry *dentry)
{
- int retval, err;
+ int retval;
struct inode * inode;
struct reiserfs_transaction_handle th ;
int jbegin_count;
jbegin_count = JOURNAL_PER_BALANCE_CNT * 2 + 2;
reiserfs_write_lock(dir->i_sb);
- retval = journal_begin(&th, dir->i_sb, jbegin_count) ;
- if (retval)
- goto out_rmdir;
+ journal_begin(&th, dir->i_sb, jbegin_count) ;
de.de_gen_number_bit_string = NULL;
if ( (retval = reiserfs_find_entry (dir, dentry->d_name.name, dentry->d_name.len, &path, &de)) == NAME_NOT_FOUND) {
/* prevent empty directory from getting lost */
add_save_link (&th, inode, 0/* not truncate */);
- retval = journal_end(&th, dir->i_sb, jbegin_count) ;
+ journal_end(&th, dir->i_sb, jbegin_count) ;
reiserfs_check_path(&path) ;
-out_rmdir:
reiserfs_write_unlock(dir->i_sb);
- return retval;
+ return 0;
end_rmdir:
/* we must release path, because we did not call
reiserfs_cut_from_item, or reiserfs_cut_from_item does not
release path if operation was not complete */
pathrelse (&path);
- err = journal_end(&th, dir->i_sb, jbegin_count) ;
+ journal_end(&th, dir->i_sb, jbegin_count) ;
reiserfs_write_unlock(dir->i_sb);
- return err ? err : retval;
+ return retval;
}
static int reiserfs_unlink (struct inode * dir, struct dentry *dentry)
{
- int retval, err;
+ int retval;
struct inode * inode;
struct reiserfs_dir_entry de;
INITIALIZE_PATH (path);
jbegin_count = JOURNAL_PER_BALANCE_CNT * 2 + 2;
reiserfs_write_lock(dir->i_sb);
- retval = journal_begin(&th, dir->i_sb, jbegin_count) ;
- if (retval)
- goto out_unlink;
+ journal_begin(&th, dir->i_sb, jbegin_count) ;
de.de_gen_number_bit_string = NULL;
if ( (retval = reiserfs_find_entry (dir, dentry->d_name.name, dentry->d_name.len, &path, &de)) == NAME_NOT_FOUND) {
/* prevent file from getting lost */
add_save_link (&th, inode, 0/* not truncate */);
- retval = journal_end(&th, dir->i_sb, jbegin_count) ;
+ journal_end(&th, dir->i_sb, jbegin_count) ;
reiserfs_check_path(&path) ;
reiserfs_write_unlock(dir->i_sb);
- return retval;
+ return 0;
end_unlink:
pathrelse (&path);
- err = journal_end(&th, dir->i_sb, jbegin_count) ;
+ journal_end(&th, dir->i_sb, jbegin_count) ;
reiserfs_check_path(&path) ;
- if (err)
- retval = err;
-out_unlink:
reiserfs_write_unlock(dir->i_sb);
return retval;
}
/* We would inherit the default ACL here, but symlinks don't get ACLs */
- retval = journal_begin(&th, parent_dir->i_sb, jbegin_count) ;
- if (retval) {
- drop_new_inode (inode);
- reiserfs_kfree (name, item_len, parent_dir->i_sb);
- goto out_failed;
- }
+ journal_begin(&th, parent_dir->i_sb, jbegin_count) ;
retval = reiserfs_new_inode (&th, parent_dir, mode, name, strlen (symname),
dentry, inode);
retval = reiserfs_add_entry (&th, parent_dir, dentry->d_name.name,
dentry->d_name.len, inode, 1/*visible*/);
if (retval) {
- int err;
inode->i_nlink--;
reiserfs_update_sd (&th, inode);
- err = journal_end(&th, parent_dir->i_sb, jbegin_count) ;
- if (err)
- retval = err;
+ journal_end(&th, parent_dir->i_sb, jbegin_count) ;
iput (inode);
goto out_failed;
}
d_instantiate(dentry, inode);
- retval = journal_end(&th, parent_dir->i_sb, jbegin_count) ;
+ journal_end(&th, parent_dir->i_sb, jbegin_count) ;
out_failed:
reiserfs_write_unlock(parent_dir->i_sb);
return retval;
/* inc before scheduling so reiserfs_unlink knows we are here */
inode->i_nlink++;
- retval = journal_begin(&th, dir->i_sb, jbegin_count) ;
- if (retval) {
- inode->i_nlink--;
- reiserfs_write_unlock (dir->i_sb);
- return retval;
- }
+ journal_begin(&th, dir->i_sb, jbegin_count) ;
/* create new entry */
retval = reiserfs_add_entry (&th, dir, dentry->d_name.name, dentry->d_name.len,
reiserfs_update_inode_transaction(dir) ;
if (retval) {
- int err;
inode->i_nlink--;
- err = journal_end(&th, dir->i_sb, jbegin_count) ;
+ journal_end(&th, dir->i_sb, jbegin_count) ;
reiserfs_write_unlock(dir->i_sb);
- return err ? err : retval;
+ return retval;
}
inode->i_ctime = CURRENT_TIME;
atomic_inc(&inode->i_count) ;
d_instantiate(dentry, inode);
- retval = journal_end(&th, dir->i_sb, jbegin_count) ;
+ journal_end(&th, dir->i_sb, jbegin_count) ;
reiserfs_write_unlock(dir->i_sb);
- return retval;
+ return 0;
}
}
}
- retval = journal_begin(&th, old_dir->i_sb, jbegin_count) ;
- if (retval) {
- reiserfs_write_unlock (old_dir->i_sb);
- return retval;
- }
-
+ journal_begin(&th, old_dir->i_sb, jbegin_count) ;
/* add new entry (or find the existing one) */
retval = reiserfs_add_entry (&th, new_dir, new_dentry->d_name.name, new_dentry->d_name.len,
"vs-7050: new entry is found, new inode == 0\n");
}
} else if (retval) {
- int err = journal_end(&th, old_dir->i_sb, jbegin_count) ;
+ journal_end(&th, old_dir->i_sb, jbegin_count) ;
reiserfs_write_unlock(old_dir->i_sb);
- return err ? err : retval;
+ return retval;
}
reiserfs_update_inode_transaction(old_dir) ;
reiserfs_update_sd (&th, new_dentry_inode);
}
- retval = journal_end(&th, old_dir->i_sb, jbegin_count) ;
+ journal_end(&th, old_dir->i_sb, jbegin_count) ;
reiserfs_write_unlock(old_dir->i_sb);
- return retval;
+ return 0;
}
/*
.permission = reiserfs_permission,
};
+
+