aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_dir2_node.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/xfs/xfs_dir2_node.c')
-rw-r--r--fs/xfs/xfs_dir2_node.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/fs/xfs/xfs_dir2_node.c b/fs/xfs/xfs_dir2_node.c
index c71cff85950c..1b5430223461 100644
--- a/fs/xfs/xfs_dir2_node.c
+++ b/fs/xfs/xfs_dir2_node.c
@@ -549,7 +549,7 @@ xfs_dir2_leafn_lookup_for_entry(
549 xfs_dir2_data_entry_t *dep; /* data block entry */ 549 xfs_dir2_data_entry_t *dep; /* data block entry */
550 xfs_inode_t *dp; /* incore directory inode */ 550 xfs_inode_t *dp; /* incore directory inode */
551 int error; /* error return value */ 551 int error; /* error return value */
552 int di; /* data entry index */ 552 int di = -1; /* data entry index */
553 int index; /* leaf entry index */ 553 int index; /* leaf entry index */
554 xfs_dir2_leaf_t *leaf; /* leaf structure */ 554 xfs_dir2_leaf_t *leaf; /* leaf structure */
555 xfs_dir2_leaf_entry_t *lep; /* leaf entry */ 555 xfs_dir2_leaf_entry_t *lep; /* leaf entry */
@@ -577,6 +577,7 @@ xfs_dir2_leafn_lookup_for_entry(
577 if (state->extravalid) { 577 if (state->extravalid) {
578 curbp = state->extrablk.bp; 578 curbp = state->extrablk.bp;
579 curdb = state->extrablk.blkno; 579 curdb = state->extrablk.blkno;
580 di = state->extrablk.index;
580 } 581 }
581 /* 582 /*
582 * Loop over leaf entries with the right hash value. 583 * Loop over leaf entries with the right hash value.
@@ -637,7 +638,6 @@ xfs_dir2_leafn_lookup_for_entry(
637 } 638 }
638 /* Didn't find an exact match. */ 639 /* Didn't find an exact match. */
639 error = ENOENT; 640 error = ENOENT;
640 di = -1;
641 ASSERT(index == be16_to_cpu(leaf->hdr.count) || 641 ASSERT(index == be16_to_cpu(leaf->hdr.count) ||
642 (args->op_flags & XFS_DA_OP_OKNOENT)); 642 (args->op_flags & XFS_DA_OP_OKNOENT));
643out: 643out:
@@ -652,7 +652,7 @@ out:
652 state->extravalid = 0; 652 state->extravalid = 0;
653 } 653 }
654 /* 654 /*
655 * Return the index, that will be the insertion point. 655 * Return the index, that will be the deletion point for remove/replace.
656 */ 656 */
657 *indexp = index; 657 *indexp = index;
658 return XFS_ERROR(error); 658 return XFS_ERROR(error);
@@ -1820,8 +1820,14 @@ xfs_dir2_node_lookup(
1820 error = xfs_da_node_lookup_int(state, &rval); 1820 error = xfs_da_node_lookup_int(state, &rval);
1821 if (error) 1821 if (error)
1822 rval = error; 1822 rval = error;
1823 else if (rval == ENOENT && args->cmpresult == XFS_CMP_CASE) 1823 else if (rval == ENOENT && args->cmpresult == XFS_CMP_CASE) {
1824 rval = EEXIST; /* a case-insensitive match was found */ 1824 /* If a CI match, dup the actual name and return EEXIST */
1825 xfs_dir2_data_entry_t *dep;
1826
1827 dep = (xfs_dir2_data_entry_t *)((char *)state->extrablk.bp->
1828 data + state->extrablk.index);
1829 rval = xfs_dir_cilookup_result(args, dep->name, dep->namelen);
1830 }
1825 /* 1831 /*
1826 * Release the btree blocks and leaf block. 1832 * Release the btree blocks and leaf block.
1827 */ 1833 */