Lines Matching refs:record
658 struct pstore_zone *zone, struct pstore_record *record)
669 if (record->count != hdr->counter)
699 static int psz_pstore_erase(struct pstore_record *record)
701 struct psz_context *cxt = record->psi->data;
703 switch (record->type) {
705 if (record->id >= cxt->kmsg_max_cnt)
707 return psz_kmsg_erase(cxt, cxt->kpszs[record->id], record);
713 if (record->id >= cxt->ftrace_max_cnt)
715 return psz_record_erase(cxt, cxt->fpszs[record->id]);
721 struct pstore_record *record)
723 struct psz_context *cxt = record->psi->data;
729 hdr->compressed = record->compressed;
730 hdr->time.tv_sec = record->time.tv_sec;
731 hdr->time.tv_nsec = record->time.tv_nsec;
732 hdr->reason = record->reason;
746 struct pstore_record *record)
772 psz_write_kmsg_hdr(zone, record);
774 size = min_t(size_t, record->size, zone->buffer_size - hlen);
775 ret = psz_zone_write(zone, FLUSH_ALL, record->buf, size, hlen);
796 struct pstore_record *record)
806 if (record->part != 1)
812 ret = psz_kmsg_write_record(cxt, record);
824 struct pstore_record *record)
831 if (!zone || !record)
837 cnt = record->size;
838 buf = record->buf;
872 static int notrace psz_pstore_write(struct pstore_record *record)
874 struct psz_context *cxt = record->psi->data;
876 if (record->type == PSTORE_TYPE_DMESG &&
877 record->reason == KMSG_DUMP_PANIC)
884 if (is_on_panic() && record->type != PSTORE_TYPE_DMESG)
887 switch (record->type) {
889 return psz_kmsg_write(cxt, record);
891 return psz_record_write(cxt->cpsz, record);
893 return psz_record_write(cxt->ppsz, record);
899 return psz_record_write(cxt->fpszs[zonenum], record);
942 struct pstore_record *record)
950 record->compressed = hdr->compressed;
951 record->time.tv_sec = hdr->time.tv_sec;
952 record->time.tv_nsec = hdr->time.tv_nsec;
953 record->reason = hdr->reason;
954 record->count = hdr->counter;
959 struct pstore_record *record)
964 /* Clear and skip this kmsg dump record if it has no valid header */
965 if (psz_kmsg_read_hdr(zone, record)) {
972 if (!record->compressed) {
974 kmsg_dump_reason_str(record->reason),
975 record->count);
977 record->buf = krealloc(buf, hlen + size, GFP_KERNEL);
978 if (!record->buf) {
983 record->buf = kmalloc(size, GFP_KERNEL);
984 if (!record->buf)
988 size = psz_zone_read_buffer(zone, record->buf + hlen, size,
991 kfree(record->buf);
1000 struct pstore_record *record)
1006 if (!zone || !record)
1016 ret = pstore_ftrace_combine_log(&record->buf, &record->size,
1022 cxt = record->psi->data;
1026 record->id = 0;
1027 return record->size ? record->size : -ENOMSG;
1031 struct pstore_record *record)
1036 if (!zone || !record)
1044 record->buf = kmalloc(len, GFP_KERNEL);
1045 if (!record->buf)
1048 if (unlikely(psz_zone_read_oldbuf(zone, record->buf, len, 0))) {
1049 kfree(record->buf);
1056 static ssize_t psz_pstore_read(struct pstore_record *record)
1058 struct psz_context *cxt = record->psi->data;
1060 struct pstore_record *record);
1074 record->type = zone->type;
1075 switch (record->type) {
1078 record->id = cxt->kmsg_read_cnt - 1;
1091 ret = readop(zone, record);
1309 pr_warn("at least one record size must be non-zero\n");
1339 * if no @write, pstore do not support to remove record file.