Lines Matching refs:psi
381 record->psi = psinfo;
656 ret = record->psi->write(record);
672 int pstore_register(struct pstore_info *psi)
676 if (backend && strcmp(backend, psi->name)) {
677 pr_warn("ignoring unexpected backend '%s'\n", psi->name);
682 if (!psi->flags) {
684 psi->name);
689 if (!psi->read || !psi->write) {
691 psi->name);
695 new_backend = kstrdup(psi->name, GFP_KERNEL);
702 psinfo->name, psi->name);
708 if (!psi->write_user)
709 psi->write_user = pstore_write_user_compat;
710 psinfo = psi;
714 if (psi->flags & PSTORE_FLAGS_DMESG)
719 if (psi->flags & PSTORE_FLAGS_DMESG) {
723 if (psi->flags & PSTORE_FLAGS_CONSOLE)
725 if (psi->flags & PSTORE_FLAGS_FTRACE)
727 if (psi->flags & PSTORE_FLAGS_PMSG)
739 pr_info("Registered %s as persistent store backend\n", psi->name);
746 void pstore_unregister(struct pstore_info *psi)
749 if (!psi)
755 if (WARN_ON(psi != psinfo)) {
761 if (psi->flags & PSTORE_FLAGS_PMSG)
763 if (psi->flags & PSTORE_FLAGS_FTRACE)
765 if (psi->flags & PSTORE_FLAGS_CONSOLE)
767 if (psi->flags & PSTORE_FLAGS_DMESG)
775 pstore_put_backend_records(psi);
847 void pstore_get_backend_records(struct pstore_info *psi,
853 if (!psi || !root)
856 mutex_lock(&psi->read_mutex);
857 if (psi->open && psi->open(psi))
874 pstore_record_init(record, psi);
876 record->size = psi->read(record);
894 if (psi->close)
895 psi->close(psi);
897 mutex_unlock(&psi->read_mutex);
901 failed, psi->name);
904 psi->name);