dir.c (2612e3bbc0386368a850140a6c9b990cd496a5ec) | dir.c (14e7316a3c73cf45cef4422549f3585fc1c53521) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * linux/fs/nfs/dir.c 4 * 5 * Copyright (C) 1992 Rick Sladkey 6 * 7 * nfs directory handling functions 8 * --- 1075 unchanged lines hidden (view full) --- 1084 struct nfs_cache_array *array; 1085 unsigned int i; 1086 bool first_emit = !desc->dir_cookie; 1087 1088 array = kmap_local_folio(desc->folio, 0); 1089 for (i = desc->cache_entry_index; i < array->size; i++) { 1090 struct nfs_cache_array_entry *ent; 1091 | 1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * linux/fs/nfs/dir.c 4 * 5 * Copyright (C) 1992 Rick Sladkey 6 * 7 * nfs directory handling functions 8 * --- 1075 unchanged lines hidden (view full) --- 1084 struct nfs_cache_array *array; 1085 unsigned int i; 1086 bool first_emit = !desc->dir_cookie; 1087 1088 array = kmap_local_folio(desc->folio, 0); 1089 for (i = desc->cache_entry_index; i < array->size; i++) { 1090 struct nfs_cache_array_entry *ent; 1091 |
1092 /* 1093 * nfs_readdir_handle_cache_misses return force clear at 1094 * (cache_misses > NFS_READDIR_CACHE_MISS_THRESHOLD) for 1095 * readdir heuristic, NFS_READDIR_CACHE_MISS_THRESHOLD + 1 1096 * entries need be emitted here. 1097 */ 1098 if (first_emit && i > NFS_READDIR_CACHE_MISS_THRESHOLD + 2) { 1099 desc->eob = true; 1100 break; 1101 } 1102 |
|
1092 ent = &array->array[i]; 1093 if (!dir_emit(desc->ctx, ent->name, ent->name_len, 1094 nfs_compat_user_ino64(ent->ino), ent->d_type)) { 1095 desc->eob = true; 1096 break; 1097 } 1098 memcpy(desc->verf, verf, sizeof(desc->verf)); 1099 if (i == array->size - 1) { 1100 desc->dir_cookie = array->last_cookie; 1101 nfs_readdir_seek_next_array(array, desc); 1102 } else { 1103 desc->dir_cookie = array->array[i + 1].cookie; 1104 desc->last_cookie = array->array[0].cookie; 1105 } 1106 if (nfs_readdir_use_cookie(file)) 1107 desc->ctx->pos = desc->dir_cookie; 1108 else 1109 desc->ctx->pos++; | 1103 ent = &array->array[i]; 1104 if (!dir_emit(desc->ctx, ent->name, ent->name_len, 1105 nfs_compat_user_ino64(ent->ino), ent->d_type)) { 1106 desc->eob = true; 1107 break; 1108 } 1109 memcpy(desc->verf, verf, sizeof(desc->verf)); 1110 if (i == array->size - 1) { 1111 desc->dir_cookie = array->last_cookie; 1112 nfs_readdir_seek_next_array(array, desc); 1113 } else { 1114 desc->dir_cookie = array->array[i + 1].cookie; 1115 desc->last_cookie = array->array[0].cookie; 1116 } 1117 if (nfs_readdir_use_cookie(file)) 1118 desc->ctx->pos = desc->dir_cookie; 1119 else 1120 desc->ctx->pos++; |
1110 if (first_emit && i > NFS_READDIR_CACHE_MISS_THRESHOLD + 1) { 1111 desc->eob = true; 1112 break; 1113 } | |
1114 } 1115 if (array->folio_is_eof) 1116 desc->eof = !desc->eob; 1117 1118 kunmap_local(array); 1119 dfprintk(DIRCACHE, "NFS: nfs_do_filldir() filling ended @ cookie %llu\n", 1120 (unsigned long long)desc->dir_cookie); 1121} --- 2196 unchanged lines hidden --- | 1121 } 1122 if (array->folio_is_eof) 1123 desc->eof = !desc->eob; 1124 1125 kunmap_local(array); 1126 dfprintk(DIRCACHE, "NFS: nfs_do_filldir() filling ended @ cookie %llu\n", 1127 (unsigned long long)desc->dir_cookie); 1128} --- 2196 unchanged lines hidden --- |