Lines Matching +full:entry +full:- +full:name
21 psi->data = NULL; in efi_pstore_open()
27 psi->data = NULL; in efi_pstore_close()
36 static int efi_pstore_read_func(struct efivar_entry *entry, in efi_pstore_read_func() argument
40 char name[DUMP_NAME_LEN], data_type; in efi_pstore_read_func() local
47 if (efi_guidcmp(entry->var.VendorGuid, vendor)) in efi_pstore_read_func()
51 name[i] = entry->var.VariableName[i]; in efi_pstore_read_func()
53 if (sscanf(name, "dump-type%u-%u-%d-%llu-%c", in efi_pstore_read_func()
54 &record->type, &part, &cnt, &time, &data_type) == 5) { in efi_pstore_read_func()
55 record->id = generic_id(time, part, cnt); in efi_pstore_read_func()
56 record->part = part; in efi_pstore_read_func()
57 record->count = cnt; in efi_pstore_read_func()
58 record->time.tv_sec = time; in efi_pstore_read_func()
59 record->time.tv_nsec = 0; in efi_pstore_read_func()
61 record->compressed = true; in efi_pstore_read_func()
63 record->compressed = false; in efi_pstore_read_func()
64 record->ecc_notice_size = 0; in efi_pstore_read_func()
65 } else if (sscanf(name, "dump-type%u-%u-%d-%llu", in efi_pstore_read_func()
66 &record->type, &part, &cnt, &time) == 4) { in efi_pstore_read_func()
67 record->id = generic_id(time, part, cnt); in efi_pstore_read_func()
68 record->part = part; in efi_pstore_read_func()
69 record->count = cnt; in efi_pstore_read_func()
70 record->time.tv_sec = time; in efi_pstore_read_func()
71 record->time.tv_nsec = 0; in efi_pstore_read_func()
72 record->compressed = false; in efi_pstore_read_func()
73 record->ecc_notice_size = 0; in efi_pstore_read_func()
74 } else if (sscanf(name, "dump-type%u-%u-%llu", in efi_pstore_read_func()
75 &record->type, &part, &time) == 3) { in efi_pstore_read_func()
81 record->id = generic_id(time, part, 0); in efi_pstore_read_func()
82 record->part = part; in efi_pstore_read_func()
83 record->count = 0; in efi_pstore_read_func()
84 record->time.tv_sec = time; in efi_pstore_read_func()
85 record->time.tv_nsec = 0; in efi_pstore_read_func()
86 record->compressed = false; in efi_pstore_read_func()
87 record->ecc_notice_size = 0; in efi_pstore_read_func()
91 entry->var.DataSize = 1024; in efi_pstore_read_func()
92 __efivar_entry_get(entry, &entry->var.Attributes, in efi_pstore_read_func()
93 &entry->var.DataSize, entry->var.Data); in efi_pstore_read_func()
94 size = entry->var.DataSize; in efi_pstore_read_func()
95 memcpy(record->buf, entry->var.Data, in efi_pstore_read_func()
103 * @pos: scanning entry
104 * @next: next entry
111 pos->scanning = true; in efi_pstore_scan_sysfs_enter()
112 if (&next->list != head) in efi_pstore_scan_sysfs_enter()
113 next->scanning = true; in efi_pstore_scan_sysfs_enter()
118 * @entry: deleting entry
121 static inline int __efi_pstore_scan_sysfs_exit(struct efivar_entry *entry, in __efi_pstore_scan_sysfs_exit() argument
124 if (entry->deleting) { in __efi_pstore_scan_sysfs_exit()
125 list_del(&entry->list); in __efi_pstore_scan_sysfs_exit()
127 efivar_unregister(entry); in __efi_pstore_scan_sysfs_exit()
129 return -EINTR; in __efi_pstore_scan_sysfs_exit()
131 entry->scanning = false; in __efi_pstore_scan_sysfs_exit()
138 * @pos: scanning entry
139 * @next: next entry
153 ret = __efi_pstore_scan_sysfs_exit(next, &next->list != head); in efi_pstore_scan_sysfs_exit()
168 struct efivar_entry **pos = (struct efivar_entry **)&record->psi->data; in efi_pstore_sysfs_entry_iter()
169 struct efivar_entry *entry, *n; in efi_pstore_sysfs_entry_iter() local
175 list_for_each_entry_safe(entry, n, head, list) { in efi_pstore_sysfs_entry_iter()
176 efi_pstore_scan_sysfs_enter(entry, n, head); in efi_pstore_sysfs_entry_iter()
178 size = efi_pstore_read_func(entry, record); in efi_pstore_sysfs_entry_iter()
179 ret = efi_pstore_scan_sysfs_exit(entry, n, head, in efi_pstore_sysfs_entry_iter()
207 * This function returns a size of NVRAM entry logged via efi_pstore_write().
210 * size > 0: Got data of an entry logged via efi_pstore_write() successfully,
212 * size == 0: Entry was not logged via efi_pstore_write(),
214 * size < 0: Failed to get data of entry logging via efi_pstore_write(),
215 * and pstore will stop reading entry.
221 record->buf = kzalloc(EFIVARS_DATA_SIZE_MAX, GFP_KERNEL); in efi_pstore_read()
222 if (!record->buf) in efi_pstore_read()
223 return -ENOMEM; in efi_pstore_read()
226 size = -EINTR; in efi_pstore_read()
234 kfree(record->buf); in efi_pstore_read()
235 record->buf = NULL; in efi_pstore_read()
242 char name[DUMP_NAME_LEN]; in efi_pstore_write() local
247 record->id = generic_id(record->time.tv_sec, record->part, in efi_pstore_write()
248 record->count); in efi_pstore_write()
250 /* Since we copy the entire length of name, make sure it is wiped. */ in efi_pstore_write()
251 memset(name, 0, sizeof(name)); in efi_pstore_write()
253 snprintf(name, sizeof(name), "dump-type%u-%u-%d-%lld-%c", in efi_pstore_write()
254 record->type, record->part, record->count, in efi_pstore_write()
255 (long long)record->time.tv_sec, in efi_pstore_write()
256 record->compressed ? 'C' : 'D'); in efi_pstore_write()
259 efi_name[i] = name[i]; in efi_pstore_write()
262 preemptible(), record->size, record->psi->buf); in efi_pstore_write()
264 if (record->reason == KMSG_DUMP_OOPS) in efi_pstore_write()
271 * Clean up an entry with the same name
273 static int efi_pstore_erase_func(struct efivar_entry *entry, void *data) in efi_pstore_erase_func() argument
279 if (efi_guidcmp(entry->var.VendorGuid, vendor)) in efi_pstore_erase_func()
282 if (ucs2_strncmp(entry->var.VariableName, efi_name, (size_t)ucs2_len)) in efi_pstore_erase_func()
285 if (entry->scanning) { in efi_pstore_erase_func()
287 * Skip deletion because this entry will be deleted in efi_pstore_erase_func()
290 entry->deleting = true; in efi_pstore_erase_func()
292 list_del(&entry->list); in efi_pstore_erase_func()
295 __efivar_entry_delete(entry); in efi_pstore_erase_func()
300 static int efi_pstore_erase_name(const char *name) in efi_pstore_erase_name() argument
302 struct efivar_entry *entry = NULL; in efi_pstore_erase_name() local
307 efi_name[i] = name[i]; in efi_pstore_erase_name()
308 if (name[i] == '\0') in efi_pstore_erase_name()
313 return -EINTR; in efi_pstore_erase_name()
316 efi_name, &entry); in efi_pstore_erase_name()
319 if (found && !entry->scanning) in efi_pstore_erase_name()
320 efivar_unregister(entry); in efi_pstore_erase_name()
322 return found ? 0 : -ENOENT; in efi_pstore_erase_name()
327 char name[DUMP_NAME_LEN]; in efi_pstore_erase() local
330 snprintf(name, sizeof(name), "dump-type%u-%u-%d-%lld", in efi_pstore_erase()
331 record->type, record->part, record->count, in efi_pstore_erase()
332 (long long)record->time.tv_sec); in efi_pstore_erase()
333 ret = efi_pstore_erase_name(name); in efi_pstore_erase()
334 if (ret != -ENOENT) in efi_pstore_erase()
337 snprintf(name, sizeof(name), "dump-type%u-%u-%lld", in efi_pstore_erase()
338 record->type, record->part, (long long)record->time.tv_sec); in efi_pstore_erase()
339 ret = efi_pstore_erase_name(name); in efi_pstore_erase()
346 .name = "efi",
368 return -ENOMEM; in efivars_pstore_init()