mode &= S_IALLUGO;
mode |= S_IFREG;
- down(&dir->d_inode->i_zombie);
+ down(&dir->d_inode->i_sem);
error = presto_reserve_space(fset->fset_cache, PRESTO_REQHIGH);
if (error) {
EXIT;
- up(&dir->d_inode->i_zombie);
+ up(&dir->d_inode->i_sem);
return error;
}
presto_trans_commit(fset, handle);
exit_pre_lock:
presto_release_space(fset->fset_cache, PRESTO_REQHIGH);
- up(&dir->d_inode->i_zombie);
+ up(&dir->d_inode->i_sem);
return error;
}
struct presto_version new_link_ver;
void *handle;
- down(&dir->d_inode->i_zombie);
+ down(&dir->d_inode->i_sem);
error = presto_reserve_space(fset->fset_cache, PRESTO_REQHIGH);
if (error) {
EXIT;
- up(&dir->d_inode->i_zombie);
+ up(&dir->d_inode->i_sem);
return error;
}
error = -ENOENT;
presto_trans_commit(fset, handle);
exit_lock:
presto_release_space(fset->fset_cache, PRESTO_REQHIGH);
- up(&dir->d_inode->i_zombie);
+ up(&dir->d_inode->i_sem);
return error;
}
int do_kml = 0, do_expect =0;
int linkno = 0;
ENTRY;
- down(&dir->d_inode->i_zombie);
+ down(&dir->d_inode->i_sem);
error = may_delete(dir->d_inode, dentry, 0);
if (error) {
EXIT;
- up(&dir->d_inode->i_zombie);
+ up(&dir->d_inode->i_sem);
return error;
}
iops = filter_c2cdiops(fset->fset_cache->cache_filter);
if (!iops->unlink) {
EXIT;
- up(&dir->d_inode->i_zombie);
+ up(&dir->d_inode->i_sem);
return error;
}
error = presto_reserve_space(fset->fset_cache, PRESTO_REQLOW);
if (error) {
EXIT;
- up(&dir->d_inode->i_zombie);
+ up(&dir->d_inode->i_sem);
return error;
}
if ( IS_ERR(handle) ) {
presto_release_space(fset->fset_cache, PRESTO_REQLOW);
printk("ERROR: presto_do_unlink: no space for transaction. Tell Peter.\n");
- up(&dir->d_inode->i_zombie);
+ up(&dir->d_inode->i_sem);
return -ENOSPC;
}
DQUOT_INIT(dir->d_inode);
goto exit;
}
- up(&dir->d_inode->i_zombie);
+ up(&dir->d_inode->i_sem);
if (error) {
EXIT;
goto exit;
void *handle;
ENTRY;
- down(&dir->d_inode->i_zombie);
+ down(&dir->d_inode->i_sem);
/* record + max path len + space to free */
error = presto_reserve_space(fset->fset_cache, PRESTO_REQHIGH + 4096);
if (error) {
EXIT;
- up(&dir->d_inode->i_zombie);
+ up(&dir->d_inode->i_sem);
return error;
}
presto_trans_commit(fset, handle);
exit_lock:
presto_release_space(fset->fset_cache, PRESTO_REQHIGH + 4096);
- up(&dir->d_inode->i_zombie);
+ up(&dir->d_inode->i_sem);
return error;
}
void *handle;
ENTRY;
- down(&dir->d_inode->i_zombie);
+ down(&dir->d_inode->i_sem);
/* one journal record + directory block + room for removals*/
error = presto_reserve_space(fset->fset_cache, PRESTO_REQHIGH + 4096);
if (error) {
EXIT;
- up(&dir->d_inode->i_zombie);
+ up(&dir->d_inode->i_sem);
return error;
}
presto_trans_commit(fset, handle);
exit_lock:
presto_release_space(fset->fset_cache, PRESTO_REQHIGH + 4096);
- up(&dir->d_inode->i_zombie);
+ up(&dir->d_inode->i_sem);
return error;
}
do_kml = presto_do_kml(info, dir->d_inode);
do_expect = presto_do_expect(info, dir->d_inode);
- double_down(&dir->d_inode->i_zombie, &dentry->d_inode->i_zombie);
+ double_down(&dir->d_inode->i_sem, &dentry->d_inode->i_sem);
d_unhash(dentry);
if (IS_DEADDIR(dir->d_inode))
error = -ENOENT;
ATTR_CTIME | ATTR_MTIME);
}
}
- double_up(&dir->d_inode->i_zombie, &dentry->d_inode->i_zombie);
+ double_up(&dir->d_inode->i_sem, &dentry->d_inode->i_sem);
if (!error)
d_delete(dentry);
dput(dentry);
ENTRY;
- down(&dir->d_inode->i_zombie);
+ down(&dir->d_inode->i_sem);
/* one KML entry */
error = presto_reserve_space(fset->fset_cache, PRESTO_REQHIGH);
if (error) {
EXIT;
- up(&dir->d_inode->i_zombie);
+ up(&dir->d_inode->i_sem);
return error;
}
unlock_kernel();
exit_lock:
presto_release_space(fset->fset_cache, PRESTO_REQHIGH);
- up(&dir->d_inode->i_zombie);
+ up(&dir->d_inode->i_sem);
return error;
}
goto out_unlock;
target = new_dentry->d_inode;
if (target) { /* Hastur! Hastur! Hastur! */
- triple_down(&old_dir->i_zombie,
- &new_dir->i_zombie,
- &target->i_zombie);
+ triple_down(&old_dir->i_sem,
+ &new_dir->i_sem,
+ &target->i_sem);
d_unhash(new_dentry);
} else
- double_down(&old_dir->i_zombie,
- &new_dir->i_zombie);
+ double_down(&old_dir->i_sem,
+ &new_dir->i_sem);
if (IS_DEADDIR(old_dir)||IS_DEADDIR(new_dir))
error = -ENOENT;
else if (d_mountpoint(old_dentry)||d_mountpoint(new_dentry))
if (target) {
if (!error)
target->i_flags |= S_DEAD;
- triple_up(&old_dir->i_zombie,
- &new_dir->i_zombie,
- &target->i_zombie);
+ triple_up(&old_dir->i_sem,
+ &new_dir->i_sem,
+ &target->i_sem);
if (d_unhashed(new_dentry))
d_rehash(new_dentry);
dput(new_dentry);
} else
- double_up(&old_dir->i_zombie,
- &new_dir->i_zombie);
+ double_up(&old_dir->i_sem,
+ &new_dir->i_sem);
if (!error)
d_move(old_dentry,new_dentry);
DQUOT_INIT(old_dir);
DQUOT_INIT(new_dir);
- double_down(&old_dir->i_zombie, &new_dir->i_zombie);
+ double_down(&old_dir->i_sem, &new_dir->i_sem);
if (d_mountpoint(old_dentry)||d_mountpoint(new_dentry))
error = -EBUSY;
else
error = do_rename(fset, old_parent, old_dentry,
new_parent, new_dentry, info);
- double_up(&old_dir->i_zombie, &new_dir->i_zombie);
+ double_up(&old_dir->i_sem, &new_dir->i_sem);
if (error)
return error;
/* The following d_move() should become unconditional */