mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-26 05:34:13 +08:00
udf: Convert udf_add_nondir() to new directory iteration
Convert udf_add_nondir() to new directory iteration code. Signed-off-by: Jan Kara <jack@suse.cz>
This commit is contained in:
parent
f284480340
commit
ef91f9998b
@ -847,26 +847,23 @@ static int udf_add_nondir(struct dentry *dentry, struct inode *inode)
|
||||
{
|
||||
struct udf_inode_info *iinfo = UDF_I(inode);
|
||||
struct inode *dir = d_inode(dentry->d_parent);
|
||||
struct udf_fileident_bh fibh;
|
||||
struct fileIdentDesc cfi, *fi;
|
||||
struct udf_fileident_iter iter;
|
||||
int err;
|
||||
|
||||
fi = udf_add_entry(dir, dentry, &fibh, &cfi, &err);
|
||||
if (unlikely(!fi)) {
|
||||
err = udf_fiiter_add_entry(dir, dentry, &iter);
|
||||
if (err) {
|
||||
inode_dec_link_count(inode);
|
||||
discard_new_inode(inode);
|
||||
return err;
|
||||
}
|
||||
cfi.icb.extLength = cpu_to_le32(inode->i_sb->s_blocksize);
|
||||
cfi.icb.extLocation = cpu_to_lelb(iinfo->i_location);
|
||||
*(__le32 *)((struct allocDescImpUse *)cfi.icb.impUse)->impUse =
|
||||
iter.fi.icb.extLength = cpu_to_le32(inode->i_sb->s_blocksize);
|
||||
iter.fi.icb.extLocation = cpu_to_lelb(iinfo->i_location);
|
||||
*(__le32 *)((struct allocDescImpUse *)iter.fi.icb.impUse)->impUse =
|
||||
cpu_to_le32(iinfo->i_unique & 0x00000000FFFFFFFFUL);
|
||||
udf_write_fi(dir, &cfi, fi, &fibh, NULL, NULL);
|
||||
udf_fiiter_write_fi(&iter, NULL);
|
||||
dir->i_ctime = dir->i_mtime = current_time(dir);
|
||||
mark_inode_dirty(dir);
|
||||
if (fibh.sbh != fibh.ebh)
|
||||
brelse(fibh.ebh);
|
||||
brelse(fibh.sbh);
|
||||
udf_fiiter_release(&iter);
|
||||
d_instantiate_new(dentry, inode);
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user