Received: by 2002:ac0:aed5:0:0:0:0:0 with SMTP id t21csp4584918imb; Wed, 6 Mar 2019 17:38:43 -0800 (PST) X-Google-Smtp-Source: APXvYqwmRBRJ6hTc3qbZ+YaQGB///PBLmX7B//sPyo4tYd2qqA1PeXpL+F1sgvyLpXg8p8tFCiad X-Received: by 2002:a62:568e:: with SMTP id h14mr10679249pfj.134.1551922723497; Wed, 06 Mar 2019 17:38:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551922723; cv=none; d=google.com; s=arc-20160816; b=XZcor036hX+3XjGoPVqHzkZMo7ZXdE4Kx4geJsHCSU3z/cUc9IB6Qlujm2ZZpNamlR Wuo5Y1nDhDgDVA89Hj3aAgX4IiUMTV1Amguls9vMDJeDzDf49EgiutWRtMUIEdNwhZe0 uPlxs07L9hLUgObXEVS590ipS4ll0hbgh7OVpZqvGOtc4u9SNubvD0gb2NdVa208knY5 BQ7GDP492gcyw8okUTAee1D/Q2Fli6uwAEx1rBxVOgGFrU/2y4U+Ns2KlcslvtQqT+Pk W8/MFpq0ITlZAY7oVSP6GMA8rFYDq53XGklID8cCnZ+E787QMcD5kz1ZIbwBW4sUu5TC ugwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=dRoO27b1bDfXu53f9DllDn5oEQLxOpW12GZcBtE2GNs=; b=TpLPFBRfzFRKNBm+Qib6tP0wTuUO25taqyq3NtaBBuCL8GI+Yg1X0gMhyZcptYQ+Uy DkgxwEt+DMOuo2T9K5dbDBpAKzsNVo7QU94cMX7yurOI3sZJCHUmVVh+YYJgkLFEQ/6c 523JsccVSU6u3+4CTNY0wDmVVzg/J4O1oZYnHWAvgLGu03qBycUK7IpfIPB35uSbxV0E DWm+qmZXCawH4pCbqztnjVcrG+kAwDAvZm4Q6kOFPQDS5loB7BqG0NGK6l/+RjB83L+y qSZK+4XWNSKkNLG026ilXU4ov8TrDp+IvbIu7ax0PenvNKEdstTpFJxjn9O+KX7lbQkA 76Jg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k13si2717723pgh.501.2019.03.06.17.38.28; Wed, 06 Mar 2019 17:38:43 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726380AbfCGBgv (ORCPT + 99 others); Wed, 6 Mar 2019 20:36:51 -0500 Received: from smtp2207-205.mail.aliyun.com ([121.197.207.205]:36093 "EHLO smtp2207-205.mail.aliyun.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726010AbfCGBgv (ORCPT ); Wed, 6 Mar 2019 20:36:51 -0500 X-Alimail-AntiSpam: AC=CONTINUE;BC=0.07436282|-1;CH=green;DM=CONTINUE|CONTINUE|true|0.0705787-0.074662-0.854759;FP=0|0|0|0|0|-1|-1|-1;HT=e02c03310;MF=liaoweixiong@allwinnertech.com;NM=1;PH=DS;RN=15;RT=15;SR=0;TI=SMTPD_---.E5-WHUR_1551922601; Received: from PC-liaoweixiong.allwinnertech.com(mailfrom:liaoweixiong@allwinnertech.com fp:SMTPD_---.E5-WHUR_1551922601) by smtp.aliyun-inc.com(10.147.44.118); Thu, 07 Mar 2019 09:36:46 +0800 From: liaoweixiong To: Kees Cook , Anton Vorontsov , Colin Cross , Tony Luck , Jonathan Corbet , Mauro Carvalho Chehab , "David S. Miller" , Greg Kroah-Hartman , Nicolas Ferre , Arnd Bergmann , Rob Herring , Randy Dunlap Cc: linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, liaoweixiong Subject: [PATCH v13 0/4] pstore/block: new support logger for block devices Date: Thu, 7 Mar 2019 09:37:06 +0800 Message-Id: <1551922630-27548-1-git-send-email-liaoweixiong@allwinnertech.com> X-Mailer: git-send-email 1.9.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Why should we need pstore_block? 1. Most embedded intelligent equipment have no persistent ram, which increases costs. We perfer to cheaper solutions, like block devices. In fast, there is already a sample for block device logger in driver MTD (drivers/mtd/mtdoops.c). 2. Do not any equipment have battery, which means that it lost all data on general ram if power failure. Pstore has little to do for these equipments. [PATCH v13] On patch 1: 1. no need to check zone->buffer in blkz_zone_write() since it never be null 2. blkz_free_zones should return directly if zones is null 3. In blkz_init_zones(), it will causes memory leak if blkz_init_zone() return failure because it forget to free zone->buffer. 4. In blkz_zone_write(), we copy new data to ram buffer only when buf and wlen are valid. On pathc 2: 1. Fix spelling error on Kconfig On patch 3: 1. In blkz_pstore_erase(), if there are new but dirty data in pmsg zone buffer, we should try to flush them to block device. 2. Fix spelling error on Kconfig [PATCH v12] On patch 4: 1. Modify the document according to Randy Dunlap's suggestion. [PATCH v11] Change patchset label from RFC to PATCH [PATCH v10] Cancel DT support for blkoops temporarily. On patch 1: 1. pstore/blk should unlink PSTORE_BLKDEV when unregister. On patch 2: 1. cancel DT support temporarily. I will submit other patches to support DT when DT maintainers acked. 2. add spin lock to protect blkz_info when modify panic operations. 3. change default value of total size on Kconfig from 1024 to 0. [PATCH v9] On patch 1: 1. rename part_path/part_size, members of blkz_info, to blkdev/total_size 2. if total_size is zero, get size from @blkdev 3. support multiple variants for @blkdev, such as partuuid, major with minor, and /dev/xxxx. See details on Documentation. 4. get size from block device 5. add depends on CONFIG_BLOCK On patch 2: 1. update document On patch 3: 1. update codes for new blkzone. Blkoops support insmod without total_size. for example: "insmod ./blkoops.ko blkdev=93:6" (major:minor). 2. use late_initcalls rather than module_init, to avoid block device not ready. 3. support for block driver to add panic apis to blkoops. By this, block driver can do the least work that just provides panic operations. On patch 5: 1. update document [PATCH v8] On patch 2: 1. move DT to /bindings/pstore 2. Delete details for kernel. [PATCH v7] On patch 1: 1. Fix line over 80 characters. On patch 2: 1. Insert a separate patch for DT bindings. [PATCH v6] On patch 1: 1. Fix according to email from Kees Cook, including spelling mistakes, explicit overflow test, none of the zeroing etc. 2. Do not recover data but metadata of dmesg when panic. 3. No need to take recovery when do erase. 4. Do not use "blkoops" for blkzone any more because "blkoops" is used for other module now. (rename blkbuf to blkoops) On patch 2: 1. Rename blkbuf to blkoops. 2. Add Kconfig/device tree/module parameters settings for blkoops. 3. Add document for device tree. On patch 3: 1. Blkoops support pmsg. 2. Fix description for new version patch. On patch 4: 1. Fix description for new version patch. [PATCH v5] On patch 1: 1. rename pstore/rom to pstore/blk 2. Do not allocate any memory in the write path of panic. So, use local array instead in function romz_recover_dmesg_meta. 3. Add C header file "linux/fs.h" to fix implicit declaration of function 'filp_open','kernel_read'... On patch 3: 1. If panic, do not recover pmsg but flush if it is dirty. 2. Fix erase pmsg failed. On patch 4: 1. Create a document for pstore/blk [PATCH v4] On patch 1: 1. Fix always true condition '(--i >= 0) => (0-u32max >= 0)' in function romz_init_zones by defining variable i to 'int' rahter than 'unsigned int'. 2. To make codes more easily to read, we use macro READ_NEXT_ZONE for return value of romz_dmesg_read if it need to read next zone. Moveover, we assign READ_NEXT_ZONE -1024 rather than 0. 3. Add 'FLUSH_META' to 'enum romz_flush_mode' and rename 'NOT_FLUSH' to 'FLUSH_NONE' 4. Function romz_zone_write work badly with FLUSH_PART mode as badly address and offset to write. On patch 3: NEW SUPPORT psmg for pstore_rom. [PATCH v3] On patch 1: Fix build as module error for undefined 'vfs_read' and 'vfs_write' Both of 'vfs_read' and 'vfs_write' haven't be exproted yet, so we use 'kernel_read' and 'kernel_write' instead. [PATCH v2] On patch 1: Fix build as module error for redefinition of 'romz_unregister' and 'romz_register' [PATCH v1] On patch 1: Core codes of pstore_rom, which works well on allwinner(sunxi) platform. On patch 2: A sample for pstore_rom, using general ram rather than block device. liaoweixiong (4): pstore/blk: new support logger for block devices pstore/blk: add blkoops for pstore_blk pstore/blk: support pmsg for pstore block Documentation: pstore/blk: create document for pstore_blk Documentation/admin-guide/pstore-block.rst | 233 ++++++ MAINTAINERS | 3 +- fs/pstore/Kconfig | 132 +++ fs/pstore/Makefile | 5 + fs/pstore/blkoops.c | 208 +++++ fs/pstore/blkzone.c | 1251 ++++++++++++++++++++++++++++ include/linux/pstore_blk.h | 87 ++ 7 files changed, 1918 insertions(+), 1 deletion(-) create mode 100644 Documentation/admin-guide/pstore-block.rst create mode 100644 fs/pstore/blkoops.c create mode 100644 fs/pstore/blkzone.c create mode 100644 include/linux/pstore_blk.h -- 1.9.1