mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-30 21:44:27 -04:00 
			
		
		
		
	Seemingly unneeded based on new upstream code so manually deleted: layerscape: 820-usb-0007-usb-dwc3-gadget-increase-timeout-value-for-send-ep-c.patch Manually merged: generic-hack: 251-sound_kconfig.patch All other modifications made by update_kernel.sh Build system: x86_64 Build-tested: ipq806x/R7800, ath79/generic, bcm27xx/bcm2711 Run-tested: ipq806x/R7800, lantiq/Easybox 904 xDSL No dmesg regressions, everything functional Signed-off-by: John Audia <graysky@archlinux.us> [add lantiq test report, minor commit message clarification] Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From: Gabor Juhos <juhosg@openwrt.org>
 | |
| Subject: mtd: add EOF marker support to the UBI layer
 | |
| 
 | |
| Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 | |
| ---
 | |
|  drivers/mtd/ubi/attach.c | 25 ++++++++++++++++++++++---
 | |
|  drivers/mtd/ubi/ubi.h    |  1 +
 | |
|  2 files changed, 23 insertions(+), 3 deletions(-)
 | |
| 
 | |
| --- a/drivers/mtd/ubi/attach.c
 | |
| +++ b/drivers/mtd/ubi/attach.c
 | |
| @@ -926,6 +926,13 @@ static bool vol_ignored(int vol_id)
 | |
|  #endif
 | |
|  }
 | |
|  
 | |
| +static bool ec_hdr_has_eof(struct ubi_ec_hdr *ech)
 | |
| +{
 | |
| +	return ech->padding1[0] == 'E' &&
 | |
| +	       ech->padding1[1] == 'O' &&
 | |
| +	       ech->padding1[2] == 'F';
 | |
| +}
 | |
| +
 | |
|  /**
 | |
|   * scan_peb - scan and process UBI headers of a PEB.
 | |
|   * @ubi: UBI device description object
 | |
| @@ -958,9 +965,21 @@ static int scan_peb(struct ubi_device *u
 | |
|  		return 0;
 | |
|  	}
 | |
|  
 | |
| -	err = ubi_io_read_ec_hdr(ubi, pnum, ech, 0);
 | |
| -	if (err < 0)
 | |
| -		return err;
 | |
| +	if (!ai->eof_found) {
 | |
| +		err = ubi_io_read_ec_hdr(ubi, pnum, ech, 0);
 | |
| +		if (err < 0)
 | |
| +			return err;
 | |
| +
 | |
| +		if (ec_hdr_has_eof(ech)) {
 | |
| +			pr_notice("UBI: EOF marker found, PEBs from %d will be erased\n",
 | |
| +				pnum);
 | |
| +			ai->eof_found = true;
 | |
| +		}
 | |
| +	}
 | |
| +
 | |
| +	if (ai->eof_found)
 | |
| +		err = UBI_IO_FF_BITFLIPS;
 | |
| +
 | |
|  	switch (err) {
 | |
|  	case 0:
 | |
|  		break;
 | |
| --- a/drivers/mtd/ubi/ubi.h
 | |
| +++ b/drivers/mtd/ubi/ubi.h
 | |
| @@ -780,6 +780,7 @@ struct ubi_attach_info {
 | |
|  	int mean_ec;
 | |
|  	uint64_t ec_sum;
 | |
|  	int ec_count;
 | |
| +	bool eof_found;
 | |
|  	struct kmem_cache *aeb_slab_cache;
 | |
|  	struct ubi_ec_hdr *ech;
 | |
|  	struct ubi_vid_io_buf *vidb;
 |