summaryrefslogtreecommitdiff
path: root/fs/ntfs3/index.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ntfs3/index.c')
-rw-r--r--fs/ntfs3/index.c395
1 files changed, 200 insertions, 195 deletions
diff --git a/fs/ntfs3/index.c b/fs/ntfs3/index.c
index 69c6c4e0b4d9..70ef59455b72 100644
--- a/fs/ntfs3/index.c
+++ b/fs/ntfs3/index.c
@@ -24,9 +24,10 @@ static const struct INDEX_NAMES {
};
/*
- * compare two names in index
+ * cmp_fnames - Compare two names in index.
+ *
* if l1 != 0
- * both names are little endian on-disk ATTR_FILE_NAME structs
+ * Both names are little endian on-disk ATTR_FILE_NAME structs.
* else
* key1 - cpu_str, key2 - ATTR_FILE_NAME
*/
@@ -52,7 +53,7 @@ static int cmp_fnames(const void *key1, size_t l1, const void *key2, size_t l2,
/*
* If names are equal (case insensitive)
- * try to compare it case sensitive
+ * try to compare it case sensitive.
*/
return ntfs_cmp_names_cpu(key1, s2, sbi->upcase, both_case);
}
@@ -62,7 +63,9 @@ static int cmp_fnames(const void *key1, size_t l1, const void *key2, size_t l2,
sbi->upcase, both_case);
}
-/* $SII of $Secure and $Q of Quota */
+/*
+ * cmp_uint - $SII of $Secure and $Q of Quota
+ */
static int cmp_uint(const void *key1, size_t l1, const void *key2, size_t l2,
const void *data)
{
@@ -79,7 +82,9 @@ static int cmp_uint(const void *key1, size_t l1, const void *key2, size_t l2,
return 0;
}
-/* $SDH of $Secure */
+/*
+ * cmp_sdh - $SDH of $Secure
+ */
static int cmp_sdh(const void *key1, size_t l1, const void *key2, size_t l2,
const void *data)
{
@@ -93,13 +98,13 @@ static int cmp_sdh(const void *key1, size_t l1, const void *key2, size_t l2,
t1 = le32_to_cpu(k1->hash);
t2 = le32_to_cpu(k2->hash);
- /* First value is a hash value itself */
+ /* First value is a hash value itself. */
if (t1 < t2)
return -1;
if (t1 > t2)
return 1;
- /* Second value is security Id */
+ /* Second value is security Id. */
if (data) {
t1 = le32_to_cpu(k1->sec_id);
t2 = le32_to_cpu(k2->sec_id);
@@ -112,7 +117,9 @@ static int cmp_sdh(const void *key1, size_t l1, const void *key2, size_t l2,
return 0;
}
-/* $O of ObjId and "$R" for Reparse */
+/*
+ * cmp_uints - $O of ObjId and "$R" for Reparse.
+ */
static int cmp_uints(const void *key1, size_t l1, const void *key2, size_t l2,
const void *data)
{
@@ -122,12 +129,13 @@ static int cmp_uints(const void *key1, size_t l1, const void *key2, size_t l2,
if ((size_t)data == 1) {
/*
- * ni_delete_all -> ntfs_remove_reparse -> delete all with this reference
+ * ni_delete_all -> ntfs_remove_reparse ->
+ * delete all with this reference.
* k1, k2 - pointers to REPARSE_KEY
*/
- k1 += 1; // skip REPARSE_KEY.ReparseTag
- k2 += 1; // skip REPARSE_KEY.ReparseTag
+ k1 += 1; // Skip REPARSE_KEY.ReparseTag
+ k2 += 1; // Skip REPARSE_KEY.ReparseTag
if (l2 <= sizeof(int))
return -1;
l2 -= sizeof(int);
@@ -229,7 +237,7 @@ static int bmp_buf_get(struct ntfs_index *indx, struct ntfs_inode *ni,
data_size = le64_to_cpu(b->nres.data_size);
if (WARN_ON(off >= data_size)) {
- /* looks like filesystem error */
+ /* Looks like filesystem error. */
return -EINVAL;
}
@@ -303,9 +311,7 @@ out:
}
/*
- * indx_mark_used
- *
- * marks the bit 'bit' as used
+ * indx_mark_used - Mark the bit @bit as used.
*/
static int indx_mark_used(struct ntfs_index *indx, struct ntfs_inode *ni,
size_t bit)
@@ -325,9 +331,7 @@ static int indx_mark_used(struct ntfs_index *indx, struct ntfs_inode *ni,
}
/*
- * indx_mark_free
- *
- * the bit 'bit' as free
+ * indx_mark_free - Mark the bit @bit as free.
*/
static int indx_mark_free(struct ntfs_index *indx, struct ntfs_inode *ni,
size_t bit)
@@ -347,9 +351,11 @@ static int indx_mark_free(struct ntfs_index *indx, struct ntfs_inode *ni,
}
/*
- * if ntfs_readdir calls this function (indx_used_bit -> scan_nres_bitmap),
- * inode is shared locked and no ni_lock
- * use rw_semaphore for read/write access to bitmap_run
+ * scan_nres_bitmap
+ *
+ * If ntfs_readdir calls this function (indx_used_bit -> scan_nres_bitmap),
+ * inode is shared locked and no ni_lock.
+ * Use rw_semaphore for read/write access to bitmap_run.
*/
static int scan_nres_bitmap(struct ntfs_inode *ni, struct ATTRIB *bitmap,
struct ntfs_index *indx, size_t from,
@@ -460,10 +466,9 @@ static bool scan_for_free(const ulong *buf, u32 bit, u32 bits, size_t *ret)
}
/*
- * indx_find_free
+ * indx_find_free - Look for free bit.
*
- * looks for free bit
- * returns -1 if no free bits
+ * Return: -1 if no free bits.
*/
static int indx_find_free(struct ntfs_index *indx, struct ntfs_inode *ni,
size_t *bit, struct ATTRIB **bitmap)
@@ -509,10 +514,9 @@ static bool scan_for_used(const ulong *buf, u32 bit, u32 bits, size_t *ret)
}
/*
- * indx_used_bit
+ * indx_used_bit - Look for used bit.
*
- * looks for used bit
- * returns MINUS_ONE_T if no used bits
+ * Return: MINUS_ONE_T if no used bits.
*/
int indx_used_bit(struct ntfs_index *indx, struct ntfs_inode *ni, size_t *bit)
{
@@ -548,9 +552,8 @@ int indx_used_bit(struct ntfs_index *indx, struct ntfs_inode *ni, size_t *bit)
/*
* hdr_find_split
*
- * finds a point at which the index allocation buffer would like to
- * be split.
- * NOTE: This function should never return 'END' entry NULL returns on error
+ * Find a point at which the index allocation buffer would like to be split.
+ * NOTE: This function should never return 'END' entry NULL returns on error.
*/
static const struct NTFS_DE *hdr_find_split(const struct INDEX_HDR *hdr)
{
@@ -568,7 +571,7 @@ static const struct NTFS_DE *hdr_find_split(const struct INDEX_HDR *hdr)
e = Add2Ptr(hdr, o);
- /* We must not return END entry */
+ /* We must not return END entry. */
if (de_is_last(e))
return p;
@@ -579,9 +582,8 @@ static const struct NTFS_DE *hdr_find_split(const struct INDEX_HDR *hdr)
}
/*
- * hdr_insert_head
+ * hdr_insert_head - Insert some entries at the beginning of the buffer.
*
- * inserts some entries at the beginning of the buffer.
* It is used to insert entries into a newly-created buffer.
*/
static const struct NTFS_DE *hdr_insert_head(struct INDEX_HDR *hdr,
@@ -656,14 +658,14 @@ static bool fnd_is_empty(struct ntfs_fnd *fnd)
}
/*
- * hdr_find_e
+ * hdr_find_e - Locate an entry the index buffer.
*
- * locates an entry the index buffer.
* If no matching entry is found, it returns the first entry which is greater
* than the desired entry If the search key is greater than all the entries the
* buffer, it returns the 'end' entry. This function does a binary search of the
- * current index buffer, for the first entry that is <= to the search value
- * Returns NULL if error
+ * current index buffer, for the first entry that is <= to the search value.
+ *
+ * Return: NULL if error.
*/
static struct NTFS_DE *hdr_find_e(const struct ntfs_index *indx,
const struct INDEX_HDR *hdr, const void *key,
@@ -687,7 +689,7 @@ static struct NTFS_DE *hdr_find_e(const struct ntfs_index *indx,
if (!offs)
goto next;
- /* use binary search algorithm */
+ /* Use binary search algorithm. */
next1:
if (off + sizeof(struct NTFS_DE) > end) {
e = NULL;
@@ -715,7 +717,7 @@ next1:
goto next;
}
- /* Store entry table */
+ /* Store entry table. */
offs[max_idx] = off;
if (!de_is_last(e)) {
@@ -725,8 +727,8 @@ next1:
}
/*
- * Table of pointers is created
- * Use binary search to find entry that is <= to the search value
+ * Table of pointers is created.
+ * Use binary search to find entry that is <= to the search value.
*/
fnd = -1;
min_idx = 0;
@@ -772,8 +774,9 @@ out1:
next:
/*
- * Entries index are sorted
- * Enumerate all entries until we find entry that is <= to the search value
+ * Entries index are sorted.
+ * Enumerate all entries until we find entry
+ * that is <= to the search value.
*/
if (off + sizeof(struct NTFS_DE) > end)
return NULL;
@@ -803,10 +806,9 @@ next:
}
/*
- * hdr_insert_de
+ * hdr_insert_de - Insert an index entry into the buffer.
*
- * inserts an index entry into the buffer.
- * 'before' should be a pointer previously returned from hdr_find_e
+ * 'before' should be a pointer previously returned from hdr_find_e.
*/
static struct NTFS_DE *hdr_insert_de(const struct ntfs_index *indx,
struct INDEX_HDR *hdr,
@@ -819,20 +821,20 @@ static struct NTFS_DE *hdr_insert_de(const struct ntfs_index *indx,
u32 total = le32_to_cpu(hdr->total);
u16 de_size = le16_to_cpu(de->size);
- /* First, check to see if there's enough room */
+ /* First, check to see if there's enough room. */
if (used + de_size > total)
return NULL;
/* We know there's enough space, so we know we'll succeed. */
if (before) {
- /* Check that before is inside Index */
+ /* Check that before is inside Index. */
if (off >= used || off < le32_to_cpu(hdr->de_off) ||
off + le16_to_cpu(before->size) > total) {
return NULL;
}
goto ok;
}
- /* No insert point is applied. Get it manually */
+ /* No insert point is applied. Get it manually. */
before = hdr_find_e(indx, hdr, de + 1, le16_to_cpu(de->key_size), ctx,
&diff);
if (!before)
@@ -850,9 +852,7 @@ ok:
}
/*
- * hdr_delete_de
- *
- * removes an entry from the index buffer
+ * hdr_delete_de - Remove an entry from the index buffer.
*/
static inline struct NTFS_DE *hdr_delete_de(struct INDEX_HDR *hdr,
struct NTFS_DE *re)
@@ -884,7 +884,7 @@ int indx_init(struct ntfs_index *indx, struct ntfs_sb_info *sbi,
u32 t32;
const struct INDEX_ROOT *root = resident_data(attr);
- /* Check root fields */
+ /* Check root fields. */
if (!root->index_block_clst)
return -EINVAL;
@@ -894,13 +894,13 @@ int indx_init(struct ntfs_index *indx, struct ntfs_sb_info *sbi,
t32 = le32_to_cpu(root->index_block_size);
indx->index_bits = blksize_bits(t32);
- /* Check index record size */
+ /* Check index record size. */
if (t32 < sbi->cluster_size) {
- /* index record is smaller than a cluster, use 512 blocks */
+ /* Index record is smaller than a cluster, use 512 blocks. */
if (t32 != root->index_block_clst * SECTOR_SIZE)
return -EINVAL;
- /* Check alignment to a cluster */
+ /* Check alignment to a cluster. */
if ((sbi->cluster_size >> SECTOR_SHIFT) &
(root->index_block_clst - 1)) {
return -EINVAL;
@@ -908,7 +908,7 @@ int indx_init(struct ntfs_index *indx, struct ntfs_sb_info *sbi,
indx->vbn2vbo_bits = SECTOR_SHIFT;
} else {
- /* index record must be a multiple of cluster size */
+ /* Index record must be a multiple of cluster size. */
if (t32 != root->index_block_clst << sbi->cluster_bits)
return -EINVAL;
@@ -953,7 +953,7 @@ static struct indx_node *indx_new(struct ntfs_index *indx,
return ERR_PTR(err);
}
- /* Create header */
+ /* Create header. */
index->rhdr.sign = NTFS_INDX_SIGNATURE;
index->rhdr.fix_off = cpu_to_le16(sizeof(struct INDEX_BUFFER)); // 0x28
fn = (bytes >> SECTOR_SHIFT) + 1; // 9
@@ -1011,9 +1011,11 @@ static int indx_write(struct ntfs_index *indx, struct ntfs_inode *ni,
}
/*
- * if ntfs_readdir calls this function
- * inode is shared locked and no ni_lock
- * use rw_semaphore for read/write access to alloc_run
+ * indx_read
+ *
+ * If ntfs_readdir calls this function
+ * inode is shared locked and no ni_lock.
+ * Use rw_semaphore for read/write access to alloc_run.
*/
int indx_read(struct ntfs_index *indx, struct ntfs_inode *ni, CLST vbn,
struct indx_node **node)
@@ -1095,9 +1097,7 @@ out:
}
/*
- * indx_find
- *
- * scans NTFS directory for given entry
+ * indx_find - Scan NTFS directory for given entry.
*/
int indx_find(struct ntfs_index *indx, struct ntfs_inode *ni,
const struct INDEX_ROOT *root, const void *key, size_t key_len,
@@ -1119,7 +1119,7 @@ int indx_find(struct ntfs_index *indx, struct ntfs_inode *ni,
hdr = &root->ihdr;
- /* Check cache */
+ /* Check cache. */
e = fnd->level ? fnd->de[fnd->level - 1] : fnd->root_de;
if (e && !de_is_last(e) &&
!(*indx->cmp)(key, key_len, e + 1, le16_to_cpu(e->key_size), ctx)) {
@@ -1128,10 +1128,10 @@ int indx_find(struct ntfs_index *indx, struct ntfs_inode *ni,
return 0;
}
- /* Soft finder reset */
+ /* Soft finder reset. */
fnd_clear(fnd);
- /* Lookup entry that is <= to the search value */
+ /* Lookup entry that is <= to the search value. */
e = hdr_find_e(indx, hdr, key, key_len, ctx, diff);
if (!e)
return -EINVAL;
@@ -1153,7 +1153,7 @@ int indx_find(struct ntfs_index *indx, struct ntfs_inode *ni,
if (err)
goto out;
- /* Lookup entry that is <= to the search value */
+ /* Lookup entry that is <= to the search value. */
e = hdr_find_e(indx, &node->index->ihdr, key, key_len, ctx,
diff);
if (!e) {
@@ -1180,7 +1180,7 @@ int indx_find_sort(struct ntfs_index *indx, struct ntfs_inode *ni,
int level = fnd->level;
if (!*entry) {
- /* Start find */
+ /* Start find. */
e = hdr_first_de(&root->ihdr);
if (!e)
return 0;
@@ -1210,7 +1210,7 @@ int indx_find_sort(struct ntfs_index *indx, struct ntfs_inode *ni,
fnd->de[level - 1] = e;
}
- /* Just to avoid tree cycle */
+ /* Just to avoid tree cycle. */
next_iter:
if (iter++ >= 1000)
return -EINVAL;
@@ -1225,12 +1225,12 @@ next_iter:
return -EINVAL;
}
- /* Read next level */
+ /* Read next level. */
err = indx_read(indx, ni, de_get_vbn(e), &n);
if (err)
return err;
- /* Try next level */
+ /* Try next level. */
e = hdr_first_de(&n->index->ihdr);
if (!e) {
kfree(n);
@@ -1250,7 +1250,7 @@ pop_level:
if (!de_is_last(e))
goto next_iter;
- /* Pop one level */
+ /* Pop one level. */
if (n) {
fnd_pop(fnd);
kfree(n);
@@ -1292,35 +1292,35 @@ int indx_find_raw(struct ntfs_index *indx, struct ntfs_inode *ni,
CLST next_vbn;
u32 record_size = ni->mi.sbi->record_size;
- /* Use non sorted algorithm */
+ /* Use non sorted algorithm. */
if (!*entry) {
- /* This is the first call */
+ /* This is the first call. */
e = hdr_first_de(&root->ihdr);
if (!e)
return 0;
fnd_clear(fnd);
fnd->root_de = e;
- /* The first call with setup of initial element */
+ /* The first call with setup of initial element. */
if (*off >= record_size) {
next_vbn = (((*off - record_size) >> indx->index_bits))
<< indx->idx2vbn_bits;
- /* jump inside cycle 'for'*/
+ /* Jump inside cycle 'for'. */
goto next;
}
- /* Start enumeration from root */
+ /* Start enumeration from root. */
*off = 0;
} else if (!fnd->root_de)
return -EINVAL;
for (;;) {
- /* Check if current entry can be used */
+ /* Check if current entry can be used. */
if (e && le16_to_cpu(e->size) > sizeof(struct NTFS_DE))
goto ok;
if (!fnd->level) {
- /* Continue to enumerate root */
+ /* Continue to enumerate root. */
if (!de_is_last(fnd->root_de)) {
e = hdr_next_de(&root->ihdr, fnd->root_de);
if (!e)
@@ -1329,10 +1329,10 @@ int indx_find_raw(struct ntfs_index *indx, struct ntfs_inode *ni,
continue;
}
- /* Start to enumerate indexes from 0 */
+ /* Start to enumerate indexes from 0. */
next_vbn = 0;
} else {
- /* Continue to enumerate indexes */
+ /* Continue to enumerate indexes. */
e2 = fnd->de[fnd->level - 1];
n = fnd->nodes[fnd->level - 1];
@@ -1345,31 +1345,31 @@ int indx_find_raw(struct ntfs_index *indx, struct ntfs_inode *ni,
continue;
}
- /* Continue with next index */
+ /* Continue with next index. */
next_vbn = le64_to_cpu(n->index->vbn) +
root->index_block_clst;
}
next:
- /* Release current index */
+ /* Release current index. */
if (n) {
fnd_pop(fnd);
put_indx_node(n);
n = NULL;
}
- /* Skip all free indexes */
+ /* Skip all free indexes. */
bit = next_vbn >> indx->idx2vbn_bits;
err = indx_used_bit(indx, ni, &bit);
if (err == -ENOENT || bit == MINUS_ONE_T) {
- /* No used indexes */
+ /* No used indexes. */
*entry = NULL;
return 0;
}
next_used_vbn = bit << indx->idx2vbn_bits;
- /* Read buffer into memory */
+ /* Read buffer into memory. */
err = indx_read(indx, ni, next_used_vbn, &n);
if (err)
return err;
@@ -1381,12 +1381,12 @@ next:
}
ok:
- /* return offset to restore enumerator if necessary */
+ /* Return offset to restore enumerator if necessary. */
if (!n) {
- /* 'e' points in root */
+ /* 'e' points in root, */
*off = PtrOffset(&root->ihdr, e);
} else {
- /* 'e' points in index */
+ /* 'e' points in index, */
*off = (le64_to_cpu(n->index->vbn) << indx->vbn2vbo_bits) +
record_size + PtrOffset(&n->index->ihdr, e);
}
@@ -1396,9 +1396,7 @@ ok:
}
/*
- * indx_create_allocate
- *
- * create "Allocation + Bitmap" attributes
+ * indx_create_allocate - Create "Allocation + Bitmap" attributes.
*/
static int indx_create_allocate(struct ntfs_index *indx, struct ntfs_inode *ni,
CLST *vbn)
@@ -1455,9 +1453,7 @@ out:
}
/*
- * indx_add_allocate
- *
- * add clusters to index
+ * indx_add_allocate - Add clusters to index.
*/
static int indx_add_allocate(struct ntfs_index *indx, struct ntfs_inode *ni,
CLST *vbn)
@@ -1490,7 +1486,7 @@ static int indx_add_allocate(struct ntfs_index *indx, struct ntfs_inode *ni,
data_size = (u64)(bit + 1) << indx->index_bits;
if (bmp) {
- /* Increase bitmap */
+ /* Increase bitmap. */
err = attr_set_size(ni, ATTR_BITMAP, in->name, in->name_len,
&indx->bitmap_run, bitmap_size(bit + 1),
NULL, true, NULL);
@@ -1507,7 +1503,7 @@ static int indx_add_allocate(struct ntfs_index *indx, struct ntfs_inode *ni,
goto out1;
}
- /* Increase allocation */
+ /* Increase allocation. */
err = attr_set_size(ni, ATTR_ALLOC, in->name, in->name_len,
&indx->alloc_run, data_size, &data_size, true,
NULL);
@@ -1522,7 +1518,7 @@ static int indx_add_allocate(struct ntfs_index *indx, struct ntfs_inode *ni,
return 0;
out2:
- /* Ops (no space?) */
+ /* Ops. No space? */
attr_set_size(ni, ATTR_BITMAP, in->name, in->name_len,
&indx->bitmap_run, bmp_size, &bmp_size_v, false, NULL);
@@ -1531,9 +1527,8 @@ out1:
}
/*
- * indx_insert_into_root
+ * indx_insert_into_root - Attempt to insert an entry into the index root.
*
- * attempts to insert an entry into the index root
* If necessary, it will twiddle the index b-tree.
*/
static int indx_insert_into_root(struct ntfs_index *indx, struct ntfs_inode *ni,
@@ -1557,7 +1552,7 @@ static int indx_insert_into_root(struct ntfs_index *indx, struct ntfs_inode *ni,
int ds_root;
struct INDEX_ROOT *root, *a_root;
- /* Get the record this root placed in */
+ /* Get the record this root placed in. */
root = indx_get_root(indx, ni, &attr, &mi);
if (!root)
return -EINVAL;
@@ -1579,7 +1574,7 @@ static int indx_insert_into_root(struct ntfs_index *indx, struct ntfs_inode *ni,
ds_root = new_de_size + hdr_used - hdr_total;
if (used + ds_root < sbi->max_bytes_per_attr) {
- /* make a room for new elements */
+ /* Make a room for new elements. */
mi_resize_attr(mi, attr, ds_root);
hdr->total = cpu_to_le32(hdr_total + ds_root);
e = hdr_insert_de(indx, hdr, new_de, root_de, ctx);
@@ -1590,16 +1585,19 @@ static int indx_insert_into_root(struct ntfs_index *indx, struct ntfs_inode *ni,
return 0;
}
- /* Make a copy of root attribute to restore if error */
+ /* Make a copy of root attribute to restore if error. */
a_root = kmemdup(attr, asize, GFP_NOFS);
if (!a_root)
return -ENOMEM;
- /* copy all the non-end entries from the index root to the new buffer.*/
+ /*
+ * Copy all the non-end entries from
+ * the index root to the new buffer.
+ */
to_move = 0;
e0 = hdr_first_de(hdr);
- /* Calculate the size to copy */
+ /* Calculate the size to copy. */
for (e = e0;; e = hdr_next_de(hdr, e)) {
if (!e) {
err = -EINVAL;
@@ -1632,7 +1630,7 @@ static int indx_insert_into_root(struct ntfs_index *indx, struct ntfs_inode *ni,
ds_root = new_root_size - root_size;
if (ds_root > 0 && used + ds_root > sbi->max_bytes_per_attr) {
- /* make root external */
+ /* Make root external. */
err = -EOPNOTSUPP;
goto out_free_re;
}
@@ -1640,7 +1638,7 @@ static int indx_insert_into_root(struct ntfs_index *indx, struct ntfs_inode *ni,
if (ds_root)
mi_resize_attr(mi, attr, ds_root);
- /* Fill first entry (vcn will be set later) */
+ /* Fill first entry (vcn will be set later). */
e = (struct NTFS_DE *)(root + 1);
memset(e, 0, sizeof(struct NTFS_DE));
e->size = cpu_to_le16(sizeof(struct NTFS_DE) + sizeof(u64));
@@ -1653,26 +1651,26 @@ static int indx_insert_into_root(struct ntfs_index *indx, struct ntfs_inode *ni,
fnd->root_de = hdr_first_de(hdr);
mi->dirty = true;
- /* Create alloc and bitmap attributes (if not) */
+ /* Create alloc and bitmap attributes (if not). */
err = run_is_empty(&indx->alloc_run)
? indx_create_allocate(indx, ni, &new_vbn)
: indx_add_allocate(indx, ni, &new_vbn);
- /* layout of record may be changed, so rescan root */
+ /* Layout of record may be changed, so rescan root. */
root = indx_get_root(indx, ni, &attr, &mi);
if (!root) {
- /* bug? */
+ /* Bug? */
ntfs_set_state(sbi, NTFS_DIRTY_ERROR);
err = -EINVAL;
goto out_free_re;
}
if (err) {
- /* restore root */
+ /* Restore root. */
if (mi_resize_attr(mi, attr, -ds_root))
memcpy(attr, a_root, asize);
else {
- /* bug? */
+ /* Bug? */
ntfs_set_state(sbi, NTFS_DIRTY_ERROR);
}
goto out_free_re;
@@ -1682,7 +1680,7 @@ static int indx_insert_into_root(struct ntfs_index *indx, struct ntfs_inode *ni,
*(__le64 *)(e + 1) = cpu_to_le64(new_vbn);
mi->dirty = true;
- /* now we can create/format the new buffer and copy the entries into */
+ /* Now we can create/format the new buffer and copy the entries into. */
n = indx_new(indx, ni, new_vbn, sub_vbn);
if (IS_ERR(n)) {
err = PTR_ERR(n);
@@ -1693,19 +1691,19 @@ static int indx_insert_into_root(struct ntfs_index *indx, struct ntfs_inode *ni,
hdr_used = le32_to_cpu(hdr->used);
hdr_total = le32_to_cpu(hdr->total);
- /* Copy root entries into new buffer */
+ /* Copy root entries into new buffer. */
hdr_insert_head(hdr, re, to_move);
- /* Update bitmap attribute */
+ /* Update bitmap attribute. */
indx_mark_used(indx, ni, new_vbn >> indx->idx2vbn_bits);
- /* Check if we can insert new entry new index buffer */
+ /* Check if we can insert new entry new index buffer. */
if (hdr_used + new_de_size > hdr_total) {
/*
- * This occurs if mft record is the same or bigger than index
+ * This occurs if MFT record is the same or bigger than index
* buffer. Move all root new index and have no space to add
- * new entry classic case when mft record is 1K and index
- * buffer 4K the problem should not occurs
+ * new entry classic case when MFT record is 1K and index
+ * buffer 4K the problem should not occurs.
*/
kfree(re);
indx_write(indx, ni, n, 0);
@@ -1717,8 +1715,8 @@ static int indx_insert_into_root(struct ntfs_index *indx, struct ntfs_inode *ni,
}
/*
- * Now root is a parent for new index buffer
- * Insert NewEntry a new buffer
+ * Now root is a parent for new index buffer.
+ * Insert NewEntry a new buffer.
*/
e = hdr_insert_de(indx, hdr, new_de, NULL, ctx);
if (!e) {
@@ -1727,7 +1725,7 @@ static int indx_insert_into_root(struct ntfs_index *indx, struct ntfs_inode *ni,
}
fnd_push(fnd, n, e);
- /* Just write updates index into disk */
+ /* Just write updates index into disk. */
indx_write(indx, ni, n, 0);
n = NULL;
@@ -1744,7 +1742,7 @@ out_free_root:
/*
* indx_insert_into_buffer
*
- * attempts to insert an entry into an Index Allocation Buffer.
+ * Attempt to insert an entry into an Index Allocation Buffer.
* If necessary, it will split the buffer.
*/
static int
@@ -1764,12 +1762,12 @@ indx_insert_into_buffer(struct ntfs_index *indx, struct ntfs_inode *ni,
__le64 t_vbn, *sub_vbn;
u16 sp_size;
- /* Try the most easy case */
+ /* Try the most easy case. */
e = fnd->level - 1 == level ? fnd->de[level] : NULL;
e = hdr_insert_de(indx, hdr1, new_de, e, ctx);
fnd->de[level] = e;
if (e) {
- /* Just write updated index into disk */
+ /* Just write updated index into disk. */
indx_write(indx, ni, n1, 0);
return 0;
}
@@ -1809,7 +1807,7 @@ indx_insert_into_buffer(struct ntfs_index *indx, struct ntfs_inode *ni,
if (err)
goto out;
- /* Allocate and format memory a new index buffer */
+ /* Allocate and format memory a new index buffer. */
n2 = indx_new(indx, ni, new_vbn, sub_vbn);
if (IS_ERR(n2)) {
err = PTR_ERR(n2);
@@ -1818,20 +1816,23 @@ indx_insert_into_buffer(struct ntfs_index *indx, struct ntfs_inode *ni,
hdr2 = &n2->index->ihdr;
- /* Make sp a parent for new buffer */
+ /* Make sp a parent for new buffer. */
de_set_vbn(up_e, new_vbn);
- /* copy all the entries <= sp into the new buffer. */
+ /* Copy all the entries <= sp into the new buffer. */
de_t = hdr_first_de(hdr1);
to_copy = PtrOffset(de_t, sp);
hdr_insert_head(hdr2, de_t, to_copy);
- /* remove all entries (sp including) from hdr1 */
+ /* Remove all entries (sp including) from hdr1. */
used = le32_to_cpu(hdr1->used) - to_copy - sp_size;
memmove(de_t, Add2Ptr(sp, sp_size), used - le32_to_cpu(hdr1->de_off));
hdr1->used = cpu_to_le32(used);
- /* Insert new entry into left or right buffer (depending on sp <=> new_de) */
+ /*
+ * Insert new entry into left or right buffer
+ * (depending on sp <=> new_de).
+ */
hdr_insert_de(indx,
(*indx->cmp)(new_de + 1, le16_to_cpu(new_de->key_size),
up_e + 1, le16_to_cpu(up_e->key_size),
@@ -1848,18 +1849,18 @@ indx_insert_into_buffer(struct ntfs_index *indx, struct ntfs_inode *ni,
put_indx_node(n2);
/*
- * we've finished splitting everybody, so we are ready to
+ * We've finished splitting everybody, so we are ready to
* insert the promoted entry into the parent.
*/
if (!level) {
- /* Insert in root */
+ /* Insert in root. */
err = indx_insert_into_root(indx, ni, up_e, NULL, ctx, fnd);
if (err)
goto out;
} else {
/*
- * The target buffer's parent is another index buffer
- * TODO: Remove recursion
+ * The target buffer's parent is another index buffer.
+ * TODO: Remove recursion.
*/
err = indx_insert_into_buffer(indx, ni, root, up_e, ctx,
level - 1, fnd);
@@ -1874,9 +1875,7 @@ out:
}
/*
- * indx_insert_entry
- *
- * inserts new entry into index
+ * indx_insert_entry - Insert new entry into index.
*/
int indx_insert_entry(struct ntfs_index *indx, struct ntfs_inode *ni,
const struct NTFS_DE *new_de, const void *ctx,
@@ -1904,7 +1903,10 @@ int indx_insert_entry(struct ntfs_index *indx, struct ntfs_inode *ni,
}
if (fnd_is_empty(fnd)) {
- /* Find the spot the tree where we want to insert the new entry. */
+ /*
+ * Find the spot the tree where we want to
+ * insert the new entry.
+ */
err = indx_find(indx, ni, root, new_de + 1,
le16_to_cpu(new_de->key_size), ctx, &diff, &e,
fnd);
@@ -1918,13 +1920,18 @@ int indx_insert_entry(struct ntfs_index *indx, struct ntfs_inode *ni,
}
if (!fnd->level) {
- /* The root is also a leaf, so we'll insert the new entry into it. */
+ /*
+ * The root is also a leaf, so we'll insert the
+ * new entry into it.
+ */
err = indx_insert_into_root(indx, ni, new_de, fnd->root_de, ctx,
fnd);
if (err)
goto out;
} else {
- /* found a leaf buffer, so we'll insert the new entry into it.*/
+ /*
+ * Found a leaf buffer, so we'll insert the new entry into it.
+ */
err = indx_insert_into_buffer(indx, ni, root, new_de, ctx,
fnd->level - 1, fnd);
if (err)
@@ -1938,9 +1945,7 @@ out1:
}
/*
- * indx_find_buffer
- *
- * locates a buffer the tree.
+ * indx_find_buffer - Locate a buffer from the tree.
*/
static struct indx_node *indx_find_buffer(struct ntfs_index *indx,
struct ntfs_inode *ni,
@@ -1952,7 +1957,7 @@ static struct indx_node *indx_find_buffer(struct ntfs_index *indx,
struct indx_node *r;
const struct INDEX_HDR *hdr = n ? &n->index->ihdr : &root->ihdr;
- /* Step 1: Scan one level */
+ /* Step 1: Scan one level. */
for (e = hdr_first_de(hdr);; e = hdr_next_de(hdr, e)) {
if (!e)
return ERR_PTR(-EINVAL);
@@ -1964,7 +1969,7 @@ static struct indx_node *indx_find_buffer(struct ntfs_index *indx,
break;
}
- /* Step2: Do recursion */
+ /* Step2: Do recursion. */
e = Add2Ptr(hdr, le32_to_cpu(hdr->de_off));
for (;;) {
if (de_has_vcn_ex(e)) {
@@ -1987,9 +1992,7 @@ static struct indx_node *indx_find_buffer(struct ntfs_index *indx,
}
/*
- * indx_shrink
- *
- * deallocates unused tail indexes
+ * indx_shrink - Deallocate unused tail indexes.
*/
static int indx_shrink(struct ntfs_index *indx, struct ntfs_inode *ni,
size_t bit)
@@ -2066,7 +2069,7 @@ static int indx_free_children(struct ntfs_index *indx, struct ntfs_inode *ni,
return err;
hdr = &n->index->ihdr;
- /* First, recurse into the children, if any.*/
+ /* First, recurse into the children, if any. */
if (hdr_has_subnode(hdr)) {
for (e = hdr_first_de(hdr); e; e = hdr_next_de(hdr, e)) {
indx_free_children(indx, ni, e, false);
@@ -2078,7 +2081,9 @@ static int indx_free_children(struct ntfs_index *indx, struct ntfs_inode *ni,
put_indx_node(n);
i = vbn >> indx->idx2vbn_bits;
- /* We've gotten rid of the children; add this buffer to the free list. */
+ /*
+ * We've gotten rid of the children; add this buffer to the free list.
+ */
indx_mark_free(indx, ni, i);
if (!trim)
@@ -2086,8 +2091,8 @@ static int indx_free_children(struct ntfs_index *indx, struct ntfs_inode *ni,
/*
* If there are no used indexes after current free index
- * then we can truncate allocation and bitmap
- * Use bitmap to estimate the case
+ * then we can truncate allocation and bitmap.
+ * Use bitmap to estimate the case.
*/
indx_shrink(indx, ni, i + 1);
return 0;
@@ -2096,9 +2101,9 @@ static int indx_free_children(struct ntfs_index *indx, struct ntfs_inode *ni,
/*
* indx_get_entry_to_replace
*
- * finds a replacement entry for a deleted entry
- * always returns a node entry:
- * NTFS_IE_HAS_SUBNODES is set the flags and the size includes the sub_vcn
+ * Find a replacement entry for a deleted entry.
+ * Always returns a node entry:
+ * NTFS_IE_HAS_SUBNODES is set the flags and the size includes the sub_vcn.
*/
static int indx_get_entry_to_replace(struct ntfs_index *indx,
struct ntfs_inode *ni,
@@ -2115,7 +2120,7 @@ static int indx_get_entry_to_replace(struct ntfs_index *indx,
*de_to_replace = NULL;
- /* Find first leaf entry down from de_next */
+ /* Find first leaf entry down from de_next. */
vbn = de_get_vbn(de_next);
for (;;) {
n = NULL;
@@ -2128,8 +2133,8 @@ static int indx_get_entry_to_replace(struct ntfs_index *indx,
if (!de_is_last(e)) {
/*
- * This buffer is non-empty, so its first entry could be used as the
- * replacement entry.
+ * This buffer is non-empty, so its first entry
+ * could be used as the replacement entry.
*/
level = fnd->level - 1;
}
@@ -2137,7 +2142,7 @@ static int indx_get_entry_to_replace(struct ntfs_index *indx,
if (!de_has_vcn(e))
break;
- /* This buffer is a node. Continue to go down */
+ /* This buffer is a node. Continue to go down. */
vbn = de_get_vbn(e);
}
@@ -2158,15 +2163,16 @@ static int indx_get_entry_to_replace(struct ntfs_index *indx,
if (!de_has_vcn(re)) {
/*
- * The replacement entry we found doesn't have a sub_vcn. increase its size
- * to hold one.
+ * The replacement entry we found doesn't have a sub_vcn.
+ * increase its size to hold one.
*/
le16_add_cpu(&re->size, sizeof(u64));
re->flags |= NTFS_IE_HAS_SUBNODES;
} else {
/*
- * The replacement entry we found was a node entry, which means that all
- * its child buffers are empty. Return them to the free pool.
+ * The replacement entry we found was a node entry, which
+ * means that all its child buffers are empty. Return them
+ * to the free pool.
*/
indx_free_children(indx, ni, te, true);
}
@@ -2191,9 +2197,7 @@ out:
}
/*
- * indx_delete_entry
- *
- * deletes an entry from the index.
+ * indx_delete_entry - Delete an entry from the index.
*/
int indx_delete_entry(struct ntfs_index *indx, struct ntfs_inode *ni,
const void *key, u32 key_len, const void *ctx)
@@ -2257,13 +2261,13 @@ int indx_delete_entry(struct ntfs_index *indx, struct ntfs_inode *ni,
e_size = le16_to_cpu(e->size);
if (!de_has_vcn_ex(e)) {
- /* The entry to delete is a leaf, so we can just rip it out */
+ /* The entry to delete is a leaf, so we can just rip it out. */
hdr_delete_de(hdr, e);
if (!level) {
hdr->total = hdr->used;
- /* Shrink resident root attribute */
+ /* Shrink resident root attribute. */
mi_resize_attr(mi, attr, 0 - e_size);
goto out;
}
@@ -2306,9 +2310,10 @@ int indx_delete_entry(struct ntfs_index *indx, struct ntfs_inode *ni,
} else {
/*
* There is no replacement for the current entry.
- * This means that the subtree rooted at its node is empty,
- * and can be deleted, which turn means that the node can
- * just inherit the deleted entry sub_vcn
+ * This means that the subtree rooted at its node
+ * is empty, and can be deleted, which turn means
+ * that the node can just inherit the deleted
+ * entry sub_vcn.
*/
indx_free_children(indx, ni, next, true);
@@ -2319,17 +2324,17 @@ int indx_delete_entry(struct ntfs_index *indx, struct ntfs_inode *ni,
} else {
hdr->total = hdr->used;
- /* Shrink resident root attribute */
+ /* Shrink resident root attribute. */
mi_resize_attr(mi, attr, 0 - e_size);
}
}
}
- /* Delete a branch of tree */
+ /* Delete a branch of tree. */
if (!fnd2 || !fnd2->level)
goto out;
- /* Reinit root 'cause it can be changed */
+ /* Reinit root 'cause it can be changed. */
root = indx_get_root(indx, ni, &attr, &mi);
if (!root) {
err = -EINVAL;
@@ -2343,7 +2348,7 @@ int indx_delete_entry(struct ntfs_index *indx, struct ntfs_inode *ni,
hdr = level ? &fnd->nodes[level - 1]->index->ihdr : &root->ihdr;
- /* Scan current level */
+ /* Scan current level. */
for (e = hdr_first_de(hdr);; e = hdr_next_de(hdr, e)) {
if (!e) {
err = -EINVAL;
@@ -2360,7 +2365,7 @@ int indx_delete_entry(struct ntfs_index *indx, struct ntfs_inode *ni,
}
if (!e) {
- /* Do slow search from root */
+ /* Do slow search from root. */
struct indx_node *in;
fnd_clear(fnd);
@@ -2375,7 +2380,7 @@ int indx_delete_entry(struct ntfs_index *indx, struct ntfs_inode *ni,
fnd_push(fnd, in, NULL);
}
- /* Merge fnd2 -> fnd */
+ /* Merge fnd2 -> fnd. */
for (level = 0; level < fnd2->level; level++) {
fnd_push(fnd, fnd2->nodes[level], fnd2->de[level]);
fnd2->nodes[level] = NULL;
@@ -2421,8 +2426,8 @@ int indx_delete_entry(struct ntfs_index *indx, struct ntfs_inode *ni,
if (sub_vbn != de_get_vbn_le(e)) {
/*
- * Didn't find the parent entry, although this buffer is the parent trail.
- * Something is corrupt.
+ * Didn't find the parent entry, although this buffer
+ * is the parent trail. Something is corrupt.
*/
err = -EINVAL;
goto out;
@@ -2430,11 +2435,11 @@ int indx_delete_entry(struct ntfs_index *indx, struct ntfs_inode *ni,
if (de_is_last(e)) {
/*
- * Since we can't remove the end entry, we'll remove its
- * predecessor instead. This means we have to transfer the
- * predecessor's sub_vcn to the end entry.
- * Note: that this index block is not empty, so the
- * predecessor must exist
+ * Since we can't remove the end entry, we'll remove
+ * its predecessor instead. This means we have to
+ * transfer the predecessor's sub_vcn to the end entry.
+ * Note: This index block is not empty, so the
+ * predecessor must exist.
*/
if (!prev) {
err = -EINVAL;
@@ -2452,9 +2457,9 @@ int indx_delete_entry(struct ntfs_index *indx, struct ntfs_inode *ni,
}
/*
- * Copy the current entry into a temporary buffer (stripping off its
- * down-pointer, if any) and delete it from the current buffer or root,
- * as appropriate.
+ * Copy the current entry into a temporary buffer (stripping
+ * off its down-pointer, if any) and delete it from the current
+ * buffer or root, as appropriate.
*/
e_size = le16_to_cpu(e->size);
me = kmemdup(e, e_size, GFP_NOFS);
@@ -2474,14 +2479,14 @@ int indx_delete_entry(struct ntfs_index *indx, struct ntfs_inode *ni,
level = 0;
hdr->total = hdr->used;
- /* Shrink resident root attribute */
+ /* Shrink resident root attribute. */
mi_resize_attr(mi, attr, 0 - e_size);
} else {
indx_write(indx, ni, n2d, 0);
level = level2;
}
- /* Mark unused buffers as free */
+ /* Mark unused buffers as free. */
trim_bit = -1;
for (; level < fnd->level; level++) {
ib = fnd->nodes[level]->index;
@@ -2512,8 +2517,8 @@ int indx_delete_entry(struct ntfs_index *indx, struct ntfs_inode *ni,
} else {
/*
* This tree needs to be collapsed down to an empty root.
- * Recreate the index root as an empty leaf and free all the bits the
- * index allocation bitmap.
+ * Recreate the index root as an empty leaf and free all
+ * the bits the index allocation bitmap.
*/
fnd_clear(fnd);
fnd_clear(fnd2);
@@ -2548,7 +2553,7 @@ int indx_delete_entry(struct ntfs_index *indx, struct ntfs_inode *ni,
goto out;
}
- /* Fill first entry */
+ /* Fill first entry. */
e = (struct NTFS_DE *)(root + 1);
e->ref.low = 0;
e->ref.high = 0;
@@ -2601,7 +2606,7 @@ int indx_update_dup(struct ntfs_inode *ni, struct ntfs_sb_info *sbi,
goto out;
}
- /* Find entry in directory */
+ /* Find entry in directory. */
err = indx_find(indx, ni, root, fname, fname_full_size(fname), sbi,
&diff, &e, fnd);
if (err)
@@ -2620,7 +2625,7 @@ int indx_update_dup(struct ntfs_inode *ni, struct ntfs_sb_info *sbi,
e_fname = (struct ATTR_FILE_NAME *)(e + 1);
if (!memcmp(&e_fname->dup, dup, sizeof(*dup))) {
- /* nothing to update in index! Try to avoid this call */
+ /* Nothing to update in index! Try to avoid this call. */
goto out;
}