Loading fs/dcache.c +4 −4 Original line number Original line Diff line number Diff line Loading @@ -1239,13 +1239,13 @@ static void d_walk(struct dentry *parent, void *data, /* might go back up the wrong parent if we have had a rename. */ /* might go back up the wrong parent if we have had a rename. */ if (need_seqretry(&rename_lock, seq)) if (need_seqretry(&rename_lock, seq)) goto rename_retry; goto rename_retry; /* go into the first sibling still alive */ do { next = child->d_child.next; next = child->d_child.next; while (unlikely(child->d_flags & DCACHE_DENTRY_KILLED)) { if (next == &this_parent->d_subdirs) if (next == &this_parent->d_subdirs) goto ascend; goto ascend; child = list_entry(next, struct dentry, d_child); child = list_entry(next, struct dentry, d_child); next = next->next; } while (unlikely(child->d_flags & DCACHE_DENTRY_KILLED)); } rcu_read_unlock(); rcu_read_unlock(); goto resume; goto resume; } } Loading fs/ncpfs/dir.c +2 −0 Original line number Original line Diff line number Diff line Loading @@ -1145,6 +1145,8 @@ static int ncp_rename(struct inode *old_dir, struct dentry *old_dentry, case 0x00: case 0x00: ncp_dbg(1, "renamed %pd -> %pd\n", ncp_dbg(1, "renamed %pd -> %pd\n", old_dentry, new_dentry); old_dentry, new_dentry); ncp_d_prune(old_dentry); ncp_d_prune(new_dentry); break; break; case 0x9E: case 0x9E: error = -ENAMETOOLONG; error = -ENAMETOOLONG; Loading fs/ufs/balloc.c +17 −17 Original line number Original line Diff line number Diff line Loading @@ -52,7 +52,7 @@ void ufs_free_fragments(struct inode *inode, u64 fragment, unsigned count) if (ufs_fragnum(fragment) + count > uspi->s_fpg) if (ufs_fragnum(fragment) + count > uspi->s_fpg) ufs_error (sb, "ufs_free_fragments", "internal error"); ufs_error (sb, "ufs_free_fragments", "internal error"); lock_ufs(sb); mutex_lock(&UFS_SB(sb)->s_lock); cgno = ufs_dtog(uspi, fragment); cgno = ufs_dtog(uspi, fragment); bit = ufs_dtogd(uspi, fragment); bit = ufs_dtogd(uspi, fragment); Loading Loading @@ -116,12 +116,12 @@ void ufs_free_fragments(struct inode *inode, u64 fragment, unsigned count) ubh_sync_block(UCPI_UBH(ucpi)); ubh_sync_block(UCPI_UBH(ucpi)); ufs_mark_sb_dirty(sb); ufs_mark_sb_dirty(sb); unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); UFSD("EXIT\n"); UFSD("EXIT\n"); return; return; failed: failed: unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); UFSD("EXIT (FAILED)\n"); UFSD("EXIT (FAILED)\n"); return; return; } } Loading Loading @@ -151,7 +151,7 @@ void ufs_free_blocks(struct inode *inode, u64 fragment, unsigned count) goto failed; goto failed; } } lock_ufs(sb); mutex_lock(&UFS_SB(sb)->s_lock); do_more: do_more: overflow = 0; overflow = 0; Loading Loading @@ -211,12 +211,12 @@ void ufs_free_blocks(struct inode *inode, u64 fragment, unsigned count) } } ufs_mark_sb_dirty(sb); ufs_mark_sb_dirty(sb); unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); UFSD("EXIT\n"); UFSD("EXIT\n"); return; return; failed_unlock: failed_unlock: unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); failed: failed: UFSD("EXIT (FAILED)\n"); UFSD("EXIT (FAILED)\n"); return; return; Loading Loading @@ -357,7 +357,7 @@ u64 ufs_new_fragments(struct inode *inode, void *p, u64 fragment, usb1 = ubh_get_usb_first(uspi); usb1 = ubh_get_usb_first(uspi); *err = -ENOSPC; *err = -ENOSPC; lock_ufs(sb); mutex_lock(&UFS_SB(sb)->s_lock); tmp = ufs_data_ptr_to_cpu(sb, p); tmp = ufs_data_ptr_to_cpu(sb, p); if (count + ufs_fragnum(fragment) > uspi->s_fpb) { if (count + ufs_fragnum(fragment) > uspi->s_fpb) { Loading @@ -378,19 +378,19 @@ u64 ufs_new_fragments(struct inode *inode, void *p, u64 fragment, "fragment %llu, tmp %llu\n", "fragment %llu, tmp %llu\n", (unsigned long long)fragment, (unsigned long long)fragment, (unsigned long long)tmp); (unsigned long long)tmp); unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); return INVBLOCK; return INVBLOCK; } } if (fragment < UFS_I(inode)->i_lastfrag) { if (fragment < UFS_I(inode)->i_lastfrag) { UFSD("EXIT (ALREADY ALLOCATED)\n"); UFSD("EXIT (ALREADY ALLOCATED)\n"); unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); return 0; return 0; } } } } else { else { if (tmp) { if (tmp) { UFSD("EXIT (ALREADY ALLOCATED)\n"); UFSD("EXIT (ALREADY ALLOCATED)\n"); unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); return 0; return 0; } } } } Loading @@ -399,7 +399,7 @@ u64 ufs_new_fragments(struct inode *inode, void *p, u64 fragment, * There is not enough space for user on the device * There is not enough space for user on the device */ */ if (!capable(CAP_SYS_RESOURCE) && ufs_freespace(uspi, UFS_MINFREE) <= 0) { if (!capable(CAP_SYS_RESOURCE) && ufs_freespace(uspi, UFS_MINFREE) <= 0) { unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); UFSD("EXIT (FAILED)\n"); UFSD("EXIT (FAILED)\n"); return 0; return 0; } } Loading @@ -424,7 +424,7 @@ u64 ufs_new_fragments(struct inode *inode, void *p, u64 fragment, ufs_clear_frags(inode, result + oldcount, ufs_clear_frags(inode, result + oldcount, newcount - oldcount, locked_page != NULL); newcount - oldcount, locked_page != NULL); } } unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); UFSD("EXIT, result %llu\n", (unsigned long long)result); UFSD("EXIT, result %llu\n", (unsigned long long)result); return result; return result; } } Loading @@ -439,7 +439,7 @@ u64 ufs_new_fragments(struct inode *inode, void *p, u64 fragment, fragment + count); fragment + count); ufs_clear_frags(inode, result + oldcount, newcount - oldcount, ufs_clear_frags(inode, result + oldcount, newcount - oldcount, locked_page != NULL); locked_page != NULL); unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); UFSD("EXIT, result %llu\n", (unsigned long long)result); UFSD("EXIT, result %llu\n", (unsigned long long)result); return result; return result; } } Loading Loading @@ -477,7 +477,7 @@ u64 ufs_new_fragments(struct inode *inode, void *p, u64 fragment, *err = 0; *err = 0; UFS_I(inode)->i_lastfrag = max(UFS_I(inode)->i_lastfrag, UFS_I(inode)->i_lastfrag = max(UFS_I(inode)->i_lastfrag, fragment + count); fragment + count); unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); if (newcount < request) if (newcount < request) ufs_free_fragments (inode, result + newcount, request - newcount); ufs_free_fragments (inode, result + newcount, request - newcount); ufs_free_fragments (inode, tmp, oldcount); ufs_free_fragments (inode, tmp, oldcount); Loading @@ -485,7 +485,7 @@ u64 ufs_new_fragments(struct inode *inode, void *p, u64 fragment, return result; return result; } } unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); UFSD("EXIT (FAILED)\n"); UFSD("EXIT (FAILED)\n"); return 0; return 0; } } Loading fs/ufs/dir.c +4 −2 Original line number Original line Diff line number Diff line Loading @@ -87,7 +87,8 @@ ino_t ufs_inode_by_name(struct inode *dir, const struct qstr *qstr) /* Releases the page */ /* Releases the page */ void ufs_set_link(struct inode *dir, struct ufs_dir_entry *de, void ufs_set_link(struct inode *dir, struct ufs_dir_entry *de, struct page *page, struct inode *inode) struct page *page, struct inode *inode, bool update_times) { { loff_t pos = page_offset(page) + loff_t pos = page_offset(page) + (char *) de - (char *) page_address(page); (char *) de - (char *) page_address(page); Loading @@ -103,6 +104,7 @@ void ufs_set_link(struct inode *dir, struct ufs_dir_entry *de, err = ufs_commit_chunk(page, pos, len); err = ufs_commit_chunk(page, pos, len); ufs_put_page(page); ufs_put_page(page); if (update_times) dir->i_mtime = dir->i_ctime = CURRENT_TIME_SEC; dir->i_mtime = dir->i_ctime = CURRENT_TIME_SEC; mark_inode_dirty(dir); mark_inode_dirty(dir); } } Loading fs/ufs/ialloc.c +8 −8 Original line number Original line Diff line number Diff line Loading @@ -69,11 +69,11 @@ void ufs_free_inode (struct inode * inode) ino = inode->i_ino; ino = inode->i_ino; lock_ufs(sb); mutex_lock(&UFS_SB(sb)->s_lock); if (!((ino > 1) && (ino < (uspi->s_ncg * uspi->s_ipg )))) { if (!((ino > 1) && (ino < (uspi->s_ncg * uspi->s_ipg )))) { ufs_warning(sb, "ufs_free_inode", "reserved inode or nonexistent inode %u\n", ino); ufs_warning(sb, "ufs_free_inode", "reserved inode or nonexistent inode %u\n", ino); unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); return; return; } } Loading @@ -81,7 +81,7 @@ void ufs_free_inode (struct inode * inode) bit = ufs_inotocgoff (ino); bit = ufs_inotocgoff (ino); ucpi = ufs_load_cylinder (sb, cg); ucpi = ufs_load_cylinder (sb, cg); if (!ucpi) { if (!ucpi) { unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); return; return; } } ucg = ubh_get_ucg(UCPI_UBH(ucpi)); ucg = ubh_get_ucg(UCPI_UBH(ucpi)); Loading Loading @@ -115,7 +115,7 @@ void ufs_free_inode (struct inode * inode) ubh_sync_block(UCPI_UBH(ucpi)); ubh_sync_block(UCPI_UBH(ucpi)); ufs_mark_sb_dirty(sb); ufs_mark_sb_dirty(sb); unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); UFSD("EXIT\n"); UFSD("EXIT\n"); } } Loading Loading @@ -193,7 +193,7 @@ struct inode *ufs_new_inode(struct inode *dir, umode_t mode) sbi = UFS_SB(sb); sbi = UFS_SB(sb); uspi = sbi->s_uspi; uspi = sbi->s_uspi; lock_ufs(sb); mutex_lock(&sbi->s_lock); /* /* * Try to place the inode in its parent directory * Try to place the inode in its parent directory Loading Loading @@ -331,21 +331,21 @@ struct inode *ufs_new_inode(struct inode *dir, umode_t mode) sync_dirty_buffer(bh); sync_dirty_buffer(bh); brelse(bh); brelse(bh); } } unlock_ufs(sb); mutex_unlock(&sbi->s_lock); UFSD("allocating inode %lu\n", inode->i_ino); UFSD("allocating inode %lu\n", inode->i_ino); UFSD("EXIT\n"); UFSD("EXIT\n"); return inode; return inode; fail_remove_inode: fail_remove_inode: unlock_ufs(sb); mutex_unlock(&sbi->s_lock); clear_nlink(inode); clear_nlink(inode); unlock_new_inode(inode); unlock_new_inode(inode); iput(inode); iput(inode); UFSD("EXIT (FAILED): err %d\n", err); UFSD("EXIT (FAILED): err %d\n", err); return ERR_PTR(err); return ERR_PTR(err); failed: failed: unlock_ufs(sb); mutex_unlock(&sbi->s_lock); make_bad_inode(inode); make_bad_inode(inode); iput (inode); iput (inode); UFSD("EXIT (FAILED): err %d\n", err); UFSD("EXIT (FAILED): err %d\n", err); Loading Loading
fs/dcache.c +4 −4 Original line number Original line Diff line number Diff line Loading @@ -1239,13 +1239,13 @@ static void d_walk(struct dentry *parent, void *data, /* might go back up the wrong parent if we have had a rename. */ /* might go back up the wrong parent if we have had a rename. */ if (need_seqretry(&rename_lock, seq)) if (need_seqretry(&rename_lock, seq)) goto rename_retry; goto rename_retry; /* go into the first sibling still alive */ do { next = child->d_child.next; next = child->d_child.next; while (unlikely(child->d_flags & DCACHE_DENTRY_KILLED)) { if (next == &this_parent->d_subdirs) if (next == &this_parent->d_subdirs) goto ascend; goto ascend; child = list_entry(next, struct dentry, d_child); child = list_entry(next, struct dentry, d_child); next = next->next; } while (unlikely(child->d_flags & DCACHE_DENTRY_KILLED)); } rcu_read_unlock(); rcu_read_unlock(); goto resume; goto resume; } } Loading
fs/ncpfs/dir.c +2 −0 Original line number Original line Diff line number Diff line Loading @@ -1145,6 +1145,8 @@ static int ncp_rename(struct inode *old_dir, struct dentry *old_dentry, case 0x00: case 0x00: ncp_dbg(1, "renamed %pd -> %pd\n", ncp_dbg(1, "renamed %pd -> %pd\n", old_dentry, new_dentry); old_dentry, new_dentry); ncp_d_prune(old_dentry); ncp_d_prune(new_dentry); break; break; case 0x9E: case 0x9E: error = -ENAMETOOLONG; error = -ENAMETOOLONG; Loading
fs/ufs/balloc.c +17 −17 Original line number Original line Diff line number Diff line Loading @@ -52,7 +52,7 @@ void ufs_free_fragments(struct inode *inode, u64 fragment, unsigned count) if (ufs_fragnum(fragment) + count > uspi->s_fpg) if (ufs_fragnum(fragment) + count > uspi->s_fpg) ufs_error (sb, "ufs_free_fragments", "internal error"); ufs_error (sb, "ufs_free_fragments", "internal error"); lock_ufs(sb); mutex_lock(&UFS_SB(sb)->s_lock); cgno = ufs_dtog(uspi, fragment); cgno = ufs_dtog(uspi, fragment); bit = ufs_dtogd(uspi, fragment); bit = ufs_dtogd(uspi, fragment); Loading Loading @@ -116,12 +116,12 @@ void ufs_free_fragments(struct inode *inode, u64 fragment, unsigned count) ubh_sync_block(UCPI_UBH(ucpi)); ubh_sync_block(UCPI_UBH(ucpi)); ufs_mark_sb_dirty(sb); ufs_mark_sb_dirty(sb); unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); UFSD("EXIT\n"); UFSD("EXIT\n"); return; return; failed: failed: unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); UFSD("EXIT (FAILED)\n"); UFSD("EXIT (FAILED)\n"); return; return; } } Loading Loading @@ -151,7 +151,7 @@ void ufs_free_blocks(struct inode *inode, u64 fragment, unsigned count) goto failed; goto failed; } } lock_ufs(sb); mutex_lock(&UFS_SB(sb)->s_lock); do_more: do_more: overflow = 0; overflow = 0; Loading Loading @@ -211,12 +211,12 @@ void ufs_free_blocks(struct inode *inode, u64 fragment, unsigned count) } } ufs_mark_sb_dirty(sb); ufs_mark_sb_dirty(sb); unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); UFSD("EXIT\n"); UFSD("EXIT\n"); return; return; failed_unlock: failed_unlock: unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); failed: failed: UFSD("EXIT (FAILED)\n"); UFSD("EXIT (FAILED)\n"); return; return; Loading Loading @@ -357,7 +357,7 @@ u64 ufs_new_fragments(struct inode *inode, void *p, u64 fragment, usb1 = ubh_get_usb_first(uspi); usb1 = ubh_get_usb_first(uspi); *err = -ENOSPC; *err = -ENOSPC; lock_ufs(sb); mutex_lock(&UFS_SB(sb)->s_lock); tmp = ufs_data_ptr_to_cpu(sb, p); tmp = ufs_data_ptr_to_cpu(sb, p); if (count + ufs_fragnum(fragment) > uspi->s_fpb) { if (count + ufs_fragnum(fragment) > uspi->s_fpb) { Loading @@ -378,19 +378,19 @@ u64 ufs_new_fragments(struct inode *inode, void *p, u64 fragment, "fragment %llu, tmp %llu\n", "fragment %llu, tmp %llu\n", (unsigned long long)fragment, (unsigned long long)fragment, (unsigned long long)tmp); (unsigned long long)tmp); unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); return INVBLOCK; return INVBLOCK; } } if (fragment < UFS_I(inode)->i_lastfrag) { if (fragment < UFS_I(inode)->i_lastfrag) { UFSD("EXIT (ALREADY ALLOCATED)\n"); UFSD("EXIT (ALREADY ALLOCATED)\n"); unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); return 0; return 0; } } } } else { else { if (tmp) { if (tmp) { UFSD("EXIT (ALREADY ALLOCATED)\n"); UFSD("EXIT (ALREADY ALLOCATED)\n"); unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); return 0; return 0; } } } } Loading @@ -399,7 +399,7 @@ u64 ufs_new_fragments(struct inode *inode, void *p, u64 fragment, * There is not enough space for user on the device * There is not enough space for user on the device */ */ if (!capable(CAP_SYS_RESOURCE) && ufs_freespace(uspi, UFS_MINFREE) <= 0) { if (!capable(CAP_SYS_RESOURCE) && ufs_freespace(uspi, UFS_MINFREE) <= 0) { unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); UFSD("EXIT (FAILED)\n"); UFSD("EXIT (FAILED)\n"); return 0; return 0; } } Loading @@ -424,7 +424,7 @@ u64 ufs_new_fragments(struct inode *inode, void *p, u64 fragment, ufs_clear_frags(inode, result + oldcount, ufs_clear_frags(inode, result + oldcount, newcount - oldcount, locked_page != NULL); newcount - oldcount, locked_page != NULL); } } unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); UFSD("EXIT, result %llu\n", (unsigned long long)result); UFSD("EXIT, result %llu\n", (unsigned long long)result); return result; return result; } } Loading @@ -439,7 +439,7 @@ u64 ufs_new_fragments(struct inode *inode, void *p, u64 fragment, fragment + count); fragment + count); ufs_clear_frags(inode, result + oldcount, newcount - oldcount, ufs_clear_frags(inode, result + oldcount, newcount - oldcount, locked_page != NULL); locked_page != NULL); unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); UFSD("EXIT, result %llu\n", (unsigned long long)result); UFSD("EXIT, result %llu\n", (unsigned long long)result); return result; return result; } } Loading Loading @@ -477,7 +477,7 @@ u64 ufs_new_fragments(struct inode *inode, void *p, u64 fragment, *err = 0; *err = 0; UFS_I(inode)->i_lastfrag = max(UFS_I(inode)->i_lastfrag, UFS_I(inode)->i_lastfrag = max(UFS_I(inode)->i_lastfrag, fragment + count); fragment + count); unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); if (newcount < request) if (newcount < request) ufs_free_fragments (inode, result + newcount, request - newcount); ufs_free_fragments (inode, result + newcount, request - newcount); ufs_free_fragments (inode, tmp, oldcount); ufs_free_fragments (inode, tmp, oldcount); Loading @@ -485,7 +485,7 @@ u64 ufs_new_fragments(struct inode *inode, void *p, u64 fragment, return result; return result; } } unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); UFSD("EXIT (FAILED)\n"); UFSD("EXIT (FAILED)\n"); return 0; return 0; } } Loading
fs/ufs/dir.c +4 −2 Original line number Original line Diff line number Diff line Loading @@ -87,7 +87,8 @@ ino_t ufs_inode_by_name(struct inode *dir, const struct qstr *qstr) /* Releases the page */ /* Releases the page */ void ufs_set_link(struct inode *dir, struct ufs_dir_entry *de, void ufs_set_link(struct inode *dir, struct ufs_dir_entry *de, struct page *page, struct inode *inode) struct page *page, struct inode *inode, bool update_times) { { loff_t pos = page_offset(page) + loff_t pos = page_offset(page) + (char *) de - (char *) page_address(page); (char *) de - (char *) page_address(page); Loading @@ -103,6 +104,7 @@ void ufs_set_link(struct inode *dir, struct ufs_dir_entry *de, err = ufs_commit_chunk(page, pos, len); err = ufs_commit_chunk(page, pos, len); ufs_put_page(page); ufs_put_page(page); if (update_times) dir->i_mtime = dir->i_ctime = CURRENT_TIME_SEC; dir->i_mtime = dir->i_ctime = CURRENT_TIME_SEC; mark_inode_dirty(dir); mark_inode_dirty(dir); } } Loading
fs/ufs/ialloc.c +8 −8 Original line number Original line Diff line number Diff line Loading @@ -69,11 +69,11 @@ void ufs_free_inode (struct inode * inode) ino = inode->i_ino; ino = inode->i_ino; lock_ufs(sb); mutex_lock(&UFS_SB(sb)->s_lock); if (!((ino > 1) && (ino < (uspi->s_ncg * uspi->s_ipg )))) { if (!((ino > 1) && (ino < (uspi->s_ncg * uspi->s_ipg )))) { ufs_warning(sb, "ufs_free_inode", "reserved inode or nonexistent inode %u\n", ino); ufs_warning(sb, "ufs_free_inode", "reserved inode or nonexistent inode %u\n", ino); unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); return; return; } } Loading @@ -81,7 +81,7 @@ void ufs_free_inode (struct inode * inode) bit = ufs_inotocgoff (ino); bit = ufs_inotocgoff (ino); ucpi = ufs_load_cylinder (sb, cg); ucpi = ufs_load_cylinder (sb, cg); if (!ucpi) { if (!ucpi) { unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); return; return; } } ucg = ubh_get_ucg(UCPI_UBH(ucpi)); ucg = ubh_get_ucg(UCPI_UBH(ucpi)); Loading Loading @@ -115,7 +115,7 @@ void ufs_free_inode (struct inode * inode) ubh_sync_block(UCPI_UBH(ucpi)); ubh_sync_block(UCPI_UBH(ucpi)); ufs_mark_sb_dirty(sb); ufs_mark_sb_dirty(sb); unlock_ufs(sb); mutex_unlock(&UFS_SB(sb)->s_lock); UFSD("EXIT\n"); UFSD("EXIT\n"); } } Loading Loading @@ -193,7 +193,7 @@ struct inode *ufs_new_inode(struct inode *dir, umode_t mode) sbi = UFS_SB(sb); sbi = UFS_SB(sb); uspi = sbi->s_uspi; uspi = sbi->s_uspi; lock_ufs(sb); mutex_lock(&sbi->s_lock); /* /* * Try to place the inode in its parent directory * Try to place the inode in its parent directory Loading Loading @@ -331,21 +331,21 @@ struct inode *ufs_new_inode(struct inode *dir, umode_t mode) sync_dirty_buffer(bh); sync_dirty_buffer(bh); brelse(bh); brelse(bh); } } unlock_ufs(sb); mutex_unlock(&sbi->s_lock); UFSD("allocating inode %lu\n", inode->i_ino); UFSD("allocating inode %lu\n", inode->i_ino); UFSD("EXIT\n"); UFSD("EXIT\n"); return inode; return inode; fail_remove_inode: fail_remove_inode: unlock_ufs(sb); mutex_unlock(&sbi->s_lock); clear_nlink(inode); clear_nlink(inode); unlock_new_inode(inode); unlock_new_inode(inode); iput(inode); iput(inode); UFSD("EXIT (FAILED): err %d\n", err); UFSD("EXIT (FAILED): err %d\n", err); return ERR_PTR(err); return ERR_PTR(err); failed: failed: unlock_ufs(sb); mutex_unlock(&sbi->s_lock); make_bad_inode(inode); make_bad_inode(inode); iput (inode); iput (inode); UFSD("EXIT (FAILED): err %d\n", err); UFSD("EXIT (FAILED): err %d\n", err); Loading