X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=fs%2Focfs2%2Fdir.c;h=9cce563fd6278dde9a4da3db12eabb04e328526e;hb=ba6271ea6324decab4c47c4a55de95188d930792;hp=6b0107f21344734f583ea103b56cc10bee7d6b74;hpb=29bd17af7d8ffc16bb5eb286947495c166ea826e;p=linux-2.6 diff --git a/fs/ocfs2/dir.c b/fs/ocfs2/dir.c index 6b0107f213..9cce563fd6 100644 --- a/fs/ocfs2/dir.c +++ b/fs/ocfs2/dir.c @@ -390,9 +390,8 @@ static int __ocfs2_delete_entry(handle_t *handle, struct inode *dir, goto bail; } if (pde) - pde->rec_len = - cpu_to_le16(le16_to_cpu(pde->rec_len) + - le16_to_cpu(de->rec_len)); + le16_add_cpu(&pde->rec_len, + le16_to_cpu(de->rec_len)); else de->inode = 0; dir->i_version++; @@ -1215,7 +1214,7 @@ static int ocfs2_expand_inline_dir(struct inode *dir, struct buffer_head *di_bh, down_write(&oi->ip_alloc_sem); /* - * Prepare for worst case allocation scenario of two seperate + * Prepare for worst case allocation scenario of two separate * extents. */ if (alloc == 2) @@ -1301,7 +1300,6 @@ static int ocfs2_expand_inline_dir(struct inode *dir, struct buffer_head *di_bh, di->i_size = cpu_to_le64(sb->s_blocksize); di->i_ctime = di->i_mtime = cpu_to_le64(dir->i_ctime.tv_sec); di->i_ctime_nsec = di->i_mtime_nsec = cpu_to_le32(dir->i_ctime.tv_nsec); - dir->i_blocks = ocfs2_inode_sector_count(dir); /* * This should never fail as our extent list is empty and all @@ -1311,9 +1309,15 @@ static int ocfs2_expand_inline_dir(struct inode *dir, struct buffer_head *di_bh, NULL); if (ret) { mlog_errno(ret); - goto out; + goto out_commit; } + /* + * Set i_blocks after the extent insert for the most up to + * date ip_clusters value. + */ + dir->i_blocks = ocfs2_inode_sector_count(dir); + ret = ocfs2_journal_dirty(handle, di_bh); if (ret) { mlog_errno(ret); @@ -1337,7 +1341,7 @@ static int ocfs2_expand_inline_dir(struct inode *dir, struct buffer_head *di_bh, len, 0, NULL); if (ret) { mlog_errno(ret); - goto out; + goto out_commit; } }